RU2797574C2 - Encoder, decoder and corresponding methods using intra-frame block copy merge list - Google Patents

Encoder, decoder and corresponding methods using intra-frame block copy merge list Download PDF

Info

Publication number
RU2797574C2
RU2797574C2 RU2021119784A RU2021119784A RU2797574C2 RU 2797574 C2 RU2797574 C2 RU 2797574C2 RU 2021119784 A RU2021119784 A RU 2021119784A RU 2021119784 A RU2021119784 A RU 2021119784A RU 2797574 C2 RU2797574 C2 RU 2797574C2
Authority
RU
Russia
Prior art keywords
block
vector
ibc
block vector
list
Prior art date
Application number
RU2021119784A
Other languages
Russian (ru)
Other versions
RU2021119784A (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 RU2021119784A publication Critical patent/RU2021119784A/en
Application granted granted Critical
Publication of RU2797574C2 publication Critical patent/RU2797574C2/en

Links

Images

Abstract

FIELD: image processing.
SUBSTANCE: invention relates to a shared list for prediction when encoding and decoding video. Methods and devices for constructing a list of merge candidates for intraframe block copying (IBC) mode are proposed, and they comprise the following steps: inserting the block vector of the left neighbour block of the current block into the initial merge list of the current block, when the left neighbour block is available and the left neighbour block uses IBC mode; inserting the block vector of the aforementioned neighbour block of the current block into the initial merge list, when the aforementioned neighbour block is available, the aforementioned neighbour block uses the IBC mode, and the block vector of the aforementioned neighbour block is not the same as the block vector of the left neighbour block; inserting the block vector of the last candidate in the history-based motion vector predictor (HMVP) into the initial merge list when the block vector of the aforementioned neighbour block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left neighbour block is not the same as the block vector of the latest HMVP candidate; obtaining a block vector of the current block corresponding to the initial merge list after the above insertion processes, and a merge candidate index for the current block.
EFFECT: increased compression ratio with little or no loss of image quality.
16 cl, 10 dwg, 2 tbl

Description

Область техники, к которой относится изобретениеThe field of technology to which the invention belongs

Варианты осуществления настоящей заявки (раскрытия), в целом, относятся к области обработки изображений и, более конкретно, к совместно используемому списку для предсказания.Embodiments of the present application (disclosure) generally relate to the field of image processing and, more specifically, to a shared list for prediction.

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

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

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

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

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

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

Первый вариант изобретения раскрывает способ построения списка на слияние кандидатов для режима внутрикадрового копирования блоков (Intra block copy, IBC), где упомянутый способ содержит этапы, на которых:The first embodiment of the invention discloses a method for constructing a candidate merge list for Intra block copy (IBC) mode, where said method comprises the steps of:

вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока (в этом примере, перед этим этапом вставки начальный список на слияние является пустым списком), когда левый соседний блок доступен и левый соседний блок использует режим IBC;inserting the block vector of the current block's left neighbor block into the current block's initial merge list (in this example, before this insertion step, the initial merge list is an empty list) when the left neighbor is available and the left neighbor is using IBC mode;

вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние (в этом примере, начальный список на слияние перед этим этапом является пустым списком или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока), когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор левого соседнего блока;insert the block vector of the aforementioned adjacent block of the current block into the initial merge list (in this example, the initial merge list before this step is an empty list or the initial merge list contains the block vector of the left adjacent block of the current block), when the aforementioned adjacent block is available, the aforementioned the neighboring block uses the IBC mode and the block vector of the above neighboring block is not the same as the block vector of the left neighboring block;

вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных, (history based motion vector predictor, HMVP) в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP.inserting the block vector of the last candidate in the history based motion vector predictor (HMVP) into the initial merge list when the block vector of the aforementioned neighboring block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left adjacent block is not the same as the block vector of the last HMVP candidate.

Второй вариант изобретения раскрывает способ построения списка кандидатов на слияние для режима кандидата для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:A second embodiment of the invention discloses a method for constructing a merge candidate list for an Intra block copy (IBC) candidate mode, said method comprising the steps of:

вставляют блочный вектор соседнего блока текущего блока в начальный список на слияние текущего блока, когда соседний блок доступен и соседний блок использует режим IBC;inserting a neighbor block vector of the current block into the initial merge list of the current block when the neighbor block is available and the neighbor block uses the IBC mode;

вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных, (history based motion vector predictor, HMVP) в начальный список на слияние, когда блочный вектор соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP;inserting a block vector of the last candidate in the history based motion vector predictor (HMVP) into the initial merge list when the block vector of the neighboring block is not the same as the block vector of the last HMVP candidate;

вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение блочного вектора другого кандидата в HMVP удаляется.inserting the block vector of the other HMVP candidate into the initial merge list in which the reduction of the block vector of the other HMVP candidate is removed.

Третий вариант изобретения раскрывает способ построения списка возможных блоков на слияние для режима внутрикадрового копирования блоков предсказания (Intra block copy, IBC), где упомянутый способ содержит этапы, на которых:The third variant of the invention discloses a method for constructing a list of possible blocks for merging for the mode of intra-frame copying of prediction blocks (Intra block copy, IBC), where the said method contains the steps in which:

вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока (в этом примере, перед этим этапом вставки начальный список на слияние является пустым списком), когда левый соседний блок доступен и левый соседний блок использует режим IBC;inserting the block vector of the current block's left neighbor block into the current block's initial merge list (in this example, before this insertion step, the initial merge list is an empty list) when the left neighbor is available and the left neighbor is using IBC mode;

вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние (в этом примере, начальный список на слияние перед этим этапом является пустым списком или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока), когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор левого соседнего блока;insert the block vector of the aforementioned adjacent block of the current block into the initial merge list (in this example, the initial merge list before this step is an empty list or the initial merge list contains the block vector of the left adjacent block of the current block), when the aforementioned adjacent block is available, the aforementioned the neighboring block uses the IBC mode and the block vector of the above neighboring block is not the same as the block vector of the left neighboring block;

вставляют блочный вектор последнего кандидата в основанном на архивных данных предикторе вектора движения (history based motion vector predictor, HMVP) в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP;inserting the block vector of the last candidate in the history based motion vector predictor (HMVP) into the initial merge list when the block vector of the above neighbor block is not the same as the block vector of the last HMVP candidate and when the block vector the left adjacent block is not the same as the block vector of the last HMVP candidate;

вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных, HMVP, в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока является не таким же, как блочный вектор последнего кандидата в HMVP и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP;inserting the block vector of the last candidate in the archive-based motion vector predictor HMVP into the initial merge list when the block vector of the aforementioned neighbor block is not the same as the block vector of the last HMVP candidate and when the block vector of the left neighbor block is not the same as the block vector of the latest HMVP candidate;

вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение блочного вектора другого кандидата в HMVP удаляют.inserting the block vector of the other HMVP candidate into the initial merge list in which the reduction of the block vector of the other HMVP candidate is removed.

Четвертый вариант изобретения раскрывает способ построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:The fourth embodiment of the invention discloses a method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of:

вставляют блочный вектор соседнего блока текущего блока в начальный список на слияние текущего блока, когда соседний блок доступен и соседний блок использует режим IBC;inserting a neighbor block vector of the current block into the initial merge list of the current block when the neighbor block is available and the neighbor block uses the IBC mode;

вставляют блочный вектор кандидата в предикторе вектора движения, основанного на архивных данных, (history based motion vector predictor, HMVP) в начальный список на слияние, когда блочный вектор соседнего блока является не таким же, как блочный вектор последнего кандидата в HMVP;inserting a candidate block vector in a history based motion vector predictor (HMVP) into the initial merge list when the neighboring block block vector is not the same as the block vector of the last HMVP candidate;

в котором последний блочный вектор в начальном списке слияния текущего блока является блочным вектором одного кандидата в HMVP.in which the last block vector in the initial merge list of the current block is the block vector of one HMVP candidate.

Пятый вариант изобретения раскрывает способ построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:The fifth embodiment of the invention discloses a method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of:

вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока (в этом примере, перед этим этапом вставки начальный список на слияние является пустым списком), когда левый соседний блок доступен и левый соседний блок использует режим IBC;inserting the block vector of the current block's left neighbor block into the current block's initial merge list (in this example, before this insertion step, the initial merge list is an empty list) when the left neighbor is available and the left neighbor is using IBC mode;

вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние (в этом примере, начальный список на слияние перед этим этапом является пустым списком или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока), когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока является не таким же, как блочный вектор левого соседнего блока;insert the block vector of the aforementioned adjacent block of the current block into the initial merge list (in this example, the initial merge list before this step is an empty list or the initial merge list contains the block vector of the left adjacent block of the current block), when the aforementioned adjacent block is available, the aforementioned the neighboring block uses the IBC mode and the block vector of the above neighboring block is not the same as the block vector of the left neighboring block;

вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных, HMVP, в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP, и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP;inserting the block vector of the last candidate in the HMVP archive-based motion vector predictor into the initial merge list when the block vector of the aforementioned neighbor block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left neighbor block is not is the same as the block vector of the last HMVP candidate;

вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение блочного вектора другого кандидата в HMVP удаляется, иinserting the block vector of the other HMVP candidate into the initial merge list in which the reduction of the block vector of the other HMVP candidate is removed, and

в котором последний блочный вектор в начальном списке на слияние текущего блока является блочным вектором другого кандидата в HMVP.where the last block vector in the current block's initial merge list is a block vector of another HMVP candidate.

В одной из возможных реализаций любого из первого-пятого вариантов способ дополнительно содержит этап, на котором: получают блочный вектор текущего блока, соответствующий начальному списку на слияние после описанных выше процессов вставки, и возможный индекс слияния кандидата для текущего блока.In one of the possible implementations of any of the first to fifth options, the method further comprises the step of: obtaining a block vector of the current block corresponding to the initial merge list after the insertion processes described above, and a possible candidate merge index for the current block.

В одной из возможных реализаций любого из первого-пятого вариантов, в которой начальный список на слияние является пустым списком перед первым процессом вставки.In one of the possible implementations of any of the first to fifth options, in which the initial merge list is an empty list before the first insertion process.

В одной из возможных реализаций любого из первого-пятого вариантов вышеупомянутые процессы вставления выполняются в соответствующем порядке.In one of the possible implementations of any of the first to fifth options, the above insertion processes are performed in the appropriate order.

Шестой вариант изобретения раскрывает кодер (20), содержащий схему обработки для выполнения любого из предыдущих вариантов осуществления способа.The sixth embodiment of the invention discloses an encoder (20) containing a processing circuit for performing any of the previous embodiments of the method.

Седьмой вариант изобретения раскрывает декодер (30), содержащий схему обработки для выполнения любого из предшествующих вариантов осуществления способа.The seventh embodiment of the invention discloses a decoder (30) containing a processing circuit for performing any of the previous embodiments of the method.

Восьмой вариант изобретения раскрывает компьютерный программный продукт, содержащий программный код для выполнения любого из предшествующих вариантов осуществления способа.An eighth embodiment of the invention discloses a computer program product containing program code for executing any of the preceding method embodiments.

Девятый вариант изобретения раскрывает декодер или кодер, содержащий:The ninth embodiment of the invention discloses a decoder or encoder comprising:

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

непереносной считываемый компьютером носитель, связанный с процессорами и хранящий программирование для его выполнения процессорами, в котором программирование, когда оно исполняется процессорами, конфигурирует декодер для выполнения любого из предшествующих вариантов осуществления способа. a non-portable, computer-readable medium associated with the processors and storing programming for execution by the processors, wherein the programming, when executed by the processors, configures a decoder to perform any of the preceding method embodiments.

Подробности одного или более вариантов осуществления представлены ниже на сопроводительных чертежах и в описании. Другие признаки, задачи и преимущества станут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are provided below in the accompanying drawings and in the description. Other features, objectives and advantages will become apparent from the description, drawings and claims.

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

Далее варианты осуществления изобретения описаны более подробно со ссылкой на приложенные чертежи, на которых:Further embodiments of the invention are described in more detail with reference to the attached drawings, in which:

фиг. 1A - блок-схема примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;fig. 1A is a block diagram of an example of a video coding system capable of implementing embodiments of the invention;

фиг. 1B - блок-схема другого примера системы видеокодирования, выполненной с возможностью реализации вариантов осуществления изобретения;fig. 1B is a block diagram of another example of a video coding system capable of implementing embodiments of the invention;

фиг. 2 - блок-схема примера видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;fig. 2 is a block diagram of an example of a video encoder capable of implementing embodiments of the invention;

фиг. 3 - блок-схема примерной структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;fig. 3 is a block diagram of an exemplary structure of a video decoder capable of implementing embodiments of the invention;

фиг. 4 - блок-схема примера устройства кодирования или устройства декодирования;fig. 4 is a block diagram of an example of an encoder or decoder;

фиг. 5 - блок-схема другого примера устройства кодирования или устройства декодирования;fig. 5 is a block diagram of another example of an encoder or decoder;

фиг. 6 - блок-схема примера соседних блоков текущего блока;fig. 6 is a block diagram of an example of neighboring blocks of the current block;

фиг. 7 - пример варианта осуществления настоящей заявки;fig. 7 is an example of an embodiment of the present application;

фиг. 8 - блок-схема примерной структуры системы 3100 предоставления контента, реализующей услугу доставки контента;fig. 8 is a block diagram of an exemplary structure of a content providing system 3100 implementing a content delivery service;

фиг. 9 - блок-схема структуры примера оконечного устройства.fig. 9 is a block diagram of the structure of an example terminal.

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

Подробное описание вариантов осуществленияDetailed description of embodiments

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

Например, следует понимать, что раскрытие, связанное с описанным способом, может также оставаться справедливым для соответствующего устройства или системы, выполненной с возможностью осуществления способа, и наоборот. Например, если описаны один или более конкретных этапов способа, соответствующее устройство может содержать один или более блоков, например, функциональных блоков, для выполнения описанных одного или более этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или более из множества этапов), даже если такие один или более блоков явно не описаны или не показаны на чертежах. С другой стороны, например, если конкретное устройство описано, основываясь на одном или на множестве блоков, например, функциональных блоков, соответствующий способ может содержать один этап для выполнения функциональных возможностей одного или множества блоков (например, на одном этапе выполняют функциональные возможности одного или более блоков или множество этапов, на каждом из которых выполняют функциональные возможности одного или более из множества блоков), даже если такой один или множество этапов явно не описаны или не показаны на чертежах. Дополнительно, следует понимать, что признаки различных примерных вариантов осуществления и/или вариантов, описанных здесь, могут объединяться друг с другом, если конкретно не указывается иное.For example, it should be understood that the disclosure associated with the described method may also remain true for the corresponding device or system configured to carry out the method, and vice versa. For example, if one or more specific method steps are described, the corresponding device may comprise one or more blocks, such as functional blocks, for performing the one or more method steps described (for example, one block performing one or more steps, or a plurality of blocks each of which performs one or more of the plurality of steps), even if such one or more units are not explicitly described or shown in the drawings. On the other hand, for example, if a particular device is described based on one or more blocks, for example, functional blocks, the corresponding method may contain one step to perform the functionality of one or more blocks (for example, one step performs the functionality of one or more blocks or a plurality of steps, each of which performs the functionality of one or more of the plurality of blocks), even if such one or more steps are not explicitly described or shown in the drawings. Additionally, it should be understood that features of the various exemplary embodiments and/or variants described herein may be combined with one another unless specifically indicated otherwise.

Видеокодирование обычно относится к обработке последовательности изображений, которые формируют видео или видеопоследовательность. Вместо термина “изображение” (picture) в области видеокодирования в качестве синонима может использоваться термин “кадр” (frame) или “изображение” (image). Видеокодирование (или, в общем, кодирование) содержит две части: видеокодирование и видеодекодирование. Видеокодирование выполняется на стороне источника данных, обычно содержит обработку (например, сжатие) исходных видеоизображений для сокращения объема данных, требуемого для представления видеоизображений (для более эффективного хранения и/или передачи данных). Видеодекодирование выполняется на стороне места назначения и обычно содержит обратную обработку по сравнению с кодером для реконструирования видеоизображений. Варианты осуществления, относящиеся к “кодированию” видеоизображений (или изображений, в целом), должны пониматься как относящиеся к “кодированию” или “декодированию” видеоизображений или соответствующих видеопоследовательностей. Сочетание части кодирования и части декодирования также упоминается как CODEC (Coding and Decoding, кодирование и декодирование).Video coding generally refers to the processing of a sequence of images that form a video or video sequence. Instead of the term “image” (picture) in the field of video coding, the term “frame” (frame) or “image” (image) can be used as a synonym. Video coding (or, more generally, coding) contains two parts: video coding and video decoding. Video coding is performed on the side of the data source, usually involves processing (eg, compressing) the original video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission of data). Video decoding is performed on the destination side and usually contains inverse processing compared to the encoder for reconstructing video images. Embodiments relating to “coding” video images (or images in general) should be understood as referring to “coding” or “decoding” video images or corresponding video sequences. The combination of an encoding part and a decoding part is also referred to as CODEC (Coding and Decoding).

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

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

В последующих вариантах осуществления системы 10 видеокодирования, видеокодер 20 и видеодекодер 30 описываются на основе фиг. 1-3.In the following embodiments of video coding system 10, video encoder 20 and video decoder 30 are described based on FIG. 1-3.

На фиг. 1A схематично представлена блок-схема примерной системы 10 кодирования, например, системы 10 видеокодирования (или системы 10 короткого кодирования (short coding)), которые могут использовать технологии, представленные в настоящей заявке. Видеокодер 20 (или короткий кодер (short encoder) 20) и видеодекодер 30 (или короткий декодер (short decoder) 30) системы 10 видеокодирования являются примерами устройств, которые могут быть выполнены с возможностью исполнения способов в соответствии с различными примерами, описанными в настоящей заявке. In FIG. 1A is a schematic block diagram of an exemplary coding system 10, such as a video coding system 10 (or short coding system 10), that may use the technologies presented herein. Video encoder 20 (or short encoder (short encoder) 20) and video decoder 30 (or short decoder (short decoder) 30) video coding system 10 are examples of devices that can be configured to execute methods in accordance with various examples described in this application .

Как показано на фиг. 1A, система 10 кодирования содержит устройство 12 источника данных, выполненное с возможностью предоставления кодированных данных 21 изображения, например, устройству 14 назначения, для декодирования кодированных данных 13 изображения. Устройство 12 источника данных содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 изображения, предпроцессор (или блок предварительной обработки) 18, например, предпроцессор 18 изображения, и интерфейс связи или блок 22 связи. As shown in FIG. 1A, the encoding system 10 includes a data source device 12 configured to provide the encoded image data 21 to, for example, the destination device 14 to decode the encoded image data 13. The data source device 12 includes an encoder 20 and may additionally, i. e. optionally, contain an image source 16, a preprocessor (or preprocessor) 18, such as an image preprocessor 18, and a communication interface or communication unit 22.

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

В отличие от предпроцессора 18 и процесса, выполняемого блоком 18 предварительной обработки, изображение или данные 17 изображения могут также упоминаться как необработанное изображение или как необработанные данные 17 изображения.Unlike the pre-processor 18 and the process performed by the pre-processor 18, the image or image data 17 may also be referred to as a raw image or raw image data 17.

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

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

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

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

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

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

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

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

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

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

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

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

Хотя на фиг. 1A устройство 12 источника и устройство 14 назначения показаны как отдельные устройства, варианты осуществления устройств могут также содержать оба устройства или обе функциональные возможности, то есть, устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности. В таких вариантах осуществления устройство 12 источника или его соответствующие функциональные возможности и устройство 14 назначения или его соответствующие функциональные возможности могут быть реализованы, используя одни и те же аппаратные средства и/или программное обеспечение или индивидуальные аппаратные средства и/или программное обеспечение или любое их сочетание.Although in FIG. 1A, source device 12 and destination device 14 are shown as separate devices, device embodiments may also comprise both devices or both functionality, i.e., source device 12 or its corresponding functionality and destination device 14 or its corresponding functionality. In such embodiments, source device 12 or its respective functionality and destination device 14 or its corresponding functionality may be implemented using the same hardware and/or software, or individual hardware and/or software, or any combination thereof. .

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

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или кодер 20 и декодер 30 вместе могут быть реализованы схемой обработки, как показано на фиг. 1B, такой как один или более микропроцессоров, цифровые сигнальные процессоры (digital signal processor, DSP), специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field-programmable gate array, FPGA), дискретная логика, аппаратные средства, специализированные устройства видеокодирования или любые их сочетания. Кодер 20 может быть реализован схемой 45 обработки для реализации различных модулей, как обсуждалось в отношении кодера 20, показанного на фиг. 2, и/или любой другой системой или подсистемой кодера, описанных здесь. Декодер 30 может быть реализован схемой 46 обработки для реализации различных модулей, как обсуждалось в отношении декодера 30 на фиг. 3, и/или любой другой системой или подсистемой декодера, описанных здесь. Схема обработки может быть выполнена с возможностью реализации различных операций, как обсуждается позже. Как показано на фиг. 5, если технологии реализуются частично программным обеспечением, устройство может хранить команды программного обеспечения на сответствующем непереносном считываемом компьютером носителе и может исполнять команды на аппаратных средствах с помощью одного или нескольких процессоров для выполнения технологий этого раскрытия. Любой из видеокодера 20 или видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (encoder/decoder, CODEC) в едином устройстве, например, как показано на фиг. 1B.Encoder 20 (eg, video encoder 20) or decoder 30 (eg, video decoder 30), or encoder 20 and decoder 30 together may be implemented by a processing circuit as shown in FIG. 1B, such as one or more microprocessors, digital signal processors (DSPs), application-specific integrated circuits (ASICs), field-programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoders, or any combination thereof. Encoder 20 may be implemented by processing circuitry 45 to implement various modules, as discussed with respect to encoder 20 shown in FIG. 2 and/or any other encoder system or subsystem described herein. Decoder 30 may be implemented by processing circuitry 46 to implement various modules, as discussed with respect to decoder 30 in FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to implement various operations, as discussed later. As shown in FIG. 5, if the technologies are implemented in part by software, a device may store software instructions on an appropriate non-portable machine-readable medium and may execute instructions on hardware using one or more processors to execute the technologies of this disclosure. Either of video encoder 20 or video decoder 30 may be integrated as part of a combined encoder/decoder (CODEC) in a single device, such as shown in FIG. 1b.

Устройство 12 источника и устройство 14 назначения могут содержать любые из широкого спектра устройства, в том числе, любого рода карманные или стационарные устройства, например, ноутбуки или переносные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телевизионные приставки, телевизоры, дисплеи, цифровые медиаплееры, игровые видеоконсоли, устройства потоковой передачи видео (такие как серверы контент-услуг или серверы доставки контента), широковещательное радиоприемное устройство, широковещательное радиопередающее устройство и т.п., и могут не использовать никакую или использовать операционную систему любого вида. В некоторых случаях устройство 12 источника и устройство 14 назначения могут быть предназначены для беспроводной связи. Таким образом, устройство 12 источника и устройство 14 назначения могут быть устройствами беспроводной связи. Source device 12 and destination device 14 may comprise any of a wide variety of devices, including any kind of handheld or stationary devices, such as laptops or laptops, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes. , televisions, displays, digital media players, video game consoles, video streaming devices (such as content service servers or content delivery servers), radio broadcast receiver, radio broadcast transmitter, etc., and may not use any or use an operating system any kind. In some cases, source device 12 and destination device 14 may be designed for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

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

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

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

На фиг. 2 схематично показана примерная блок-схема видеокодера 20, выполненного с возможностью реализации технологий настоящей заявки. В примере, показанном на фиг. 2, видеокодер 20 содержит вход 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 процесса преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 процесса обратного преобразования, блок 214 реконструкции, блок 220 контурного фильтра, буфер 230 декодированного изображения (decoded picture buffer, DPB), блок 260 выбора режима, блок 270 статистического кодирования и выход 272 (или выходной интерфейс 272). Блок 260 выбора режима может содержать блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания, и блок 262 разделения. Блок 254 межкадрового предсказания может содержать блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг. 2, может также упоминаться как гибридный видеокодер или видеокодер, соответствующий гибридному видеокодеку.In FIG. 2 schematically shows an exemplary block diagram of a video encoder 20 capable of implementing the technologies of the present application. In the example shown in FIG. 2, the video encoder 20 comprises an input 201 (or input interface 201), a residual calculation block 204, a transformation process block 206, a quantization block 208, an inverse quantization block 210, and an inverse transform process block 212, a reconstruction block 214, a loop filter block 220, a buffer 230 decoded picture buffer (DPB), mode selection block 260, entropy encoding block 270, and output 272 (or output interface 272). The mode selector 260 may comprise an inter-predictor 244 and an intra-predictor 254, and a splitter 262. The inter prediction block 254 may comprise a motion estimator and a motion compensation block (not shown). Video encoder 20 shown in FIG. 2 may also be referred to as a hybrid video encoder or a video encoder corresponding to a hybrid video codec.

Блок 204 вычисления остатка, блок 206 процесса преобразования, блок 208 квантования, блок 260 выбора режима могут упоминаться как формирующие путь прохождения сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обратного процесса преобразования, блок 214 реконструкции, буфер 216, контурный фильтр 220, буфер 230 декодированного изображения (decoded picture buffer, DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания могут упоминаться как формирующие путь прохождения обратного сигнала видеокодера 20, где путь прохождения обратного сигнала видеокодера 20 соответствует пути прохождения сигнала декодера (смотрите видеодекодер 30 на фиг. 3). Блок 210 обратного квантования, блок 212 обратного преобразования 212, блок 214 реконструкции, контурный фильтр 220, буфер 230 изображения (DPB), блок 244 межкадрового предсказания и блок 254 внутрикадрового предсказания также относятся к формированию “встроенного декодера” видеокодера 20.Residual calculator 204, transform process block 206, quantizer 208, mode selector 260 may be referred to as forming the signal path of the encoder 20, while inverse quantizer 210, inverse transform process block 212, reconstruction block 214, buffer 216, loop filter 220, decoded picture buffer (DPB) 230, inter prediction block 244, and intra prediction block 254 may be referred to as forming the return signal path of video encoder 20, where the return signal path of video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in Fig. 3). An inverse quantizer 210, an inverse transform 212 212, a reconstructor 214, a loop filter 220, a picture buffer (DPB) 230, an inter-frame predictor 244, and an intra-frame predictor 254 are also related to forming the “built-in decoder” of the video encoder 20.

Разделение изображений и изображения (изображения и блоки)Separation of images and images (images and blocks)

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

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

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

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

Подобно изображению 17, блок 203 изображения снова рассматривается или может рассматриваться как двухмерная матрица или матрица выборок со значениями интенсивности (значения выборок), хотя и меньшего размера, чем изображение 17. Другими словами, блок 203 может содержать, например, одну матрицу выборок (например, матрицу яркости в случае монохромного изображения 17, или матрица яркости или цветности в случае цветного изображения) или три матрицы выборок (например, матрицу яркости и две матрицы цветности в случае цветного изображения 17) или любое другое количество и/или типы матриц в зависимости от применяемого цветового формата. Количество выборок в горизонтальном и вертикальном направлениях (или по осям) блока 203 определяет размер блока 203. Соответственно, блок может содержать, например, матрицу MxN выборок (M столбцов на N строк) или матрицу MxN коэффициентов преобразования.Like image 17, image block 203 is again, or may be considered, a two-dimensional or sample matrix with intensity values (sample values), albeit smaller than image 17. In other words, block 203 may contain, for example, one matrix of samples (for example , a luma matrix in the case of a monochrome image 17, or a luminance or chrominance matrix in the case of a color image) or three sample matrices (for example, a luminance matrix and two chrominance matrices in the case of a color image 17) or any other number and/or types of matrices depending on applied color format. The number of samples in the horizontal and vertical directions (or axes) of block 203 determines the size of block 203. Accordingly, the block may contain, for example, an MxN matrix of samples (M columns by N rows) or an MxN matrix of transform coefficients.

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

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения, используя сегменты (также называемые видеосегментами), где изображение может быть разделено на один или более сегментов или кодировано, используя один или более сегментов (обычно неперекрывающихся), и каждый сегмент может содержать один или более блоков (например, CTU).Embodiments of video encoder 20, as shown in FIG. 2 may be further configured to divide and/or encode the image using segments (also referred to as video segments), where the image may be divided into one or more segments, or encoded using one or more segments (typically non-overlapping), and each segment may contain one or more units (eg CTU).

Варианты осуществления видеокодера 20, как показано на фиг. 2, могут быть дополнительно выполнены с возможностью разделения и/или кодирования изображения, используя мозаичные группы (также называемые видеомозаичными группами) и/или мозаики (также называемые видеомозаиками), где изображение может разделяться или кодироваться, используя одну или более (обычно неперекрывающихся) мозаичных групп, и каждая мозаичная группа может содержать, например, один или несколько блоков (например, CTU) или одну или более мозаик, где каждая мозаика может, например, иметь прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или долевых блоков.Embodiments of video encoder 20, as shown in FIG. 2 may be further configured to split and/or encode an image using tiles (also referred to as video tiles) and/or tiles (also referred to as video tiles), where an image may be split or encoded using one or more (typically non-overlapping) tiles. groups, and each tile group may contain, for example, one or more blocks (eg, CTU) or one or more tiles, where each tile may, for example, have a rectangular shape and may contain one or more blocks (eg, CTU), for example , full or fractional blocks.

Вычисление остаткаRemainder Calculation

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

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

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

Блок 206 преобразования может быть выполнен с возможностью применения целочисленных приближений DCT/DST, таких как преобразования, определенные в H.265/HEVC. По сравнению с ортогональным DCT-преобразованием, такие целочисленные приближения обычно масштабируются с определенным коэффициентом. Для сохранения нормы остаточного блока, который обрабатывается прямым и обратным преобразованием, дополнительные масштабные коэффициенты применяются как часть процесса преобразования. Масштабные коэффициенты обычно выбираются на основе определенных ограничений, таких как масштабные коэффициенты, являющиеся второй степенью операций сдвига, глубина цвета коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные масштабные коэффициенты определяются, например, для обратного преобразования, например, блоком 212 обратного преобразования (и для соответствующего обратного преобразованиям, например, блоком 312 обратного преобразования в видеодекодере 30), и соответствующие масштабные коэффициенты для прямого преобразования могутбыть определены, например, блоком 206 преобразования в кодере 20, соответственно. Transform block 206 may be configured to apply DCT/DST integer approximations such as the transforms defined in H.265/HEVC. Compared to the orthogonal DCT, such integer approximations are usually scaled by a certain factor. To preserve the norm of the residual block that is processed by forward and backward transformation, additional scaling factors are applied as part of the transformation process. Scale factors are usually chosen based on certain constraints, such as scale factors being the second power of shift operations, color depth of transform coefficients, trade-off between accuracy and implementation cost, and so on. Specific scaling factors are determined, for example, for the inverse transform, for example, by the inverse transform block 212 (and for the corresponding inverse transform, for example, by the inverse transform block 312 in the video decoder 30), and the corresponding scaling factors for the forward transform can be determined, for example, by the transform block 206 in encoder 20, respectively.

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

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

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

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

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

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

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

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

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

РеконструкцияReconstruction

Блок 214 реконструкции (например, сумматор 214) выполнен с возможностью добавления блока 213 преобразования (т.е. реконструированного остаточного блока 213) к блоку 265 предсказания для получения реконструированного блока 215 в области выборки, например, путем сложения – от выборки к выборке – значений выборки реконструированного остаточного блока 213 и значений выборки блока 265 предсказания. Reconstructor 214 (e.g., adder 214) is configured to add transform block 213 (i.e., reconstructed residual block 213) to prediction block 265 to obtain reconstructed block 215 in the sample area, such as by adding, sample by sample, the values samples of reconstructed residual block 213 and sample values of prediction block 265 .

ФильтрацияFiltration

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

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

Буфер декодированного изображенияDecoded image buffer

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

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

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

Блок 260 выбора режима может быть выполнен с возможностью определения или выбораразделения для режима предсказания текущего блока (в том числе, отсутствия предсказания) и режима предсказания (например, режима внутрикадрового или межкажрового предсказания) и формирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и для реконструкции реконструированного блока 215. The mode selector 260 may be configured to determine or select a split for the current block prediction mode (including no prediction) and the prediction mode (e.g., intra frame or inter frame prediction mode) and generate a corresponding prediction block 265 that is used to compute the residual block. 205 and for the reconstruction of the reconstructed block 215.

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

Другими словами, блок 262 разделения может быть выполнен с возможностью разделения блока 203 на более мелкие части блока или субблоки (которые снова формируют блоки), например, многократно используя разделение квадродерева (quad-tree-partitioning, QT), двоичное разделение (binary partitioning, BT) или разделение тройного дерева (triple tree-partitioning, TT) или любое их сочетание, и выполнения, например, предсказание для каждой из частей разделения блока или субблоков, где режим выбора содержит выбор древовидной структуры разделенного блока 203, и режимы предсказания применяются к каждому из разделений блока или субблоков.In other words, partitioning block 262 can be configured to partition block 203 into smaller block parts or subblocks (which again form blocks), for example, by repeatedly using quad-tree-partitioning (QT), binary partitioning, BT) or triple tree-partitioning (TT) or any combination thereof, and performing, for example, prediction for each of the parts of the partition of the block or subblocks, where the selection mode contains the selection of the tree structure of the divided block 203, and the prediction modes are applied to each of the divisions of the block or subblocks.

В дальнейшем разделение (например, с помощью блока 260 разделения) и процесс предсказания (блоком 244 межкадрового предсказания 244 и блоком 254 внутрикадрового предсказания 254), выполняемые примерным видеокодером 20, будут объяснены более подробно.In the following, the separation (eg, by the splitter 260) and the prediction process (by the inter prediction 244 244 and the intra prediction 254 254) performed by the exemplary video encoder 20 will be explained in more detail.

РазделениеSeparation

Блок 262 разделения может разделить (или разбить на части) текущий блок 203 на более мелкие части, например, квадратные или прямоугольные блоки меньшего размера. Эти более мелкие блоки (которые могут также упоминаться как субблоки) могут быть дополнительно разделены на еще более мелкие части. Это также упоминается как разделение дерева или иерархическое разделение дерева, в котором корневой блок, например, на корневом нулевом уровне дерева (иерархический уровень 0, глубина 0), может рекурсивно разделяться, например, разделяться на два или более блоков следующего более низкого уровня дерева, например, узлы на уровне 1 дерева (иерархический уровень 1, глубина 1), где эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровня 2 дерева (иерархический уровень 2, глубина 2), и т.д. до тех пор, пока разделение не завершится, например, потому что выполнен критерий завершения, например, достигнута максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не делятся, также упоминаются как листовые блоки или концевые вершины дерева. Дерево, использующее разделение на две части упоминается как двоичное дерево (binary-tree, BT), а дерево, использующее разделение на три части, упоминается как троичное дерево (ternary-tree, TT) и дерево, использующее разделение на четыре части, упоминается как квадродерево (quad-tree, QT).Divider 262 may divide (or split) the current block 203 into smaller pieces, such as smaller square or rectangular blocks. These smaller blocks (which may also be referred to as sub-blocks) can be further subdivided into even smaller pieces. This is also referred to as tree splitting or hierarchical tree splitting, in which a root box, such as at the root zero level of the tree (hierarchical level 0, depth 0), can split recursively, such as split into two or more boxes of the next lower level of the tree, e.g. nodes at tree level 1 (hierarchical level 1, depth 1), where these blocks can again be split into two or more next lower level blocks, e.g. tree level 2 (hierarchical level 2, depth 2), etc. d. until the split is complete, for example because a termination criterion is met, such as the maximum tree depth or minimum block size is reached. Blocks that are not further divided are also referred to as leaf blocks or tree leaf nodes. A tree using splitting into two parts is referred to as a binary tree (binary-tree, BT), and a tree using splitting into three parts is referred to as a ternary tree (ternary-tree, TT) and a tree using splitting into four parts is referred to as quad-tree (QT).

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

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

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

В вариантах осуществления, например, соответствующих самому последнему стандарту видеокодирования, разрабатываемому в настоящее время, который упоминается как универсальное видеокодирование (Versatile Video Coding, VVC), для разделения блока кодирования используют, например, разделение объединенных квадродерева и двоичного дерева (combined Quad-tree and binary tree, QTBT). В структуре блоков QTBT CU может иметь квадратную или прямоугольную форму. Например, блок дерева кодирования (coding tree unit, CTU) сначала делится посредством структуры квадродерева. Концевые вершины квадродерева дополнительно делятся посредством структуры двоичного дерева или троичного (или тройного) дерева. Концевые вершины дерева разделения называют блоками кодирования (coding unit, CU) и такая сегментация используется для процесса предсказания и преобразования без какого-либо дополнительного разделения. Это означает, что в структуре блока кодирования QTBT блоки CU, PU и TU имеют один и тот же размер блока. Параллельно могут использоваться мультиразделение, например, разделение тройного дерева, используемое вместе со структурой блоков QTBT. In embodiments, for example, corresponding to the latest video coding standard currently being developed, which is referred to as universal video coding (Versatile Video Coding, VVC), for example, separation of the combined Quad-tree and binary tree (combined Quad-tree and binary tree, QTBT). In the QTBT block structure, the CU can be square or rectangular. For example, a coding tree unit (CTU) is first divided by a quadtree structure. The leaf nodes of the quadtree are further divided by a binary tree structure or a ternary (or triple) tree structure. The leaf nodes of the partitioning tree are called coding units (CU) and such segmentation is used for the prediction and transformation process without any additional partitioning. This means that in a QTBT coding block structure, CUs, PUs, and TUs have the same block size. In parallel, multi-partitioning may be used, such as the ternary tree partitioning used in conjunction with the QTBT block structure.

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

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

Внутрикадровое предсказаниеIntra-frame prediction

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

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

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

Межкадровое предсказаниеInterframe prediction

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

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

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

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

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

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

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

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

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

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

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

В примере, показанном на фиг. 3, декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обратного преобразования, блок 314 реконструкции (например, сумматор 314), контурный фильтр 320, буфер 330 декодированного изображения (decoded picture buffer, DBP), блок 360 применения режима, блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания. Блок 344 межкадрового предсказания может содержать или включать в себя блок компенсации движения. Видеодекодер 30 в некоторых примерах может выполнять декодирование, обычно проходящее в направлении, обратном прохождению кодирования, описанному в отношении видеокодера 100, показанного на фиг. 2.In the example shown in FIG. 3, the decoder 30 includes an entropy decoder 304, an inverse quantizer 310, an inverse transform 312, a reconstructor 314 (e.g., adder 314), a loop filter 320, a decoded picture buffer (DBP) 330, a mode application 360 , block 344 inter-prediction and block 354 intra-prediction. The inter prediction block 344 may comprise or include a motion compensation block. Video decoder 30, in some examples, may perform decoding generally in the reverse direction of the encoding described with respect to video encoder 100 shown in FIG. 2.

Как было объяснено в отношении кодера 20, блок 210 обратного квантования, блок 212 обратного преобразования, блок 214 реконструкции и контурный фильтр 220, буфер 230 декодированного изображения (DPB), блок 344 межкадрового предсказания и блок 354 внутрикадрового предсказания также упоминаются как образующие “встроенный декодер” видеокодера 20. Соответственно, блок 310 обратного квантования может быть функционально идентичен блоку 110 обратного квантования, блок 312 обратного преобразования может быть функционально идентичен блоку 212 обратного преобразования, блок 114 реконструкции может быть функционально идентичен блоку 214 реконструкции, контурный фильтр 320 может быть функционально идентичен контурному фильтру 220 и буфер 330 декодированного изображения может быть функционально идентичен буферу 230 декодированного изображения. Поэтому объяснения, представленные для соответствующих блоков и функций видеокодера 20 применяют должным образом к соответствующим блокам и функциям видеодекодера 30.As has been explained with respect to encoder 20, inverse quantizer 210, inverse transform 212, reconstructor 214 and loop filter 220, decoded picture buffer (DPB) 230, inter prediction 344, and intra prediction 354 are also referred to as constituting an “embedded decoder”. ” of the video encoder 20. Accordingly, inverse quantizer 310 may be functionally identical to inverse quantizer 110, inverse transform block 312 may be functionally identical to inverse transform block 212, reconstructor 114 may be functionally identical to reconstructor 214, loop filter 320 may be functionally identical loop filter 220 and decoded image buffer 330 may be functionally identical to decoded image buffer 230. Therefore, the explanations provided for the respective blocks and functions of video encoder 20 apply properly to the corresponding blocks and functions of video decoder 30.

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

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

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

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

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

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

РеконструкцияReconstruction

Блок 314 реконструкции (например, сумматор 314) может быть выполнен с возможностью сложения реконструированного остаточного блока 313 с блоком 365 предсказания для получения реконструированного блока 315 в области выборок, например, путем сложения значений выборок реконструированного остаточного блока 313 и значений выборок блока 365 предсказания. Reconstructor 314 (e.g., adder 314) can be configured to add reconstructed residual block 313 to predictor 365 to obtain reconstructed block 315 in the sample region, for example, by adding sample values of reconstructed residual block 313 and sample values of predictor 365.

ФильтрацияFiltration

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

Буфер декодированного изображенияDecoded image buffer

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

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

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

Блок 344 межкадрового предсказания может быть идентичен блоку 244 межкадрового предсказания (в частности, блоку компенсации движения), и блок 354 внутрикадрового предсказания может быть функционально идентичен блоку 254 межкадрового предсказания и выполнять разделение или решение о разделении и предсказание на основе разделения и/или параметров предсказания или соответствующей информации, получаемую из данных 21 кодированного изображения (например, путем синтаксического анализа и/или декодирования, например, блоком 304 энтропийного декодирования). Блок 360 применения режима может быть выполнен с возможностью осуществления предсказания (внутрикадрового или межкадрового) для каждого блока, основываясь на реконструированных изображениях, блоках или соответствующих выборках (фильтрованных или нефильтрованных) для получения блока 365 предсказания.The inter prediction block 344 may be identical to the inter prediction block 244 (in particular, the motion compensation block), and the intra prediction block 354 may be functionally identical to the inter prediction block 254 and perform division or division decision and prediction based on division and/or prediction parameters. or corresponding information obtained from the data 21 of the encoded image (for example, by parsing and/or decoding, for example, block 304 entropy decoding). Mode apply block 360 may be configured to perform prediction (intraframe or interframe) for each block based on reconstructed images, blocks, or corresponding samples (filtered or unfiltered) to obtain prediction block 365 .

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

Блок 360 применения режима выполнен с возможностью определения информации предсказания для видеоблока текущего видеосегмента путем синтаксического анализа векторов движения или сопутствующей информации и других элементов синтаксиса, и использует информацию предсказания для создания блоков предсказания текущего декодируемого видеоблока. Например, блок 360 применения режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутрикадровое или межкадровое предсказание), используемого для кодирования видеоблоков видеосегмента, типа сегмента межкадрового предсказания (например, сегмента B, сегмента P или сегмента GPB), информации о построении одного или более списков опорных изображений сегмента, векторов движения для каждого видеоблока сегмента с межкадровым кодированием и другой информации для декодирования видеоблоков в текущем видеосегменте. То же самое или аналогичное может применяться в вариантах осуществления, используя мозаичные группы (например, мозаичные видеогруппы) и/или мозаики (например, видеомозаики) в дополнение или альтернативно сегментам (например, видеосегментам), например, видео может кодироваться, используя мозаичные группы I, P или B и/или мозаики.The mode applying block 360 is configured to determine prediction information for a video block of the current video segment by parsing motion vectors or related information and other syntax elements, and uses the prediction information to create prediction blocks of the current video block being decoded. For example, the mode applicator 360 uses some of the received syntax elements to determine the prediction mode (eg, intra or inter prediction) used to encode the video blocks of a video segment, the type of inter prediction segment (eg, B segment, P segment, or GPB segment), information about building one or more lists of segment reference pictures, motion vectors for each video block of the segment with interframe coding, and other information for decoding video blocks in the current video segment. The same or similar may be applied in embodiments using tiles (eg, video tiles) and/or tiles (eg, video tiles) in addition to or alternatively to segments (eg, video segments), e.g., video may be encoded using tiles I , P or B and/or tilings.

Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения, используя сегменты (также называемые видеосегментами), где изображение может быть разделено или декодировано, используя один или более сегментов (обычно неперекрывающихся), и каждый сегмент может содержать один или более блоков (например, CTU).Embodiments of video decoder 30, as shown in FIG. 3 may be configured to split and/or decode a picture using segments (also referred to as video segments), where an image may be split or decoded using one or more segments (usually non-overlapping), and each segment may contain one or more blocks ( e.g. CTU).

Варианты осуществления видеодекодера 30, как показано на фиг. 3, могут быть выполнены с возможностью разделения и/или декодирования изображения, используя мозаичные группы (также называемые мозаичными видеогруппами) и/или мозаики (также называемые видеомозаиками), где изображение может быть разделено или декодироваться, используя одну или более (обычно неперекрывающихся) мозаичных групп, и каждая мозаичная группа может содержать, например, один или более блоков (например, CTU) или одну или более мозаик, где каждая мозаика может иметь, например, прямоугольную форму и может содержать один или более блоков (например, CTU), например, полных или дробных блоков.Embodiments of video decoder 30, as shown in FIG. 3 may be configured to split and/or decode an image using tiles (also referred to as video tiles) and/or tiles (also referred to as video tiles), where an image may be split or decoded using one or more (typically non-overlapping) tiles. groups, and each tile group may contain, for example, one or more blocks (eg, CTU) or one or more tiles, where each tile may be, for example, rectangular in shape and may contain one or more blocks (eg, CTU), for example , full or fractional blocks.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 кодированного изображения. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30 с отсутствующим преобразованием для определенных блоков или кадров может обратно квантовать остаточный сигнал напрямую без блока 312 обратного преобразования. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обратного преобразования, объединенные в единый блок.Other variants of video decoder 30 may be used to decode encoded picture data 21 . For example, decoder 30 may produce an output video stream without loop filtering unit 320 . For example, decoder 30 with no transform for certain blocks or frames may inversely quantize the residual signal directly without inverse transform block 312 . In another implementation, video decoder 30 may have an inverse quantizer 310 and an inverse transform 312 combined into a single unit.

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

Следует заметить, что дополнительные операции могут применяться к полученным векторам движения текущего блока (в том числе, но не ограничиваясь этим, к векторам управляемого точечного движения аффинного режима, векторам движения субблоков в аффинных, планарных ATMVP-режимах, векторам временного движения и так далее). Например, значение вектора движения ограничивается заданным диапазоном, соответствующим его представляющему биту. Если представляющим битом вектора движения является bitDepth, то диапазоном является -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where “^” означает возведение в степень. Например, если bitDepth установлен равным 16, диапазон равен -32768 ~ 32767; если bitDepth установлен равным 18, диапазон равен -131072~131071. Например, значение полученного вектора движения (например, MV из четырех субблоков 4x4 в одном блоке 8x8) ограничивается таким образом, что максимальная разность между целыми частями четырех субблоков MV 4x4 не превышает N пикселей, например, не более 1 пикселя. Здесь предоставляются два способа ограничения вектора движения, соответствующих bitDepth.It should be noted that additional operations can be applied to the received motion vectors of the current block (including, but not limited to, affine mode controlled point motion vectors, sub-block motion vectors in affine, planar ATMVP modes, temporal motion vectors, and so on) . For example, the value of a motion vector is limited to a predetermined range corresponding to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where “^” means exponentiation. For example, if bitDepth is set to 16, the range is -32768 ~ 32767; if bitDepth is set to 18, the range is -131072~131071. For example, the value of the obtained motion vector (e.g., MV of four 4x4 subblocks in one 8x8 block) is limited such that the maximum difference between integer parts of four 4x4 MV subblocks does not exceed N pixels, for example, not more than 1 pixel. Here, two ways of limiting the motion vector corresponding to bitDepth are provided.

Способ 1: удаление MSB (старший значащий бит) переполнения посредством операций прохождения потока. Method 1: Removing the MSB (Most Significant Bit) of the overflow through stream pass operations.

ux = (mvx+2bitDepth) % 2bitDepth ux = (mvx+2 bitDepth ) % 2 bitDepth (1)(1) mvx = (ux> = 2bitDepth-1) ? (ux − 2bitDepth): uxmvx = (ux>= 2 bitDepth-1 ) ? (ux − 2 bitDepth ): ux (2)(2) uy = (mvy+2bitDepth) % 2bitDepth uy = (mvy+2 bitDepth ) % 2 bitDepth (3)(3) mvy = (uy> = 2bitDepth-1) ? (uy − 2bitDepth): uymvy = (uy>= 2 bitDepth-1 ) ? (uy − 2 bitDepth ): uy (4),(4),

где mvx - горизонтальная составляющая вектора движения блока или субблока изображения, mvy - вертикальная составляющая вектора движения блока или субблока изображения, и ux и uy - промежуточное значение.where mvx is the horizontal component of the motion vector of the image block or sub-block, mvy is the vertical component of the motion vector of the image block or sub-block, and ux and uy are intermediate values.

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

ux = (mvpx + mvdx +2bitDepth) % 2bitDepth ux = (mvpx + mvdx +2 bitDepth ) % 2 bitDepth (5)(5) mvx = (ux> = 2bitDepth-1)? (ux − 2bitDepth): uxmvx = (ux >= 2 bitDepth-1 )? (ux − 2 bitDepth ): ux (6)(6) uy = (mvpy + mvdy +2bitDepth) % 2bitDepth uy = (mvpy + mvdy +2 bitDepth ) % 2 bitDepth (7)(7) mvy = (uy> = 2bitDepth-1)? (uy − 2bitDepth): uymvy = (uy >= 2 bitDepth-1 )? (uy − 2 bitDepth ): uy (8)(8)

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

Способ 2: удаление MSB переполнения путем отсечения значенияMethod 2: Removing the MSB Overflow by Trimming the Value

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

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

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

Figure 00000001
Figure 00000001

На фиг. 4 схематично показано устройство 400 видеокодирования, соответствующее варианту осуществления раскрытия. Устройство 400 видеокодирования пригодно для реализации раскрытых вариантов осуществления, как описано здесь. В варианте осуществления устройство 400 видеокодирования может быть декодером, таким как видеодекодер 30, показанный на фиг. 1A, или может быть кодером, таким как видеокодер 20, показанный на фиг. 1A. In FIG. 4 schematically shows a video encoding device 400 according to an embodiment of the disclosure. The video encoder 400 is suitable for implementing the disclosed embodiments as described herein. In an embodiment, video encoder 400 may be a decoder, such as video decoder 30 shown in FIG. 1A, or may be an encoder such as video encoder 20 shown in FIG. 1A.

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

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

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

На фиг. 5 представлена упрощенная блок-схема устройства 500, которое может использоваться отдельно как устройство 12 источника данных и как устройство 14 назначения, показанные на фиг. 1, или совместно, в соответствии с примерным вариантом осуществления.In FIG. 5 is a simplified block diagram of a device 500 that can be used separately as data source device 12 and destination device 14 shown in FIG. 1, or together, in accordance with an exemplary embodiment.

Процессор 502 устройства 500 может быть центральным процессором. Альтернативно, процессор 502 может быть любым другим типом устройства или несколькими устройствами, способными управлять или обрабатывать существующую или разработанную в дальнейшем информацию. Хотя раскрытые реализации на практике могут быть осуществлены единым процессором, как показано, например, процессором 502, преимущества по скорости и эффективности могут быть достигнуты с помощью нескольких процессоров.Processor 502 of device 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device or multiple devices capable of managing or processing existing or future information. While the disclosed implementations may be practiced by a single processor, as illustrated by processor 502, for example, the speed and efficiency advantages can be achieved with multiple processors.

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

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

Хотя на чертеже показана одна единственная шина, шина 512 устройства 500 может состоять из нескольких шин. Дополнительно, внешнее запоминающее устройство 514 может напрямую быть связано с другими компонентами устройства 500 или доступ к нему может осуществляться через сеть и оно может содержать единый интегральный блок, такой как карта памяти, или несколько блоков, таких как несколько карт памяти. Устройство 500 может, таким образом, быть реализовано в большом разнообразии конфигураций.Although a single bus is shown in the drawing, bus 512 of device 500 may be comprised of multiple buses. Additionally, the external storage device 514 may be directly connected to other components of the device 500 or accessed via a network and may comprise a single integrated unit, such as a memory card, or multiple units, such as multiple memory cards. Device 500 may thus be implemented in a wide variety of configurations.

Блок 244 межкадрового предсказания может содержать блок оценки движения (motion estimation, ME) и блок компенсации движения (motion compensation, MC) (не показаны на фиг. 2). Блок оценки движения выполнен с возможностью приема или получения блока 203 изображения (блока 203 текущего изображения из текущего изображения 201) и декодированного изображения 331, или по меньшей мере одного или более из ранее реконструированных блоков, например, реконструированных блоков одного или множества других/различных ранее декодированных изображений 331, для оценки движения. Например, видеопоследовательность может содержать текущее изображение и ранее декодированные изображения 331 или, другими словами, текущее изображение и ранее декодированные изображения 331 могут быть частью или формировать последовательность изображений, образующих видеопоследовательность. Кодер 200 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одного и того же или различных изображений из множества других изображений и предоставления блоку оценки движения опорного изображения (или индекса опорного изображения, …) и/или смещения (пространственного смещения) между положением (координаты x, y) опорного блока и положением текущего блока в качестве параметров межкадрового предсказания (не показано на фиг. 2). Это смещение также называют вектором движения (motion vector, MV). Слияние является важным инструментом оценки движения, используемым в HEVC и передаваемым VVC. The inter prediction block 244 may comprise a motion estimation (ME) block and a motion compensation (MC) block (not shown in FIG. 2). The motion estimator is configured to receive or obtain an image block 203 (current image block 203 from the current image 201) and a decoded image 331, or at least one or more of previously reconstructed blocks, e.g., reconstructed blocks of one or a plurality of other/different previously 331 decoded pictures for motion estimation. For example, the video sequence may comprise the current picture and previously decoded pictures 331 or, in other words, the current picture and previously decoded pictures 331 may be part of or form a sequence of pictures that make up the video sequence. The encoder 200 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of other pictures, and provide the reference picture motion estimate (or reference picture index, ...) and/or offset (spatial offset) to the block. ) between the position (x, y coordinates) of the reference block and the position of the current block as inter prediction parameters (not shown in FIG. 2). This displacement is also called the motion vector (MV). Merging is an important motion estimation tool used in HEVC and transmitted by VVC.

Для выполнения оценки слияния создается список возможных кандидатов на слияние, причем каждый кандидат в списке кандидатов содержит данные о движении, эти данные о движении содержат информацию, которая указывает, используется ли один или два списка опорных изображений, а также содержит другую информацию, такую как опорный индекс и вектор движения для каждого списка. В данном примере список возможных кандидатов на слияние создается на основе следующих кандидатов: To perform the merge evaluation, a list of possible merge candidates is created, where each candidate in the candidate list contains motion data, this motion data contains information that indicates whether one or two reference picture lists are used, and also contains other information such as a reference index and motion vector for each list. In this example, a list of possible merge candidates is created based on the following candidates:

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

b. один временный кандидат на слияние, полученный из двух временных, совмещенных блоков; b. one temporary merger candidate derived from two temporary, merged blocks;

c. дополнительные кандидаты на слияние, в том числе, объединенные би-предсказуемые кандидаты и нулевые кандидаты векторов движения.c. additional merge candidates, including joint bi-predictable candidates and null motion vector candidates.

Первые кандидаты в списке кандидатов на слияние являются пространственными соседями. До четырех кандидатов вводятся в список на слияние путем последовательной проверки A1, B1, B0, A0 и B2, в таком порядке, в соответствии с правой частью фиг. 6.The first candidates in the merge candidate list are spatial neighbors. Up to four candidates are entered into the merge list by successively checking A1, B1, B0, A0, and B2, in that order, according to the right side of FIG. 6.

Помимо проверки, доступен ли блок кодирования и содержит ли он информацию о движении, прежде, чем принять все данные о движении блока кодирования в качестве кандидата на слияние, выполняются некоторые дополнительные проверки избыточности. Эти проверки избыточности могут быть разделены на две категории: a. Для избежания избыточных данных движения в списке; b. Для предотвращения слияния двух разделов, которые могут быть выражены другими средствами, способными создавать избыточный синтаксис.In addition to checking whether a coding block is available and contains motion information, some additional redundancy checks are performed before accepting all motion data of a coding block as a merge candidate. These redundancy checks can be divided into two categories: a. To avoid redundant motion data in the list; b. To prevent two sections from being merged, which may be expressed by other means capable of creating redundant syntax.

В данном примере N является количеством пространственных кандидатов на слияние, полная проверка избыточности может содержать (N • (N-1))/2 сравнений данных движения. В случае пяти потенциальных пространственных кандидатов на слияние, необходимо десять сравнений данных о движении, чтобы гарантировать, что все кандидаты в списке на слияние имеют различные данные о движении. Во время разработки HEVC проверки на избыточные данные о движении были сокращены до субнабора способом, который сохраняет эффективность кодирования, в то время как логика сравнения значительно сокращается. В итоге выполняют не более двух сравнений на каждого кандидата, что приводит к пяти общим сравнениям. Учитывая порядок {A1, B1, B0, A0, B2}, B0 проверяет только B1, A0 проверяет только A1, и B2 проверяет только A1 и B1. В примере проверки на избыточность разделения нижний PU разделения 2N×N сливается с верхним PU посредством выбора кандидата B1. Это может привести к одному CU с двумя PU, имеющими одни и те же данные о движении, которые могут одинаково сообщаться как CU 2N×2N. В целом, эта проверка применяется для всех вторых PU прямоугольных и асимметричных частей 2N×N, 2N×nU, 2N×nD, N×2N, nR×2N и nL×2N. Заметим, что для пространственных кандидатов на слияние, выполняются только проверки на избыточность и данные о движении копируются из блоков возможных кандидатов. Следовательно, никакое масштабирование векторов движения здесь не требуется.In this example, N is the number of spatial merge candidates, a full redundancy check may contain (N • (N-1))/2 motion data comparisons. In the case of five potential spatial merge candidates, ten motion data comparisons are needed to ensure that all candidates in the merge list have different motion data. During the development of HEVC, checks for redundant motion data were reduced to a subset in a manner that preserves coding efficiency while the comparison logic is greatly reduced. As a result, no more than two comparisons are performed per candidate, resulting in five total comparisons. Given the order {A1, B1, B0, A0, B2}, B0 only checks B1, A0 only checks A1, and B2 only checks A1 and B1. In the split redundancy test example, the lower PU of the 2N×N split is merged with the upper PU by selecting candidate B1. This may result in one CU with two PUs having the same traffic data, which may be reported as 2N×2N CUs in the same way. In general, this check is applied to all second PUs of 2N×N, 2N×nU, 2N×nD, N×2N, nR×2N and nL×2N rectangular and asymmetric parts. Note that for spatial merge candidates, only redundancy checks are performed and motion data is copied from candidate candidate blocks. Therefore, no scaling of the motion vectors is required here.

Получение векторов движения для временного кандидата на слияние совпадает с временным вектором предсказания движения (Temporal Motion Vector Prediction, TMVP). Поскольку кандидат на слияние содержит все данные о движении, а TMVP является только одним вектором движения (это означает, что при регулярном слиянии разрешается максимально только один кандидат TMVP), получение данных о движении зависит от типа сегмента. Для сегментов с двунаправленным предсказанием TMVP получают для каждого списка опорных изображений. В зависимости от доступности TMVP для каждого списка тип предсказания устанавливается как двунаправленное предсказание или как список, для которого доступен TMVP. Все связанные индексы опорных изображений устанавливаются равными нулю. Для сегментов с однонаправленным предсказанием TMVP для списка 0 получают вместе с индексом опорного изображения, равным нулю.The derivation of motion vectors for a temporal merge candidate is the same as the Temporal Motion Vector Prediction (TMVP) vector. Because the merge candidate contains all motion data and the TMVP is only one motion vector (meaning that only one TMVP candidate is allowed at a regular merge), the acquisition of motion data depends on the segment type. For bidirectional predictive segments, a TMVP is obtained for each reference picture list. Depending on the availability of TMVP for each list, the prediction type is set to bidirectional prediction or to the list for which TMVP is available. All associated reference picture indexes are set to zero. For segments with TMVP unidirectional prediction for the list, 0 is obtained along with a reference picture index of zero.

Когда по меньшей мере один TMVP доступен и к списку добавляют временного кандидата на слияние, никакая проверка избыточности не выполняется. Это делает построение списка слияния независимым от совмещенного изображения, что улучшает ошибкоустойчивость. Рассмотрим случай, когда временный кандидат на слияние может быть избыточным и поэтому не включается в список кандидатов на слияние. В случае потерянного совмещенного изображения декодер не мог получать временных кандидатов и, следовательно, не может проверять, являются ли они избыточными. Это может влиять на индексацию всех последующих кандидатов.When at least one TMVP is available and a temporary merge candidate is added to the list, no redundancy check is performed. This makes the construction of the merge list independent of the merged image, which improves robustness. Consider the case where a temporary merge candidate may be redundant and therefore not included in the list of merge candidates. In the case of a lost merged picture, the decoder could not obtain temporary candidates and therefore cannot check if they are redundant. This may affect the indexing of all subsequent candidates.

Для синтаксического анализа причин устойчивости фиксируется количество кандидатов в списке кандидатов на слияние. После того, как пространственные и временные кандидаты на слияние добавлены, список может быть неполным (количество кандидатов в списке кандидатов на слияние меньше фиксированного числа). Для компенсации потери эффективности кодирования, которая возникает при сигнализации индекса неполного адаптивного списка, формируются дополнительные кандидаты. В зависимости от типа сегмента используют до двух типов кандидатов, чтобы полностью заполнить список: a. Объединенные кандидаты с двунаправленным предсказанием; b. Кандидаты с нулевым вектором движения.To parse the reasons for stability, the number of candidates in the list of candidates for merging is fixed. After the spatial and temporal merge candidates are added, the list may be incomplete (the number of candidates in the merge candidate list is less than a fixed number). Additional candidates are generated to compensate for the loss in coding efficiency that occurs when signaling the incomplete adaptive list index. Depending on the type of segment, up to two types of candidates are used to complete the list: a. Joint candidates with bidirectional prediction; b. Candidates with zero motion vector.

В сегментах с двунаправленным предсказанием дополнительные кандидаты могут формироваться на основе существующих, объединяя данные о движении списка 0 опорных изображений одного кандидата с данными о движении списка 1 другого кандидата. Это делается путем копирования Δx0, Δy0, Δt0 от одного кандидата, например, первого кандидата, и Δx1, Δy1, Δt1 от другого, например, второго кандидата. Определяются различные комбинации, которые приводятся в таблице 1.In bidirectional prediction segments, additional candidates can be generated from existing ones by combining one candidate's reference picture list 0 motion data with another candidate's list 1 motion data. This is done by copying Δx0, Δy0, Δt0 from one candidate, eg the first candidate, and Δx1, Δy1, Δt1 from another, eg the second candidate. Various combinations are defined and are listed in Table 1.

Таблица 1Table 1

Порядок комбинацииCombination order 00 11 22 33 44 55 66 77 88 99 1010 11eleven Δx0, Δy0, Δt0 от кандидатаΔx0, Δy0, Δt0 from candidate 00 11 00 22 11 22 00 33 11 33 22 33 Δx0, Δy0, Δt0 от кандидатаΔx0, Δy0, Δt0 from candidate 11 00 22 00 22 11 33 00 33 11 33 22

Когда после добавления объединенных кандидатов с двунаправленным предсказанием или для сегментов с однонаправленным предсказанием список все еще неполон, добавляют нулевые кандидаты вектора движения. Нулевые кандидаты вектора движения имеют один вектор движения с нулевым перемещением для сегментов с однонаправленным предсказанием и два вектора движения с нулевым перемещением смещения для сегментов с двунаправленным предсказанием. Опорные индексы устанавливаются равными нулю и увеличиваются на единицу для каждого дополнительного кандидата, пока не будет достигнуто максимальное количество опорных индексов. Если необходимо добавлять еще дополнительных кандидатов, опорный индекс, равный нулю, используют для создания дополнительных кандидатов. Для дополнительных кандидатов никакие проверки избыточности не выполняют, поскольку пропуск этих проверок не вносит потери в эффективность кодирования.When the list is still incomplete after adding combined bidirectional predictive candidates or for unidirectional predictive segments, null motion vector candidates are added. The null motion vector candidates have one motion vector with zero displacement for unidirectional prediction segments and two motion vectors with zero displacement displacement for bidirectional prediction segments. The pivot indices are set to zero and incremented by one for each additional candidate until the maximum pivot index is reached. If more additional candidates need to be added, a reference index of zero is used to create additional candidates. For additional candidates, no redundancy checks are performed, since omission of these checks does not introduce a loss in coding efficiency.

Для каждого PU, кодированного в режиме межкадрового предсказания, флаг слияния merge_flag используют, чтобы указать, используется ли блок слияния для получения данных о движении. merge_idx используют для определения кандидата в список слияния, который обеспечивает данные о движении, необходимые для предсказания компенсированного движения (motion compensated prediction, MCP). Помимо сигнализации PU-уровня, количество кандидатов в список слияния сообщается в заголовке сегмента. В данном примере значение по умолчанию равняется пяти, оно представлено как разность до пяти (five_minus_max_num_merge_cand). Что касается процесса построения списка кандидатов на слияние,то весь процесс остается таким же, хотя он завершается после того, как в список включено максимальное количество кандидатов на слияние. При начальном построении максимальное значение кодирования индекса слияния задавалось количеством доступных пространственных и временных кандидатов в список. Когда доступны только два кандидата, индекс может эффективно кодироваться как флаг. Чтобы синтаксически проанализировать индекс слияния, должен быть построен весь список кандидатов на слияние, чтобы знать фактическое количество кандидатов. For each PU encoded in the inter prediction mode, a merge flag merge_flag is used to indicate whether a merge block is used to obtain motion data. merge_idx is used to determine a merge list candidate that provides the motion data needed for motion compensated prediction (MCP). In addition to signaling the PU layer, the number of merge list candidates is reported in the segment header. In this example, the default value is five, which is represented as the difference up to five (five_minus_max_num_merge_cand). As for the process of building the list of merge candidates, the whole process remains the same, although it ends after the maximum number of merge candidates has been included in the list. In the initial construction, the maximum merge index encoding value was given by the number of available spatial and temporal candidates in the list. When only two candidates are available, the index can be effectively encoded as a flag. In order to parse the merge index, the entire list of merge candidates must be built to know the actual number of candidates.

Применение слияния блоков в HEVC объединяется с режимом пропуска. Режим пропуска используется для блока, чтобы указать, что в итоге данные о движении для блока получены, вместо того, чтобы их явно сообщать в битовом потоке, и что остаток предсказания для блока является нулевым, т.е. никакие коэффициенты преобразования не передаются. В HEVC в начале каждого CU в сегменте межкадрового изображения сообщают skip_flag, который подразумевает следующее: a. CU содержит только один PU (тип разделения 2N×2N); b. Режим слияния используется для получения данных о движении (merge_flag равен 1); c. В битовом потоке не присутствуют никакие остаточные данные.The use of block merging in HEVC is combined with the skip mode. The skip mode is used for a block to indicate that the motion data for the block is finally received instead of being explicitly reported in the bitstream, and that the prediction residual for the block is zero, i.e. no transform coefficients are transmitted. In HEVC, a skip_flag is reported at the beginning of each CU in an interframe segment, which implies the following: a. CU contains only one PU (partition type 2N×2N); b. Merge mode is used to get motion data (merge_flag is 1); c. No residual data is present in the bitstream.

Другой инструмент оценки движения, представленный в HEVC и присущий VVC, называют усовершенствованным предсказанием вектора движения (Advanced Motion Vector Prediction, AMVP). В режиме AMVP векторы движения кодируются с точки зрения горизонтальной (x) и вертикальной (y) составляющих как разности, получая в результате так называемый предиктор движения (motion predictor, MVP). Вычисление компонент разности векторов движения (motion vector difference, MVD) представляется как MVDx = MVx – MVPx, MVDy = MVy – MVPy. Another motion estimation tool introduced in HEVC and native to VVC is called Advanced Motion Vector Prediction (AMVP). In AMVP mode, motion vectors are encoded in terms of horizontal (x) and vertical (y) components as differences, resulting in a so-called motion predictor (MVP). The calculation of the components of the motion vector difference (MVD) is represented as MVDx = MVx – MVPx, MVDy = MVy – MVPy.

Векторы движения текущего блока обычно коррелируются с векторами движения соседних блоков в текущем изображении или в ранее кодированных изображениях. Поскольку соседние блоки, вероятно, должны соответствовать одному и тому же движущемуся объекту с аналогичным движением, маловероятно, что движение объекта будет резко изменяться во времени. Следовательно, использование векторов движения в соседних блоках в качестве предикторов уменьшает размер сообщаемой разности векторов движения. MVP обычно получают из декодированных векторов движения от пространственных соседних блоков или от временно соседних блоков в совмещенном изображении. В HEVC используемый для получения вектора движения подход неявного извлечения MVP был заменен технологией, известной как конкуренция векторов движения, которая явно сообщает MVP из списка MVP. Переменная блочная структура квадродерева кодирования в HEVC может привести в результате к одному блоку, имеющему несколько соседних блоков с векторами движения в качестве потенциальных кандидатов MVP. Принимая левого соседа в качестве примера, в случае, когда блок предсказания яркости 64x64 может иметь слева 16 блоков предсказания яркости 8x4, когда блок дерева кодирования яркости 64x64 далее не делится, оставшийся блок делится на максимальную глубину. Усовершенствованное предсказание вектора движения (Advanced Motion Vector Prediction, AMVP) было введено для модификации конкуренции векторов движения, чтобы учесть такую гибкую блочную структуру. Во время разработки HEVC начальное построение AMVP было значительно упрощено, чтобы обеспечить хороший компромисс между эффективностью кодирования и построением удобной реализации. The motion vectors of the current block are usually correlated with the motion vectors of neighboring blocks in the current picture or in previously encoded pictures. Since adjacent blocks are likely to correspond to the same moving object with similar motion, it is unlikely that the object's motion will change dramatically over time. Therefore, using motion vectors in adjacent blocks as predictors reduces the size of the reported motion vector difference. The MVP is typically derived from decoded motion vectors from spatial neighbors or from temporally neighbors in a merged image. In HEVC, the implicit MVP extraction approach used to derive the motion vector has been replaced by a technology known as motion vector contention, which explicitly reports the MVP from the MVP list. The variable block structure of the coding quadtree in HEVC may result in a single block having multiple neighboring blocks with motion vectors as potential MVP candidates. Taking the left neighbor as an example, in the case where a 64x64 luminance prediction block can have 16 8x4 luminance prediction blocks on the left, when the 64x64 luma coding tree block is not further divided, the remaining block is divided by the maximum depth. Advanced Motion Vector Prediction (AMVP) has been introduced to modify motion vector contention to account for such a flexible block structure. During the development of HEVC, the initial construction of AMVP was greatly simplified to provide a good trade-off between coding efficiency and user-friendly implementation construction.

Начальное построение AMVP содержит пять MVP из трех различных классов предикторов: три вектора движения от пространственных соседей, медиана трех пространственных предикторов и масштабированный вектор движения от совмещенного, временно соседнего блока. Дополнительно, список предикторов был изменен путем упорядочения для размещения наиболее вероятного предиктора движения на первом месте и путем удаления избыточных кандидатов, чтобы гарантировать минимальную вспомогательную сигнализацию. Исчерпывающие эксперименты в течение всего процесса стандартизации позволили изучить, как сложность этого предсказания вектора движения и схема сообщений могут быть уменьшены, не слишком сильно жертвуя эффективностью кодирования. Это ведет к значительным упрощениям построения AMVP, таким как удаление медианного предиктора, сокращение количества кандидатов в списке от пяти до двух, фиксация порядка кандидатов в списке и сокращение количества проверок избыточности. Построение списка кандидатов AMVP содержит следующих двух кандидатов MVP:The initial AMVP build contains five MVPs from three different classes of predictors: three motion vectors from spatial neighbors, a median of three spatial predictors, and a scaled motion vector from a co-located, temporally adjacent block. Additionally, the list of predictors has been modified by ordering to place the most likely motion predictor in first place and by removing redundant candidates to ensure minimal auxiliary signaling. Exhaustive experimentation throughout the standardization process has made it possible to study how the complexity of this motion vector prediction and message scheme can be reduced without sacrificing too much coding efficiency. This leads to significant simplifications in the construction of AMVP, such as removing the median predictor, reducing the number of candidates in the list from five to two, fixing the order of candidates in the list, and reducing the number of redundancy checks. Building a list of AMVP candidates contains the following two MVP candidates:

до двух пространственных кандидатов MVP, которые получают из пяти пространственных соседних блоков;up to two spatial MVP candidates, which are derived from five spatial neighboring blocks;

один временный кандидат MVP, полученный из двух временных, совмещенных блоков, когда оба пространственных кандидата MVP недоступны или они идентичны;one temporal MVP candidate derived from two temporal, co-located blocks when both spatial MVP candidates are unavailable or identical;

нулевые векторы движения, когда пространственное, временные или те и другие кандидаты недоступны.null motion vectors when spatial, temporal, or both candidates are not available.

При описании пространственных кандидатов технологический маршрут получения для двух пространственных кандидатов A и B показан на фиг. 13. Для кандидата A данные движения из этих двух блоков A0 и A1 в левом нижнем угле учитываются при подходе с двумя проходами. При первом проходе проверяют, содержит ли какой-либо из блоков кандидата опорный индекс, равный опорному индексу текущего блока. Первый найденный вектор движения будет принят в качестве кандидата A. Когда все опорные индексы от A0 и A1 указывают на опорное изображение, отличное от опорного индекса текущего блока, соответствующий вектор движения не может использоваться таким, как есть. Поэтому, при втором проходе векторы движения должны масштабироваться в соответствии с временными расстояниями между опорным изображением кандидата и текущим опорным изображением. Временное расстояние выражается в терминах разности между значениями подсчета порядка изображения (picture order count, POC), причем значения POC используются для определения порядка отображения изображений. In describing the spatial candidates, the production path for two spatial candidates A and B is shown in FIG. 13. For candidate A, the movement data from these two blocks A0 and A1 in the lower left corner is taken into account in the two-pass approach. In the first pass, it is checked whether any of the candidate blocks contains a reference index equal to the reference index of the current block. The first found motion vector will be taken as candidate A. When all reference indices from A0 and A1 point to a reference picture other than the reference index of the current block, the corresponding motion vector cannot be used as it is. Therefore, on the second pass, the motion vectors must be scaled according to the temporal distances between the candidate reference picture and the current reference picture. The temporal distance is expressed in terms of the difference between the picture order count (POC) values, with the POC values used to determine the display order of the pictures.

Для кандидата B, кандидаты B0-B2 проверяются последовательно таким же образом, что и A0 и A1. Второй проход, однако, выполняется, когда блоки A0 и A1 не содержат никакой информации о движении, т.е. недоступны или кодированы, используя внутрикадровое предсказание. Затем кандидат A устанавливают равным немасштабированному кандидату B, если он найден, и кандидат B устанавливают равным второму немасштабированному или масштабированному варианту кандидата B. Второй проход может быть закончен, когда все еще могут иметься потенциальные немасштабированные кандидаты, причем второй проход ищет немасштабированные, а также масштабированные MV, полученные от кандидатов B0-B2. В целом, такое построение позволяет обрабатывать A0 и A1 независимо от B0, B1 и B2. При получении B должно быть известно о доступности как A0, так и A1 для поиска масштабированного или дополнительного немасштабированного MV, полученного от B0-B2. Эта зависимость значительно сокращает сложные операции масштабирования вектора движения для кандидата B. Уменьшение количества масштабирований вектора движения представляет значительное снижение сложности процесса получения предиктора вектора движения.For candidate B, candidates B0-B2 are tested sequentially in the same way as A0 and A1. The second pass, however, is performed when blocks A0 and A1 do not contain any motion information, i.e. not available or encoded using intra prediction. Candidate A is then set equal to the unscaled candidate B, if found, and candidate B is set equal to the second unscaled or scaled candidate B candidate. MV received from candidates B0-B2. In general, this construction allows processing A0 and A1 independently of B0, B1 and B2. When B is received, both A0 and A1 must be aware of the availability to search for the scaled or additional unscaled MV received from B0-B2. This dependency greatly reduces the complex motion vector scaling operations for candidate B. Reducing the number of motion vector scalings represents a significant reduction in the complexity of the motion vector predictor derivation process.

В процессе выбора временного кандидата. Как можно видеть из фиг. 6, векторы движения от пространственных соседних блоков слева и выше текущего блока рассматривают как пространственные кандидаты MVP. Это может быть объяснено тем, что блоки справа и ниже текущего блока еще не декодированы и, следовательно, их данные о движении отсутствуют. Так как совмещенное изображение является опорным изображением, которое уже декодировано, можно также рассмотреть данные о движении от блока в том же самом положении, от блоков справа от совмещенного блока или от нижних блоков. В HEVC блок внизу справа и в центре текущего блока был определен как полностью пригодный для обеспечения хорошего предиктора временного вектора движения (temporal motion vector predictor, TMVP). Эти кандидаты показаны на фиг. 6, где C0 представляет нижнего правого соседа, а C1 представляет центральный блок. Данные о движении C0 считают первыми, если данные о движении C0 недоступны, данные о движении совмещенного блока кандидата в центре используются для получения кандидата C временного MVP. Данные о движении C0 также рассматривают как являющиеся недоступными, когда сопутствующий PU принадлежит CTU за пределами текущей строки CTU. Это минимизирует требования к пропускной способности памяти, чтобы хранить совмещенные данные о движении. В отличие от пространственных кандидатов MVP, где векторы движения могут обращаться к одному и тому же опорному изображению, масштабирование вектора движения является обязательным для TMVP. In the process of choosing an interim candidate. As can be seen from FIG. 6, motion vectors from spatial neighboring blocks to the left and above the current block are considered as spatial MVP candidates. This can be explained by the fact that the blocks to the right and below the current block have not yet been decoded and therefore their motion data is missing. Since the merged picture is a reference picture that has already been decoded, one can also consider motion data from a block at the same position, from blocks to the right of the merged block, or from lower blocks. In HEVC, the block at the bottom right and center of the current block was determined to be fully capable of providing a good temporal motion vector predictor (TMVP). These candidates are shown in FIG. 6, where C0 represents the bottom right neighbor and C1 represents the center block. Motion data C0 is considered first, if motion data C0 is not available, the motion data of the co-located candidate block at the center is used to derive the temporary MVP candidate C. C0 motion data is also considered to be unavailable when the companion PU belongs to a CTU outside of the current CTU row. This minimizes the memory bandwidth requirement to store the combined motion data. Unlike spatial MVP candidates where motion vectors can refer to the same reference picture, motion vector scaling is mandatory for TMVP.

Построение одновременно списка слияния и списка AMVP, предиктор вектора движения, основанного на архивных данных (history based motion vector predictor, HMVP), должен слиться или войти в список слияния AMVP. Кандидаты на слияние MVP, основанные на архивных данных, (history-based MVP, HMVP) добавляются в список на слияние/AMVP после пространственного MVP и TMVP. При этом способе информация о движении ранее кодированного блока сохраняется в таблице и используется в качестве MVP для текущего CU. Таблица с многочисленными кандидатами HMVP поддерживается во время процесса кодирования/декодирования. Таблица устанавливается в исходное состояние (опустошается), когда вставляется новая строка CTU. Каждый раз, когда существует несубблочный межкадрово кодированный CU, сопутствующая информация о движении добавляется к последней записи в таблице в качестве нового кандидата HMVP.Building a merge list and an AMVP list at the same time, a history based motion vector predictor (HMVP) must merge or enter the AMVP merge list. History-based MVP (HMVP) merge candidates are added to the merge/AMVP list after the spatial MVP and TMVP. With this method, the motion information of the previously encoded block is stored in a table and used as the MVP for the current CU. A table with multiple HMVP candidates is maintained during the encoding/decoding process. The table is reset (emptied) when a new CTU row is inserted. Each time a non-subblock interframe coded CU exists, the associated motion information is added to the last entry in the table as a new HMVP candidate.

В VTM4 размер S таблицы HMVP устанавливается равным 6, что указывает, что к таблице может быть добавлено до 6 кандидатов HMVP. При вставке нового кандидата движения в таблицу используется ограниченное правило "первым пришел - первым вышел" (first-in-first-out, FIFO), в котором проверка избыточности сначала применяется для определения, имеется ли в таблице идентичный HMVP. Если идентичный HMVP в таблице существует, идентичный HMVP удаляется из таблицы и все кандидаты HMVP далее продвигаются вперед.In VTM4, the size S of the HMVP table is set to 6, which indicates that up to 6 HMVP candidates can be added to the table. When inserting a new motion candidate into a table, a limited first-in-first-out (FIFO) rule is used in which a redundancy check is first applied to determine if there is an identical HMVP in the table. If an identical HMVP exists in the table, the identical HMVP is removed from the table and all HMVP candidates are further promoted.

Кандидаты HMVP могут использоваться в списке кандидатов на слияние/процессе построения списка AMVP. Самые последние несколько кандидатов HMVP в таблице проверяются по порядку и вносятся в список кандидатов после кандидата TMVP. Проверка избыточности применяется на кандидатах HMVP для пространственного или временного кандидата на слияние. HMVP candidates may be used in the merge candidate list/AMVP list building process. The most recent few HMVP candidates in the table are checked in order and listed after the TMVP candidate. A redundancy check is applied on HMVP candidates for a spatial or temporal merge candidate.

Для сокращения количества операций по проверке избыточности вводятся следующие упрощения:To reduce the number of redundancy check operations, the following simplifications are introduced:

Количество кандидатов HMPV, используемых для формирования списка слияния, устанавливается как (N <= 4)? M: (8 – N), где N указывает количество существующих кандидатов в списке слияния и M указывает количество доступных кандидатов HMVP в таблице.Is the number of HMPV candidates used to form the merge list set to (N <= 4)? M: (8 - N) where N indicates the number of existing candidates in the merge list and M indicates the number of available HMVP candidates in the table.

Когда общее количество доступных кандидатов на слияние равно максимально разрешенному количеству кандидатов на слияние минус 1, процесс построения списка кандидатов на слияние из HMVP завершается.When the total number of available merge candidates is equal to the maximum number of merge candidates allowed minus 1, the process of building the merge candidate list from the HMVP ends.

В проект VVC Draft, подобный режиму Inter, вводится режим IBC.In the VVC Draft project, similar to the Inter mode, the IBC mode is introduced.

Копия блока с внутрикадровым предсказанием (Intra block copy, IBC) является инструментом, принятым в расширениях HEVC на SCC. Он значительно повышает эффективность кодирования материалов контента экрана. Так как режим IBC реализуется как режим кодирования на блочном уровне, совпадение блоков (block matching, BM) выполняется в кодере, чтобы найти оптимальный вектор блока (или вектор движения) для каждого CU. Здесь вектор движения используется для указания смещения от текущего блока к опорному блоку, который уже реконструирован внутри текущего изображения. Вектор движения яркости блока CU, кодированного с использованием IBC, обладает целочисленной точностью. Вектор движения цветности также отсекается с целочисленной точностью. При объединении с AMVR режим IBC может переключаться между 1-элементной точностью и 4-х элементной точностью вектора движения. CU, кодированный с использованием IBC, рассматривается как третий режим предсказания, отличный от внутрикадрового или межкадрового режимов. Block copy with intra-frame prediction (Intra block copy, IBC) is a tool adopted in the HEVC extensions on SCC. It greatly improves the efficiency of encoding screen content materials. Since the IBC mode is implemented as a block-level coding mode, block matching (BM) is performed in the encoder to find the optimal block vector (or motion vector) for each CU. Here, the motion vector is used to indicate the offset from the current box to a reference box that has already been reconstructed inside the current image. The luminance motion vector of a CU encoded using IBC has integer precision. The chroma motion vector is also truncated with integer precision. When combined with AMVR, the IBC mode can switch between 1-element precision and 4-element motion vector precision. A CU encoded using IBC is regarded as a third prediction mode other than intra or inter modes.

Для уменьшения потребления памяти и сложности декодера, IBC в VTM4 позволяет использовать реконструированный участок заданной области, содержащий текущий CTU. Это ограничение позволяет реализовывать для аппаратных реализаций режим IBC, используя локальную память, выполненную на микросхеме. To reduce memory consumption and decoder complexity, IBC in VTM4 allows the use of a reconstructed section of a given area containing the current CTU. This limitation allows hardware implementations to implement IBC mode using local on-chip memory.

На стороне кодера для IBC выполняют оценку движения, основанную на хеше. Кодер выполняет проверку RD для блоков, у которых ширина или высота не больше 16 выборок яркости. Для режима без слияния поиск блочных векторов выполняется, используя сначала поиск, основанный на хеше. Если хэш-поиск не дает действительного кандидата, будет выполняться согласование блоков, основанное на локальном поиске. On the encoder side, the hash-based motion estimation is performed for the IBC. The encoder performs an RD check for blocks that have a width or height of no more than 16 luma samples. For non-merge mode, block vector searches are performed using a hash-based search first. If the hash lookup does not yield a valid candidate, block matching will be performed based on the local lookup.

В поиске, основанном на хеше, совпадение хеш-ключа (32-разрядный CRC) между текущим блоком и опорным блоком распространяется на все разрешенные размеры блоков. Вычисление хеш-ключа для каждого положения в текущем изображении основывается на субблоках 4x4. Для текущего блока большего размера хеш-ключ определяется так, чтобы он совпадал с хеш-ключом опорного блока, когда все хеш-ключи всех субблоков 4×4 совпадают с хеш-ключами в соответствующих опорных местоположениях. Если определено, что хеш-ключи множества ссылочных блоков совпадают с текущим блоком, вычисляют затраты векторных блоков для каждого из совпадающих опорных блоков и выбирают блок с минимальными затратами.In a hash-based search, a hash key match (32-bit CRC) between the current block and the reference block extends to all allowed block sizes. The hash key calculation for each position in the current image is based on 4x4 sub-blocks. For the current larger block, the hash key is determined to match the hash key of the reference block when all hash keys of all 4×4 sub-blocks match the hash keys at the respective reference locations. If it is determined that the hash keys of the set of reference blocks match the current block, the vector block cost for each of the matching reference blocks is calculated and the block with the lowest cost is selected.

При поиске совпадения блоков диапазон поиска устанавливают равным N выборкам влево и вверх от текущего блока внутри текущего CTU. В начале CTU значение N инициализируют равным 128, если нет никакого временного опорного изображения, или инициализируют равным 64, если существует по меньшей мере одно временное опорное изображение. Показатель совпадений хеша определяют как процент выборок в CTU, для которых обнаружено совпадение при использовании поиска, основанного на хеше. При кодировании текущего CTU, если показатель совпадений хеша ниже 5%, N уменьшают наполовину. When searching for a block match, the search range is set to N samples to the left and up of the current block within the current CTU. At the start of the CTU, the value of N is initialized to 128 if there is no temporal reference picture, or is initialized to 64 if at least one temporal reference picture exists. The hash hit rate is defined as the percentage of samples in the CTU that are matched using a hash-based search. When encoding the current CTU, if the hash hit rate is below 5%, N is halved.

На уровне CU режим IBC сообщают с помощью флага и он может сообщаться как режим IBC AMVP или режим пропуска/слияния IBC следующим образом:At the CU level, the IBC mode is signaled with a flag and may be signaled as the AMVP IBC mode or the IBC pass/merge mode as follows:

Режим пропуска/слияния IBC: индекс кандидата на слияние используют для указания, какие блочные векторы в списке из соседних кодированных блоков кандидатов IBC используют для предсказания текущего блока. Список слияний состоит из пространственных, HMVP и попарных кандидатов.IBC Skip/Merge Mode: The merge candidate index is used to indicate which block vectors in the list of neighboring encoded IBC candidate blocks are used to predict the current block. The merge list consists of spatial, HMVP, and pairwise candidates.

Режим IBC AMVP: разность блочных векторов кодируется таким же образом как разность векторов движения. Способ предсказания блочных векторов использует двух кандидатов в качестве предикторов, одного от левого соседа и одного от верхнего соседа (если кодирован IBC). Когда один из соседей недоступен, в качестве предиктора будет использоваться блочный вектор по умолчанию. Флаг сообщается, чтобы указать индекс предиктора блочного вектора.IBC AMVP mode: block vector difference is encoded in the same way as motion vector difference. The block vector prediction method uses two candidates as predictors, one from the left neighbor and one from the top neighbor (if IBC coded). When one of the neighbors is unavailable, the default block vector will be used as a predictor. The flag is reported to indicate the block vector predictor index.

Поскольку IBC ввел режим слияния/пропуска IBC и режим IBC AMVP, существует дополнительный список на слияние IBC и список AMVP, который будет создан в VVC Draft 4.0.Since IBC introduced IBC merge/skip mode and IBC AMVP mode, there is an additional IBC merge list and AMVP list that will be created in VVC Draft 4.0.

Поскольку только пространственные кандидаты (левый соседний блок A1, верхний соседний блок B1, левый нижний соседний блок A0, правый верхний соседний блок B0 и левый верхний соседний блок B2, показанные на фиг. 6), кандидаты HMVP (H1 … Hk, где k равен максимальному размеру списка HMVP) и попарные кандидаты используются при построении списка слияния IBC в VVC Draft 4.0, возможны следующие сокращения, выполняемые во время построения списка слияния IBC: Since only the spatial candidates (Left Neighbor A1, Top Neighbor B1, Left Bottom Neighbor A0, Right Top Neighbor B0, and Left Top Neighbor B2 shown in Fig. 6), the HMVP candidates (H1 ... Hk, where k is maximum HMVP list size) and pairwise candidates are used when building the IBC merge list in VVC Draft 4.0, the following reductions are possible when building the IBC merge list:

Сокращение между A1 и B1Reduction between A1 and B1

Сокращение между A0 и A1 Reduction between A0 and A1

Сокращение между B0 и B1Reduction between B0 and B1

Сокращение между B2 и A1Reduction between B2 and A1

Сокращение между B2 и B1Reduction between B2 and B1

Сокращение между последним кандидатом Hk HMVP и A1Reduction between last candidate Hk HMVP and A1

Сокращение между последним кандидатом Hk HMVP и B1Reduction between last candidate Hk HMVP and B1

Сокращение между предпоследним кандидатом Hk-1 HMVP и A1Reduction between penultimate candidate H k-1 HMVP and A1

Сокращение между предпоследним кандидатом Hk-1 HMVP и B1Reduction between penultimate candidate H k-1 HMVP and B1

Процесс сокращения означает сравнение, являются ли два кандидата на слияние IBC одинаковыми. А именно, процесс сокращения сравнивает, являются ли одинаковыми блочные векторы между двумя кандидатами на слияние IBC.The reduction process means comparing whether two IBC merger candidates are the same. Namely, the reduction process compares whether the block vectors between two IBC merge candidates are the same.

В итоге, для построения списка слияния IBC текущего блока максимально необходимо 9 сокращений.As a result, to build the IBC merge list of the current block, a maximum of 9 reductions are needed.

В кодере и декодере сокращение является задержкой процесса построения списка слияния. Поскольку на каждом этапе сокращения проверяют условие “если”, дальнейший процесс построения списка слияния выполняется в зависимости от проверок этого условия “если”. Чем больше существует сокращений при построении списка кандидатов на слияние, тем более сложными являются процессы в кодере и декодере. Для снижения сложности при построении списка слияния вводятся нижеследующие решения.In the encoder and decoder, the reduction is a delay in the merge list building process. Since the “if” condition is checked at each step of the reduction, the further process of building the merge list is performed depending on the checks of this “if” condition. The more shortcuts there are in constructing the merge candidate list, the more complex the processes in the encoder and decoder are. To reduce the complexity when building a merge list, the following solutions are introduced.

Решение 1Solution 1

Далее, левый (A1) и верхний (В1) пространственные соседние блоки важны для предсказания текущего блока, используя режим IBC. В решении 1 сокращение пространственных соседних блоков между A1 и B1 сохраняется, остальное сокращение пространственных соседних блоков удаляется. Сокращение кандидатов HMVP сохраняется. В варианте осуществления возможны следующие сокращения, выполняемые во время построения списка слияния IBC:Further, the left (A1) and top (B1) spatial neighbor blocks are important for predicting the current block using the IBC mode. In Solution 1, the spatial neighbor reduction between A1 and B1 is retained, the remaining spatial neighbor reduction is removed. The reduction in HMVP candidates is maintained. In an embodiment, the following reductions are possible during construction of the IBC merge list:

Сокращение между A1 и B1Reduction between A1 and B1

Сокращение между последним кандидатом Hk HMVP и A1Reduction between last candidate H k HMVP and A1

Сокращение между последним кандидатом Hk HMVP и B1Reduction between last candidate H k HMVP and B1

Сокращение между предпоследним кандидатом Hk-1 HMVP и A1Reduction between penultimate candidate H k-1 HMVP and A1

Сокращение между предпоследним кандидатом Hk-1 HMVP и B1.Reduction between penultimate candidate H k-1 HMVP and B1.

В этом случае, максимальное количество сокращений для построения списка кандидатов на слияние IBC уменьшается с 9 до 5. Решение значительно снижает сложность построения списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions for building the IBC merge candidate list is reduced from 9 to 5. The solution greatly reduces the complexity of building the IBC merge list for both the encoder and the decoder.

В данном примере конкретный список на слияние IBC создается следующим образом:In this example, a specific IBC merge list is created as follows:

Если соседний блок A1 доступен и использует режим IBC, блочный вектор блока A1 вставляется в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или A1 не использует режим IBC), блочный вектор блока A1 не вставляется в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, the block vector of block A1 is inserted into the current block's IBC merge candidate list. Otherwise (A1 is not available or A1 is not using IBC mode), the block vector of block A1 is not inserted into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор B1 тем же самым, что и A1. Если блочный вектор B1 не является таким же, как блочный вектор A1, блочный вектор блока B1 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B1 не использует режим IBC), блочный вектор блока B1 не вставляют в список кандидатов на слияние IBC текущего блока (сокращение А1 и B1).If neighboring block B1 is available and using IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B1 is the same as block vector A1, or B1 is not available, or B1 does not use IBC mode), the block vector of block B1 is not inserted into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, блочный вектор блока B0 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (B0 недоступен или B0 не использует режим IBC), блочный вектор блока B0 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If a neighboring block B0 is available and using the IBC mode, the block vector of block B0 is inserted into the current block's IBC merge candidate list. Otherwise (B0 is not available or B0 is not using IBC mode), the block vector of block B0 is not inserted into the current block's IBC merge candidate list (no pruning).

Если соседний блок A0 доступен и использует режим IBC, блочный вектор блока A0 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (A0 недоступен или A0 не использует режим IBC), блочный вектор блока A0 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If a neighboring block A0 is available and using the IBC mode, the block vector of block A0 is inserted into the current block's IBC merge candidate list. Otherwise (A0 is not available or A0 is not using IBC mode), the block vector of block A0 is not inserted into the current block's IBC merge candidate list (no pruning).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше 4, блочный вектор блока B2 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (B2 недоступен или B2 не использует режим IBC, или текущий размер списка кандидатов на слияние IBC не меньше 4), блочный вектор блока B2 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If neighboring block B2 is available and using the IBC mode and the current size of the IBC merge candidate list is less than 4, the block vector of block B2 is inserted into the current block's IBC merge candidate list. Otherwise (B2 is not available, or B2 is not using IBC mode, or the current IBC merge candidate list size is at least 4), B2's block vector is not inserted into the current block's IBC merge candidate list (no reduction).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один; и блочный вектор Hk не такой же, как A1 и B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC, или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1, Hk и B1).If the last candidate H k HMVP is available and using the IBC mode and the current size of the IBC merge candidate list is less than the value equal to the maximum number of IBC merge candidates minus one; and the block vector H k is not the same as A1 and B1, insert the block vector H k into the IBC merge candidate list of the current block. Otherwise (H k is not available or H k is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k is the same as block vector A1, or block the vector H k is the same as the block vector B1), do not insert the block vector Hk into the IBC merge candidate list of the current block (abbreviation H k and A1, H k and B1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка на слияние IBC меньше, чем значение, равное максимальному количеству кандидатов на слияние IBC минус один и блочный вектор Hk-1 является не таким же, как A1 и B1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC, или текущий размер списка кандидатов на слияние IBC не меньше, чем максимальное количество кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор A1, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор блока Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и A1, Hk-1 и B1).If the penultimate Hk-1 HMVP candidate is available and using IBC mode and the current size of the IBC merge list is less than the value equal to the maximum number of IBC merge candidates minus one and the block vector H k-1 is not the same as A1 and B1, inserting the block vector H k-1 into the IBC merge candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same block vector A1, or block vector H k-1 is the same as block vector B1), do not insert block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and A1, H k-1 and B1).

Остальных кандидатов HMVP вводят по одному, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC кандидатов меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).The remaining HMVP candidates are entered one at a time if the candidate is available and using the IBC mode and the current size of the IBC merger candidate list of candidates is less than the maximum number of IBC merger candidates minus one (no reduction).

Вводят попарных кандидатов, если текущий размер списка кандидатов на слияние IBC меньше, чем максимальное количество кандидатов на слияние IBC (без сокращения).Pairwise candidates are entered if the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 2Solution 2

Далее, левый (A1) и верхний пространственные соседние блоки (B1) важны для предсказания текущего блока, используя режим IBC. В решении 2 пространственный соседний блок A1 и B1 сохраняют для введения в список кандидатов на слияние IBC, остальные кандидаты пространственного соседнего блока удаляются. Сокращение кандидатов HMVP сохраняют таким, как есть. В варианте осуществления последующее сокращение может выполняться во время построения списка слияния IBC:Further, the left (A1) and top spatial neighboring blocks (B1) are important for predicting the current block using the IBC mode. In Solution 2, spatial neighbor block A1 and B1 are retained for inclusion in the IBC merge candidate list, the remaining spatial neighbor block candidates are removed. The reduction of HMVP candidates is kept as is. In an embodiment, the following reduction may be performed during the construction of the IBC merge list:

Сокращение между A1 и B1Reduction between A1 and B1

Сокращение между последним кандидатом Hk кандидата HMVP и A1Reduction between last HMVP candidate H k and A1

Сокращение между последним кандидатом Hk HMVP и B1Reduction between last candidate H k HMVP and B1

Сокращение между предпоследним кандидатом Hk-1 HMVP и A1Reduction between penultimate candidate H k-1 HMVP and A1

Сокращение между предпоследним кандидатом Hk-1 HMVP и B1Reduction between penultimate candidate H k-1 HMVP and B1

В этом случае максимальное количество сокращения для построения списка кандидатов на слияние IBC текущего блока уменьшается с 9 до 5. Решение значительно снижает сложность построения списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions for building the IBC merge candidate list of the current block is reduced from 9 to 5. The solution greatly reduces the complexity of building the IBC merge list for both the encoder and the decoder.

В данном примере конкретный список кандидатов на слияние IBC создается следующим образом:In this example, a specific list of IBC merger candidates is created as follows:

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или A1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert the block vector of block A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор B1 таким же самым, что и A1. Если блочный вектор B1 не является таким же, как блочный вектор A1, вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен, или B1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (A1 и сокращение B1).If neighboring block B1 is available and using the IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (B1's block vector is the same as A1's block vector, or B1 is not available, or B1 does not use IBC mode), do not insert A1's block vector into the current block's IBC merge candidate list (A1 and B1 abbreviation).

Если последний кандидат Hk HMVP доступен и использует режим IBC и размер текущего списка кандидатов на слияние IBC меньше, чем значение, равное максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk является не таким же, как A1 и B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае, (Hk недоступен или Hk не использует режим IBC, или текущий размер списка кандидатов на слияние IBC не меньше, чем максимальное количество кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, что и блочный вектор A1, или блочный вектор Hk является таким же как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращенно, Hk и A1, Hk и B1).If the last HMVP candidate H k is available and uses the IBC mode and the size of the current IBC merge candidate list is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1 and B1, insert block vector H k in the list of IBC merge candidates of the current block. Otherwise, (H k is not available or H k is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as the block vector A1 , or block vector H k is the same as block vector B1), do not insert block vector H k into the IBC merge candidate list of the current block (abbreviated as H k and A1, H k and B1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC, и текущий размер списка кандидатов на слияние IBC меньше, чем значение, равное максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не такой же, как A1 и B1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше, чем максимальное количество кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор A1, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и A1, Hk-1 и B1).If the penultimate HMVP candidate H k -1 is available and using IBC mode, and the current size of the IBC merge candidate list is less than the value equal to the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1 and B1 insert the block vector H k-1 into the IBC merge candidate list of the current block. Otherwise (H k-1 is not available, or H k-1 is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as block vector A1, or block vector H k-1 is the same as block vector B1), do not insert block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and A1, H k- 1 and B1).

Вводят остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше, чем максимальное количество кандидатов на слияние IBC минус один (без сокращения).Enter the remaining HMVP candidates one by one if the candidate is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

Вводят попарного кандидата, если текущий размер списка кандидатов на слияние IBC меньше, чем максимальное количество кандидатов на слияние IBC (без сокращения).A pairwise candidate is entered if the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 3Solution 3

В соответствии с решением 3, сокращение векторов блока пространственного соседнего блока остается таким же. Для сокращения кандидатов HMVP блочный вектор последнего кандидата Hk HMVP сокращается с помощью пространственного соседнего блока A1 и B1 векторного блока. Сокращение остальных кандидатов HMVP удаляют. В варианте осуществления возможно нижеследующее сокращение, выполняемое во время построения списка слияния IBC:According to solution 3, the reduction of the space neighbor block vectors remains the same. To reduce the HMVP candidates, the block vector of the last HMVP candidate H k is reduced by the space neighbor block A1 and B1 of the vector block. The reduction of the remaining HMVP candidates is removed. In an embodiment, the following reduction is possible during construction of the IBC merge list:

Сокращение между A1 и B1Reduction between A1 and B1

Сокращение между A0 и A1Reduction between A0 and A1

Сокращение между B0 и B1Reduction between B0 and B1

Сокращение между B2 и A1Reduction between B2 and A1

Сокращение между B2 и B1Reduction between B2 and B1

Сокращение между последним кандидатом Hk HMVP и A1Reduction between last candidate H k HMVP and A1

Сокращение между последним кандидатом Hk HMVP и B1.Reduction between the last candidate H k HMVP and B1.

В этом случае максимальное количество сокращения для построения списка кандидатов на слияние IBC уменьшается с 9 до 7. Решение значительно снижает сложность построения списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of cuts for building the IBC merge candidate list is reduced from 9 to 7. The solution greatly reduces the complexity of building the IBC merge list for both the encoder and the decoder.

В данном примере конкретный список кандидатов на слияние IBC создается следующим образом:In this example, a specific list of IBC merger candidates is created as follows:

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или A1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов не слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert the block vector of block A1 into the current block's non-IBC candidate list (the first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор B1 таким же, как A1. Если блочный вектор B1 не такой же, как блочный вектор A1, вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (A1 и сокращение B1).If neighboring block B1 is available and using IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, insert the block vector of block B1 into the IBC merge candidate list of the current block. Otherwise (B1's block vector is the same as A1's block vector, or B1 is not available, or B1 does not use IBC mode), do not insert A1's block vector into the current block's IBC merge candidate list (A1 and B1 abbreviation).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор B0 таким же, как B1. Если блочный вектор B0 не такой же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B0 такой же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (B0 и сокращение B1).If neighboring block B0 is available and using IBC mode, reduce (or determine) whether block vector B0 is the same as B1. If block vector B0 is not the same as block vector B1, insert the block vector of block B0 into the IBC merge candidate list of the current block. Otherwise (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the IBC merge candidate list of the current block (B0 and abbreviation B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор A0 таким же, как A1. Если блочный вектор A0 не такой же как блочный вектор A1, вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор A0 такой же, как блочный вектор A1, или A0 не доступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (A0 и сокращение A1).If neighboring block A0 is available and using the IBC mode, reduce (or determine) whether block vector A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert the block vector of block A0 into the IBC merge candidate list of the current block. Otherwise (block vector A0 is the same as block vector A1, or A0 is not available, or A0 is not in IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (A0 and A1 abbreviation).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли блочный вектор B2 таким же, как A1, и является ли блочный вектор B2, таким же, как B1. Если блочный вектор B2 не такой же, как блочный вектор A1, и блочный вектор B2 не такой же как B1, вставляют блочный вектор блока B2 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B2 такой же, как блочный вектор A1 или B1 или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 B1).If neighboring block B2 is available and using IBC mode and the current IBC merge list size is less than 4, reduce (or determine) whether block vector B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, the block vector of block B2 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B2 is the same as block vector A1 or B1 or B0 is not available or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 B1 ).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка размер списка кандидатов IBC меньше, чем значение, равное максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же как A1 и B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше, чем максимальное количество кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1, Hk и B1).If the last HMVP candidate H k is available and using IBC mode and the current list size IBC candidate list size is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1 and B1, insert the block vector H k in the list of IBC merger candidates of the current block. Otherwise (H k is not available or H k is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k is the same as block vector A1, or block vector H k is the same as block vector B1), do not insert block vector H k into the IBC merge candidate list of the current block (abbreviation H k and A1, H k and B1).

Вводят остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на IBC меньше, чем количество, равное максимальному количеству кандидатов на слияние IBC минус один (без сокращения).Enter the remaining HMVP candidates one by one if the candidate is available and using the IBC mode and the current size of the IBC candidate list is less than the number equal to the maximum number of IBC merger candidates minus one (no reduction).

Вводят попарного кандидата, если текущий размер списка кандидатов на слияние IBC меньше, чем максимальное количество кандидатов на слияние IBC (без сокращения).A pairwise candidate is entered if the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 4Solution 4

В соответствии с решением 4, сокращение векторного блока для пространственного соседнего блока остается тем же самым. Для сокращения кандидатов HMVP блочный вектор последнего кандидата Hk HMVP и предпоследний кандидат Hk-1 HMVP сокращают с помощью пространственного соседнего блока A1 векторного блока. Остальные сокращения кандидатов HMVP удаляются. В варианте осуществления возможно нижеследующее сокращение, выполняемое во время построения списка слияния IBC: According to decision 4, the vector block reduction for the spatial neighboring block remains the same. To reduce the HMVP candidates, the block vector of the last HMVP candidate H k and the penultimate HMVP candidate H k-1 are reduced by the spatial neighbor block A1 of the vector block. The remaining HMVP candidate abbreviations are removed. In an embodiment, the following reduction is possible during construction of the IBC merge list:

Сокращение между А1 и В1Abbreviation between A1 and B1

Сокращение между А0 и А1Abbreviation between A0 and A1

Сокращение между В0 и В1Reduction between B0 and B1

Сокращение между В2 и А1Abbreviation between B2 and A1

Сокращение между В2 и В1Reduction between B2 and B1

Сокращение между последним кандидатом Hk HMVP и A1Reduction between last candidate H k HMVP and A1

Сокращение между последним кандидатом Hk-1 HMVP и A1Reduction between last candidate H k-1 HMVP and A1

В этом случае максимальное количество сокращений для построения списка кандидатов на слияние IBC уменьшается с 9 до 7. Решение значительно снижает сложность построения списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions for building the IBC merge candidate list is reduced from 9 to 7. The solution greatly reduces the complexity of building the IBC merge list for both the encoder and the decoder.

В данном примере конкретный список кандидатов на слияние IBC создают следующим образом:In this example, a specific list of IBC merger candidates is created as follows:

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок В1 таким же, как А1. Если блочный вектор B1 не такой же, как блочный вектор A1, вставляют блочный вектор B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 не такой же, как блочный вектор A1, или B1 недоступен или B1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1).If neighboring block B1 is available and using IBC mode, reduce (or determine) whether vector block B1 is the same as A1. If block vector B1 is not the same as block vector A1, block vector B1 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B1 is not the same as block vector A1, or B1 is not available, or B1 does not use IBC mode), do not insert block vector A1 into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок В0 таким же, как B1. Если блочный вектор B0 не такой же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B0 такой же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B0 и B1).If neighboring block B0 is available and using IBC mode, reduce (or determine) whether vector block B0 is the same as B1. If block vector B0 is not the same as block vector B1, insert the block vector of block B0 into the IBC merge candidate list of the current block. Otherwise (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (abbreviation B0 and B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок A0 таким же, как A1. Если блочный вектор A0 не такой же, как блочный вектор A1, вставляют блочный вектор A0 в список кандидатов на слияние IBC текущего блока. В противном случае, (блочный вектор A0 такой же, как блочный вектор A1, или A0 недоступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (сокращение A0 и A1).If neighboring block A0 is available and using IBC mode, reduce (or determine) whether vector block A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert block vector A0 into the IBC merge candidate list of the current block. Otherwise, (block vector A0 is the same as block vector A1, or A0 is not available, or A0 does not use IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (abbreviation A0 and A1).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли векторный блок В2 таким же, как А1, и является ли блочный вектор B2 таким же, как B1. Если блочный вектор B2 не такой же, как блочный вектор A1, и блочный вектор B2 не такой же, как B1, вставляют блочный вектор B2 в список кандидатов на слияние IBC текущего блока. В противном случае, (блочный вектор B2 такой же, как блочный вектор A1 или B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 и B1).If adjacent block B2 is available and using IBC mode and current IBC merge list size is less than 4, reduce (or determine) whether vector block B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, block vector B2 is inserted into the IBC merge candidate list of the current block. Otherwise, (block vector B2 is the same as block vector A1 or B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 and B1).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как A1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, или блочный вектор Hk такой же, как блочный вектор A1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1, insert the block vector H k into list of IBC merger candidates of the current bloc. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is greater than or equal to the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector A1), do not insert the block vector H k into the IBC merge candidate list of the current block (abbreviation H k and A1).

Если последний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не такой же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, или блочный вектор Hk-1 такой же, как блочный вектор A1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и B1).If the last HMVP candidate H k-1 is available and using IBC mode and the current size of the IBC merge candidate list is less than the value equal to the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert the block vector vector H k-1 in the list of IBC merge candidates of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than a value equal to the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as as the block vector A1), do not insert the block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and B1).

Вставляют остальных кандидатов HMVP один на другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше, чем количество, равное максимальному количеству кандидатов на слияние IBC минус один (без сокращения). Insert the remaining HMVP candidates one on top of the other if the candidate is available and using the IBC mode and the current size of the IBC merge candidate list is less than the number equal to the maximum number of IBC merge candidates minus one (no reduction).

Вставляют попарного кандидата, если текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения).Insert a pairwise candidate if the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 5Solution 5

В соответствии с решением 5, сокращение векторного блока для пространственного соседнего блока остается тем же самым. Для сокращения кандидатов HMVP блочный вектор последнего кандидата Hk HMVP и предпоследний кандидат Hk-1 HMVP сокращают с помощью пространственного соседнего блока B1 векторного блока. Остальные сокращения кандидатов HMVP удаляют. В варианте осуществления возможно нижеследующее сокращение, выполняемое во время построения списка слияния IBC: According to decision 5, the vector block reduction for the spatial neighboring block remains the same. In order to reduce HMVP candidates, the block vector of the last HMVP candidate H k and the penultimate HMVP candidate H k-1 are reduced by the spatial neighbor block B1 of the vector block. The remaining HMVP candidate abbreviations are deleted. In an embodiment, the following reduction is possible during construction of the IBC merge list:

Сокращение между А1 и В1Abbreviation between A1 and B1

Сокращение между А0 и А1Abbreviation between A0 and A1

Сокращение между В0 и В1Reduction between B0 and B1

Сокращение между В2 и А1Abbreviation between B2 and A1

Сокращение между В2 и В1Reduction between B2 and B1

Сокращение между последним кандидатом Hk HMVP и B1Reduction between last candidate H k HMVP and B1

Сокращение между последним кандидатом Hk-1 HMVP и B1Reduction between last candidate H k-1 HMVP and B1

В этом случае максимальное количество сокращений для построения списка кандидатов на слияние IBC уменьшается с 9 до 7. Решение значительно снижает сложность построения списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions for building the IBC merge candidate list is reduced from 9 to 7. The solution greatly reduces the complexity of building the IBC merge list for both the encoder and the decoder.

В данном примере конкретный список кандидатов на слияние IBC создают следующим образом:In this example, a specific list of IBC merger candidates is created as follows:

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок В1 таким же, как А1. Если блочный вектор B1 не такой же, как блочный вектор A1, вставляют блочный вектор B1 в список кандидатов на слияние IBC текущего блока. В противном случае, (блочный вектор B1 не такой же, как блочный вектор A1, или B1 недоступен или B1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1).If neighboring block B1 is available and using IBC mode, reduce (or determine) whether vector block B1 is the same as A1. If block vector B1 is not the same as block vector A1, block vector B1 is inserted into the IBC merge candidate list of the current block. Otherwise, (block vector B1 is not the same as block vector A1, or B1 is not available, or B1 does not use IBC mode), do not insert block vector A1 into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок В0 таким же, как B1. Если блочный вектор B0 не такой же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае, (блочный вектор B0 такой же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B0 и B1).If neighboring block B0 is available and using IBC mode, reduce (or determine) whether vector block B0 is the same as B1. If block vector B0 is not the same as block vector B1, insert the block vector of block B0 into the IBC merge candidate list of the current block. Otherwise, (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (abbreviation B0 and B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли векторный блок A0 таким же, как A1. Если блочный вектор A0 не такой же, как блочный вектор A1, вставляют блочный вектор A0 в список кандидатов на слияние IBC текущего блока. В противном случае, (блочный вектор A0 такой же, как блочный вектор A1, или A0 недоступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (сокращение A0 и A1).If neighboring block A0 is available and using IBC mode, reduce (or determine) whether vector block A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert block vector A0 into the IBC merge candidate list of the current block. Otherwise, (block vector A0 is the same as block vector A1, or A0 is not available, or A0 does not use IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (abbreviation A0 and A1).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли блочный вектор B2 таким же, как A1, и является ли блочный вектор B2 таким же, как B1. Если блочный вектор B2 не является таким же, как блочный вектор A1, и блочный вектор B2 не является таким же, как B1, вставляют блочный вектор блока B2 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B2 является таким же, как блочный вектор A1 или B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 B1).If neighboring block B2 is available and using IBC mode and the current IBC merge list size is less than 4, reduce (or determine) whether block vector B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, the block vector of block B2 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B2 is the same as block vector A1 or B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 B1).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и B1).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as B1, insert the block vector H k into list of IBC merger candidates of the current bloc. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector B1), do not insert block vector H k in the current block's IBC merge candidate list (abbreviation H k and B1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не является таким же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и B1).If the penultimate HMVP candidate H k-1 is available and using the IBC mode and the current size of the IBC merge candidate list is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert a block vector H k-1 into the IBC merge candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as the block vector vector B1), do not insert block vector H k-1 into the current block merge candidate list IBC (abbreviation H k-1 and B1).

Вставляют остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).Insert the remaining HMVP candidates one by one if the candidate is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

Вставляют парного кандидата, текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения). A paired candidate is inserted, the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 6Solution 6

В соответствии с решением 6, в этом решении разрешают последнего кандидата из списка кандидатов на слияние IBC, использующего режим HMVP, процесс сокращения построения списка кандадатов на слияние в этом решении не изменяется, но этот способ вводит более эффективный способ построения списка слияния. According to solution 6, this solution resolves the last candidate of the IBC merge candidate list using HMVP mode, the merge candidate list building reduction process is not changed in this solution, but this method introduces a more efficient way to build the merge list.

В этом примере конкретный список кандидатов на слияние IBC создается следующим образом.In this example, a specific list of IBC merger candidates is created as follows.

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В1 таким же, как А1. Если блочный вектор B1 не является таким же, как блочный вектор A1, вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1). If neighboring block B1 is available and using IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B1 is the same as block vector A1, or B1 is not available, or B0 does not use IBC mode), do not insert block vector A1 into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В0 таким же, как В1. Если блочный вектор B0 не является таким же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B0 является таким же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B0 и B1). If neighboring block B0 is available and using IBC mode, reduce (or determine) whether block vector B0 is the same as B1. If block vector B0 is not the same as block vector B1, the block vector of block B0 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (abbreviation B0 and B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор A0 таким же, как А1. Если блочный вектор A0 не является таким же, как блочный вектор A1, вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор A0 является таким же, как блочный вектор A1, или A0 недоступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (сокращение A0 и A1). If neighboring block A0 is available and using IBC mode, reduce (or determine) whether block vector A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert the block vector of block A0 into the IBC merge candidate list of the current block. Otherwise (block vector A0 is the same as block vector A1, or A0 is not available, or A0 does not use IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (abbreviation A0 and A1).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли блочный вектор B2 таким же, как A1, и является ли блочный вектор B2 таким же, как B1. Если блочный вектор B2 не является таким же, как блочный вектор A1, и блочный вектор B2 не является таким же, как B1, вставляют блочный вектор блока B2 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B2 является таким же, как блочный вектор A1 или B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 и B1).If neighboring block B2 is available and using IBC mode and the current IBC merge list size is less than 4, reduce (or determine) whether block vector B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, the block vector of block B2 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B2 is the same as block vector A1 or B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 and B1).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, и блочный вектор Hk является не таким же, как A1 и B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC, или блочный вектор Hk является таким же, как блочный вектор A1, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1, Hk и B1).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1 and B1, insert the block vector H k into list of IBC merger candidates of the current bloc. Otherwise (H k is not available, or H k is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates, or the block vector H k is the same as the block vector A1, or the block vector H k is the same as the block vector B1), do not insert the block vector H k into the IBC merge candidate list of the current block (abbreviation H k and A1, H k and B1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC, и блочный вектор Hk-1 является не таким же, как A1 и B1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC, или блочный вектор Hk-1 является таким же, как блочный вектор A1, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и A1, Hk-1 и B1).If the penultimate HMVP candidate H k-1 is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates and the block vector H k-1 is not the same as A1 and B1, insert the block vector H k-1 to the IBC merger candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates, or block vector H k-1 is the same as block vector A1 , or block vector H k-1 is the same as block vector B1), do not insert block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and A1, H k-1 and B1) .

Вставляют остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).Insert the remaining HMVP candidates one by one if the candidate is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

Вставляют парного кандидата, текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения). A paired candidate is inserted, the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 7Solution 7

В соответствии с решением 7, сокращение блочных векторов пространственного соседнего блока сохраняется таким же. Для сокращения кандидатов HMVP блочный вектор последнего кандидата Hk HMVP и предпоследнего кандидата Hk-1 HMVP сокращается с помощью блочного вектора первого пространственного соседнего блока A1 и B1. Если ни один из блоков A1 или B1 уже не присутствует в списке слияния IBC, то никакой кандидат HMVP не сокращается с помощью пространственного кандидата.According to solution 7, the reduction of block vectors of the spatial neighboring block is kept the same. To reduce HMVP candidates, the block vector of the last HMVP candidate H k and the penultimate HMVP candidate H k-1 is reduced by the block vector of the first spatial neighboring block A1 and B1. If neither of the blocks A1 or B1 is already present in the IBC merge list, then no HMVP candidate is reduced by the spatial candidate.

Сокращения остальных кандидатов HMVP удаляются. В варианте осуществления во время создания списка слияния IBC в процессе сокращения в наихудшем случае возможны нижеследующие сокращенияAbbreviations of other HMVP candidates are removed. In an embodiment, during the creation of the IBC merge list during the reduction process, the following reductions are possible in the worst case

Сокращение между A1 и B1Reduction between A1 and B1

Сокращение между A0 и A1Reduction between A0 and A1

Сокращение между B0 и B1Reduction between B0 and B1

Сокращение между B2 и A1Reduction between B2 and A1

Сокращение между B2 и B1Reduction between B2 and B1

Сокращение между последним кандидатом Hk HMVP и A1 или Hk и B1Reduction between last candidate H k HMVP and A1 or H k and B1

Сокращение между предпоследним кандидатом Hk-1 HMVP и A1 или Hk-1 и B1Reduction between penultimate candidate H k-1 HMVP and A1 or H k-1 and B1

В этом случае максимальное количество сокращений для создания списка кандидатов на слияние IBC текущего блока уменьшается с 9 до 7. Решение значительно снижает сложность создания списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions to create the IBC merge candidate list of the current block is reduced from 9 to 7. The solution significantly reduces the complexity of creating the IBC merge list for both the encoder and decoder.

В этом примере конкретный список кандидатов на слияние IBC создается следующим образом.In this example, a specific list of IBC merger candidates is created as follows.

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В1 таким же, как А1. Если блочный вектор B1 не является таким же, как блочный вектор A1, вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1). If neighboring block B1 is available and using IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B1 is the same as block vector A1, or B1 is not available, or B0 does not use IBC mode), do not insert block vector A1 into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В0 таким же, как В1. Если блочный вектор B0 не является таким же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B0 является таким же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B0 и B1). If neighboring block B0 is available and using IBC mode, reduce (or determine) whether block vector B0 is the same as B1. If block vector B0 is not the same as block vector B1, the block vector of block B0 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (abbreviation B0 and B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор A0 таким же, как А1. Если блочный вектор A0 не является таким же, как блочный вектор A1, вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор A0 является таким же, как блочный вектор A1, или A0 недоступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (сокращение A0 и A1). If neighboring block A0 is available and using IBC mode, reduce (or determine) whether block vector A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert the block vector of block A0 into the IBC merge candidate list of the current block. Otherwise (block vector A0 is the same as block vector A1, or A0 is not available, or A0 does not use IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (abbreviation A0 and A1).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли блочный вектор B2 ким же, как A1, и является ли блочный вектор B2 таким же, как B1. Если блочный вектор B2 не является таким же, как блочный вектор A1, и блочный вектор B2 не является таким же, как B1, вставляют блочный вектор блока B2 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B2 является таким же, как блочный вектор A1 или B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 B1).If adjacent block B2 is available and using IBC mode and the current IBC merge list size is less than 4, reduce (or determine) whether block vector B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, the block vector of block B2 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B2 is the same as block vector A1 or B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 B1).

Если блок A1 уже присутствует в списке на слияние IBC, то тогдаIf block A1 is already on the IBC merge list, then

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как A1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1, insert the block vector H k into the candidate list at merge the IBC of the current block. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector A1), do not insert block vector H k in the current block's IBC merge candidate list (abbreviation H k and A1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не является таким же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор A1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и A1).If the penultimate HMVP candidate H k-1 is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert the block vector H k-1 to the IBC merger candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as the block vector vector A1), do not insert the block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and A1).

В противном случае, если A1 отсутствует в списке на слияние IBC и B1 уже присутствует в списке на слияние IBC, то тогда:Otherwise, if A1 is not on the IBC merge list and B1 is already on the IBC merge list, then:

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и B1).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as B1, insert the block vector H k into list of IBC merger candidates of the current bloc. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector B1), do not insert block vector H k in the current block's IBC merge candidate list (abbreviation H k and B1).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не является таким же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и B1).If the penultimate HMVP candidate H k-1 is available and using the IBC mode and the current size of the IBC merge candidate list is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert a block vector H k-1 into the IBC merge candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as the block vector vector B1), do not insert block vector H k-1 into the current block merge candidate list IBC (abbreviation H k-1 and B1).

В противном случае, если A1 и B1 уже присутствуют в списке на слияние IBC, то тогда:Otherwise, if A1 and B1 are already on the IBC merge list, then:

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (без сокращения).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, insert the block vector H k into the current block's IBC merge candidate list. Otherwise ( Hk is not available or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one), do not insert the block vector Hk into the current block's IBC merge candidate list (without abbreviations).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (без сокращения).If a penultimate HMVP candidate H k-1 is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, insert the block vector H k-1 into the current block's IBC merge candidate list. Otherwise (H k-1 is not available, or H k-1 is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one), do not insert the block vector H k-1 into the IBC merge candidate list. merging the IBC of the current block (no reduction).

Вставляют остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).Insert the remaining HMVP candidates one by one if the candidate is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

Вставляют парного кандидата, текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения). A paired candidate is inserted, the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 8Solution 8

В соответствии с решением 8, сокращение блочных векторов пространственного соседнего блока сохраняется таким же. Для сокращения кандидатов HMVP:According to solution 8, the reduction of the block vectors of the spatial neighboring block is kept the same. To reduce HMVP candidates:

блочный вектор последнего кандидата Hk HMVP и предпоследнего кандидата Hk-1 HMVP сокращаются с помощью блочного вектора пространственного соседнего блока A1, когда A1 уже присутствует в списке на слияние IBC и B1 не присутствует в списке на слияние IBC;the block vector of the last HMVP candidate H k and the penultimate HMVP candidate H k-1 are reduced by the block vector of the space neighbor block A1 when A1 is already in the IBC merge list and B1 is not in the IBC merge list;

блочный вектор последнего кандидата Hk HMVP и предпоследнего кандидата Hk-1 HMVP сокращаются с помощью блочного вектора пространственного соседнего блока B1, когда B1 уже присутствует в списке на слияние IBC и A1 не присутствует в списке на слияние IBC;the block vector of the last HMVP candidate H k and the penultimate HMVP candidate H k-1 are reduced by the block vector of the space neighbor block B1 when B1 is already in the IBC merge list and A1 is not in the IBC merge list;

блочный вектор последнего кандидата Hk HMVP сокращается с помощью блочного вектора пространственного соседнего блока B1, когда оба блока, A1 и B1, уже присутствует в списке на слияние IBC.the block vector of the last candidate H k HMVP is reduced by the block vector of the spatial neighboring block B1 when both blocks A1 and B1 are already in the IBC merge list.

Если ни один из блоков A1 или B1 уже не присутствует в списке слияния IBC, то никакой кандидат HMVP не сокращается с помощью пространственного кандидата.If neither of the blocks A1 or B1 is already present in the IBC merge list, then no HMVP candidate is reduced by the spatial candidate.

В этом случае максимальное количество сокращений для создания списка кандидатов на слияние IBC текущего блока уменьшается с 9 до 7.In this case, the maximum number of reductions to create the list of candidates for the IBC merger of the current block is reduced from 9 to 7.

Решение значительно снижает сложность создания списка слияния IBC как для кодера, так и для декодера.The solution greatly reduces the complexity of creating an IBC merge list for both the encoder and decoder.

В этом примере конкретный список кандидатов на слияние IBC создается следующим образом.In this example, a specific list of IBC merger candidates is created as follows.

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В1 таким же, как А1. Если блочный вектор B1 не является таким же, как блочный вектор A1, вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1). If neighboring block B1 is available and using IBC mode, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B1 is the same as block vector A1, or B1 is not available, or B0 does not use IBC mode), do not insert block vector A1 into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если соседний блок B0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор В0 таким же, как В1. Если блочный вектор B0 не является таким же, как блочный вектор B1, вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B0 является таким же, как блочный вектор B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B0 и B1). If neighboring block B0 is available and using IBC mode, reduce (or determine) whether block vector B0 is the same as B1. If block vector B0 is not the same as block vector B1, the block vector of block B0 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B0 is the same as block vector B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (abbreviation B0 and B1).

Если соседний блок A0 доступен и использует режим IBC, сокращают (или определяют), является ли блочный вектор A0 таким же, как А1. Если блочный вектор A0 не является таким же, как блочный вектор A1, вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор A0 является таким же, как блочный вектор A1, или A0 недоступен или A0 не использует режим IBC), не вставляют блочный вектор блока A0 в список кандидатов на слияние IBC текущего блока (сокращение A0 и A1). If neighboring block A0 is available and using IBC mode, reduce (or determine) whether block vector A0 is the same as A1. If block vector A0 is not the same as block vector A1, insert the block vector of block A0 into the IBC merge candidate list of the current block. Otherwise (block vector A0 is the same as block vector A1, or A0 is not available, or A0 does not use IBC mode), do not insert block vector A0 into the current block's IBC merge candidate list (abbreviation A0 and A1).

Если соседний блок B2 доступен и использует режим IBC и текущий размер списка слияния IBC меньше 4, сокращают (или определяют), является ли блочный вектор B2 ким же, как A1, и является ли блочный вектор B2 таким же, как B1. Если блочный вектор B2 не является таким же, как блочный вектор A1, и блочный вектор B2 не является таким же, как B1, вставляют блочный вектор блока B2 в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B2 является таким же, как блочный вектор A1 или B1, или B0 недоступен или B0 не использует режим IBC), не вставляют блочный вектор блока B0 в список кандидатов на слияние IBC текущего блока (сокращение B2 и A1 и сокращение B2 B1).If adjacent block B2 is available and using IBC mode and the current IBC merge list size is less than 4, reduce (or determine) whether block vector B2 is the same as A1 and whether block vector B2 is the same as B1. If block vector B2 is not the same as block vector A1 and block vector B2 is not the same as B1, the block vector of block B2 is inserted into the IBC merge candidate list of the current block. Otherwise (block vector B2 is the same as block vector A1 or B1, or B0 is not available, or B0 does not use IBC mode), do not insert block vector B0 into the current block's IBC merge candidate list (reduce B2 and A1 and reduce B2 B1).

Если A1 уже присутствует в списке на слияние IBC и B1 не присутствует в списке, то тогда:If A1 is already on the IBC merge list and B1 is not on the list, then:

если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как A1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1);if the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1, insert the block vector H k into the candidate list at merge the IBC of the current block. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector A1), do not insert a block vector H k in the IBC merge candidate list of the current block (abbreviation H k and A1);

если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не является таким же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор A1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и A1).if the penultimate HMVP merge candidate H k-1 is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert the block vector H k-1 to the IBC merger candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as the block vector vector A1), do not insert the block vector H k-1 into the IBC merge candidate list of the current block (abbreviation H k-1 and A1).

В противном случае, если A1 отсутствует в списке на слияние IBC и B1 уже присутствует в списке на слияние IBC, то тогда:Otherwise, if A1 is not on the IBC merge list and B1 is already on the IBC merge list, then:

если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и B1);if the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as B1, insert the block vector H k into list of IBC merger candidates of the current bloc. Otherwise ( Hk is not available, or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector Hk is the same as block vector B1), do not insert a block vector H k in the IBC merge candidate list of the current block (abbreviation H k and B1);

если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk-1 не является таким же, как A1, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk-1 является таким же, как блочный вектор B1), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (сокращение Hk-1 и B1).if the penultimate HMVP candidate H k-1 is available and using IBC mode and the current size of the IBC merge candidate list is less than the value equal to the maximum number of IBC merge candidates minus one, and the block vector H k-1 is not the same as A1, insert a block vector H k-1 into the IBC merge candidate list of the current block. Otherwise (H k-1 is not available or H k-1 is not using IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k-1 is the same as the block vector vector B1), do not insert block vector H k-1 into the current block merge candidate list IBC (abbreviation H k-1 and B1).

В противном случае, если A1 и B1 уже присутствуют в списке на слияние IBC, то тогда:Otherwise, if A1 and B1 are already on the IBC merge list, then:

если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk является не таким, как A1, и блочный вектор Hk является не таким, как B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1 и B1).if the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than a value equal to the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1, and the block vector H k is other than B1 insert the block vector H k into the IBC merge candidate list of the current block. Otherwise (H k is not available or H k is not using the IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k is the same as the block vector A1, or the block vector H k is the same as the block vector B1), do not insert the block vector H k into the IBC merge candidate list of the current block (abbreviation H k and A1 and B1).

В противном случае, если A1 и B1 уже присутствуют в списке на слияние IBC, то тогдаOtherwise, if A1 and B1 are already on the IBC merge list, then

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (без сокращения).If the last HMVP candidate H k is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, insert the block vector H k into the current block's IBC merge candidate list. Otherwise ( Hk is not available or Hk is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one), do not insert the block vector Hk into the current block's IBC merge candidate list (without abbreviations).

Если предпоследний кандидат Hk-1 HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один, вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока. В противном случае (Hk-1 недоступен или Hk-1 не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один), не вставляют блочный вектор Hk-1 в список кандидатов на слияние IBC текущего блока (без сокращения).If a penultimate HMVP candidate H k-1 is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, insert the block vector H k-1 into the current block's IBC merge candidate list. Otherwise (H k-1 is not available, or H k-1 is not using IBC mode, or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one), do not insert the block vector H k-1 into the IBC merge candidate list. merging the IBC of the current block (no reduction).

Вставляют остальных кандидатов HMVP один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).Insert the remaining HMVP candidates one by one if the candidate is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

Вставляют парного кандидата, текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения). A paired candidate is inserted, the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

Решение 9Solution 9

В соответствии с решением 9, сверх решения 1, пространственный соседний блок B0, основываясь на доступности B0 и B1; пространственный соседний блок A0, основываясь на доступности A0 и A1; пространственный соседний блок B2, основываясь на доступности B2, B1 и A1,In accordance with decision 9, over and above decision 1, the spatial neighboring block B0, based on the availability of B0 and B1; spatial neighbor block A0 based on the availability of A0 and A1; spatial neighboring block B2, based on the availability of B2, B1 and A1,

В данном примере,In this example,

Если соседний блок B0 доступен и использует режим IBC и B1 недоступен, блочный вектор блока B0 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (B0 недоступен или B0 не использует режим IBC или B1 доступен), блочный вектор блока B0 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If neighboring block B0 is available and uses IBC mode and B1 is not available, the block vector of block B0 is inserted into the current block's IBC merge candidate list. Otherwise (B0 is not available or B0 is not using IBC mode or B1 is available), the block vector of block B0 is not inserted into the current block's IBC merge candidate list (no reduction).

Если соседний блок A0 доступен и использует режим IBC, а А1 недоступен, блочный вектор блока A1 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (A0 недоступен или А0 не использует режим IBC или А1 доступен), блочный вектор блока A0 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If neighboring block A0 is available and using IBC mode, and A1 is not available, the block vector of block A1 is inserted into the current block's IBC merge candidate list. Otherwise (A0 is not available or A0 is not using IBC mode or A1 is available), the block vector of block A0 is not inserted into the current block's IBC merge candidate list (no reduction).

Если соседний блок B2 доступен и использует режим IBC, а А1 и B1 недоступны, и текущий размер списка кандидатов на слияние IBC меньше 4, блочный вектор B2 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (B2 недоступен или B2 не использует режим IBC или текущий размер списка кандидатов на слияние IBC меньше 4 или А1 доступен и B1 доступен), блочный вектор B2 не вставляют в список кандидатов на слияние IBC текущего блока (без сокращения).If adjacent block B2 is available and using IBC mode, and A1 and B1 are not available, and the current IBC merge candidate list size is less than 4, block vector B2 is inserted into the current block's IBC merge candidate list. Otherwise (B2 is not available, or B2 is not using IBC mode, or the current IBC merge candidate list size is less than 4, or A1 is available and B1 is available), block vector B2 is not inserted into the current block's IBC merge candidate list (no reduction).

В этом решении никакое дополнительное сокращение не добавляется, но по сравнению с решением 1 достигается более высокая эффективность кодирования.In this solution, no additional reduction is added, but compared to solution 1, a higher coding efficiency is achieved.

Решение 10Solution 10

В соответствии с решением 10, любые из решений 1-9 могут объединяться вместе, чтобы снижать сложность создания списка слияния IBC.Consistent with Solution 10, any of Solutions 1-9 can be combined together to reduce the complexity of creating an IBC merge list.

В примере, приведенном для решения 10, объединяются решение 2 и решение 3. Для предсказания текущего блока, используя режим IBC, важны как левый (A1), так и верхний (B1) пространственные соседние блоки. В этом примере сохраняется сокращение пространственных соседних блоков между A1 и B, блочные векторы остальных пространственных соседних блоков не вставляют в список на слияние IBC.Для сокращения количества кандидатов HMVP блочный вектор последнего кандидата Hk HMVP сокращают с помощью пространственного соседнего блока A1 и B1 векторного блока. В варианте осуществления возможно нижеследующее сокращение, выполняемое во время построения списка слияния IBC: In the example given for Solution 10, Solution 2 and Solution 3 are combined. To predict the current block using the IBC mode, both the left (A1) and top (B1) spatial neighbor blocks are important. In this example, the reduction of spatial neighbor blocks between A1 and B is kept, the block vectors of the remaining spatial neighbor blocks are not inserted into the IBC merge list. . In an embodiment, the following reduction is possible during construction of the IBC merge list:

Сокращение между последним кандидатом Hk HMVP и A1Reduction between last candidate H k HMVP and A1

Сокращение между последним кандидатом Hk HMVP и B1Reduction between last candidate H k HMVP and B1

В этом случае максимальное количество сокращений для создания списка кандидатов на слияние IBC текущего блока уменьшается с 9 до 3. Решение значительно снижает сложность создания списка слияния IBC как для кодера, так и для декодера.In this case, the maximum number of reductions to create the IBC merge candidate list of the current block is reduced from 9 to 3. The solution significantly reduces the complexity of creating the IBC merge list for both the encoder and decoder.

В этом примере последнего кандидата из списка кандидатов на слияние IBC разрешают, используя режим HMVP.In this example, the last candidate from the IBC merge candidate list is resolved using the HMVP mode.

В этом примере конкретный список кандидатов на слияние IBC создается следующим образом.In this example, a specific list of IBC merger candidates is created as follows.

Если соседний блок A1 доступен и использует режим IBC, вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока. В противном случае (A1 недоступен или А1 не использует режим IBC), не вставляют блочный вектор блока A1 в список кандидатов на слияние IBC текущего блока (первый кандидат, без сокращения).If neighboring block A1 is available and using IBC mode, insert the block vector of block A1 into the IBC merge candidate list of the current block. Otherwise (A1 is not available or A1 is not using IBC mode), do not insert block block vector A1 into the current block's IBC merge candidate list (first candidate, no reduction).

Если соседний блок B1 доступен и использует режим IBC и блочный вектор блока A1 вставляют в список кандидатов на слияние IBC текущего блока, сокращают (или определяют), является ли блочный вектор B1 таким же, как A1. Если блочный вектор B1 не является таким же, как блочный вектор A1, блочный вектор блока B1 вставляют в список кандидатов на слияние IBC текущего блока. В противном случае (блочный вектор B1 является таким же, как блочный вектор A1, или B1 недоступен или B1 не использует режим IBC), не вставляют блочный вектор блока B1 в список кандидатов на слияние IBC текущего блока (сокращение A1 и B1).If neighboring block B1 is available and using IBC mode and the block vector of block A1 is inserted into the current block's IBC merge candidate list, reduce (or determine) whether block vector B1 is the same as A1. If block vector B1 is not the same as block vector A1, the block vector of block B1 is inserted into the IBC merge candidate list of the current block. Otherwise (B1's block vector is the same as A1's block vector, or B1 is not available, or B1 does not use IBC mode), do not insert B1's block vector into the current block's IBC merge candidate list (abbreviation A1 and B1).

Если последний кандидат Hk HMVP доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше значения, равного максимальному количеству кандидатов на слияние IBC минус один, и блочный вектор Hk не такой же, как A1 и B1, вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока. В противном случае (Hk недоступен или Hk не использует режим IBC или текущий размер списка кандидатов на слияние IBC не меньше максимального количества кандидатов на слияние IBC минус один, или блочный вектор Hk является таким же, как блочный вектор A1, или блочный вектор Hk является таким же, как блочный вектор B1), не вставляют блочный вектор Hk в список кандидатов на слияние IBC текущего блока (сокращение Hk и A1, Hk и B1).If the last HMVP candidate H k is available and using IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one, and the block vector H k is not the same as A1 and B1, insert the block vector H k to the list of IBC merger candidates of the current block. Otherwise (H k is not available or H k is not using the IBC mode or the current size of the IBC merge candidate list is not less than the maximum number of IBC merge candidates minus one, or the block vector H k is the same as the block vector A1, or the block vector H k is the same as block vector B1), do not insert block vector H k into the IBC merge candidate list of the current block (abbreviation H k and A1, H k and B1).

Остальных кандидатов HMVP вставляют один за другим, если кандидат доступен и использует режим IBC и текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC минус один (без сокращения).The remaining HMVP candidates are inserted one by one if the candidate is available and using the IBC mode and the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates minus one (no reduction).

В некоторых примерах дополнительно вставляют парного кандидата, если текущий размер списка кандидатов на слияние IBC меньше максимального количества кандидатов на слияние IBC (без сокращения).In some examples, a paired candidate is additionally inserted if the current size of the IBC merge candidate list is less than the maximum number of IBC merge candidates (no reduction).

В данном примере представлен процесс декодирования для блоков кодирования, кодированных в режиме предсказания IBC.This example shows the decoding process for coding blocks encoded in IBC prediction mode.

8.6.1 Общее описание процесса декодирования для блоков кодирования, кодированных в режиме предсказания IBC8.6.1 General description of the decoding process for coding blocks encoded in IBC prediction mode

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

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

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

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

переменная treeType, указывающая, одиночное или двойное дерево используется, и если используется двойное дерево, это указывает, соответствует ли текущее дерево компонентам яркости или цветности. a treeType variable indicating whether a single or double tree is used, and if a double tree is used, this indicates whether the current tree matches the luma or chrominance components.

Результатом этого процесса является модифицированное реконструированное изображение, предшествующее контурной фильтрации.The result of this process is a modified reconstructed image that precedes contour filtering.

Процесс получения параметров квантования инициируется с помощью местоположения яркости (xCb, yCb), ширины текущего блока кодирования в выборках яркости cbWidth, высоты текущего блока кодирования в выборках яркости cbHeight и переменной treeType в качестве входных данных.The quantization parameter derivation process is initiated by using the luminance location (xCb, yCb), the width of the current coding block in luma samples cbWidth, the height of the current coding block in luminance samples cbHeight, and the variable treeType as input.

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

IsGt4by4 = (cbWidth * cbHeight) > 16IsGt4by4 = (cbWidth * cbHeight) > 16 (1111)(1111)

Процесс декодирования для блоков кодирования, кодированных в режиме предсказания IBC, состоит из следующих выполняемых по порядку этапов:The decoding process for coding blocks encoded in IBC prediction mode consists of the following steps, performed in order:

1. Компоненты блочного вектора текущего блока кодирования получают следующим образом:1. The block vector components of the current coding block are obtained as follows:

Процесс получения компонент блочного вектора инициируется с помощью местоположения блока кодирования яркости (xCb, yCb), ширины блока кодирования яркости cbWidth, высоты блока кодирования cbHeight и блочного вектора яркости bvL в качестве выходных данных.The block vector component derivation process is initiated with the luminance coding block location (xCb, yCb), the luminance coding block width cbWidth, the coding block height cbHeight, and the luminance block vector bvL as output.

Когда treeType равен SINGLE_TREE, процесс получения блока цветности инициируется блочным вектором яркости bvL в качестве входных данных и блочным вектором цветности bvC в качестве выходных данных.When treeType is SINGLE_TREE, the chrominance block derivation process is initiated by the luma block vector bvL as input and the chroma block vector bvC as output.

2. Выборки предсказания текущего блока кодирования получают следующим образом:2. Prediction samples of the current coding block are obtained as follows:

Процесс декодирования для блоков IBC, как указано в пункте 8.6.3.1, иницуиируют с помощью местоположения блока кодирования яркости (xCb, yCb), ширины cbWidth блока кодирования яркости и высоты cbHeight блока кодирования яркости, блочного вектора яркости bvL, переменной cIdx, установленной равной 0 в качестве входных данных, и выборок предсказания IBC (predSamples), которые являются матрицей predSamplesL (cbWidth)x(cbHeight) предсказания выборок яркости в качестве выходных данных.The decoding process for IBC blocks as specified in clause 8.6.3.1 is initiated with the location of the luma coding block (xCb, yCb), the width cbWidth of the luma coding block and the height cbHeight of the luma coding block, the luma block vector bvL, the variable cIdx set to 0 as input, and IBC prediction samples (predSamples), which is a predictive matrix of luminance samples predSamplesL (cbWidth)x(cbHeight) as output.

Когда treeType равно SINGLE_TREE, выборки предсказания текущего блока кодирования получают следующим образом:When treeType is SINGLE_TREE, prediction samples of the current coding block are obtained as follows:

- Процесс декодирования блоков IBC, как указано в пункте 8.6.3.1, инициируют с помощью местоположения блока кодирования яркости (xCb, yCb), ширины блока кодирования яркости cbWidth и высоты блока кодирования яркости cbHeight, блочного вектора цветности bvC и переменной cIdx, установленной равной 1, в качестве входных данных, и выборок предсказания IBC (predSamples), которые являются матрицей predSamplesCb (cbWidth/SubWidthC)x(cbHeight/SubHeightC) предсказания выборок цветности для компонент Cb цветности в качестве выходных данных.- The IBC block decoding process as specified in clause 8.6.3.1 is initiated with the luminance coding block location (xCb, yCb), the luma coding block width cbWidth and the luma coding block height cbHeight, the chrominance block vector bvC and the variable cIdx set to 1 , as input, and IBC prediction samples (predSamples), which is the prediction matrix of chrominance samples predSamplesCb (cbWidth/SubWidthC)x(cbHeight/SubHeightC) for chrominance components Cb, as output.

- Процесс декодирования блоков IBC инициируют согласно пункту 8.6.3.1 с помощью местоположения блока кодирования яркости (xCb, yCb), ширины блока кодирования яркости cbWidth и высоты блока кодирования яркости cbHeight, блочного вектора цветности bvC и переменной cIdx, установленной равной 2, в качестве входных данных, и выборок предсказания IBC (predSamples), которые являются матрицей predSamplesCb (cbWidth/SubWidthC)x(cbHeight/SubHeightC) предсказания выборок цветности для компонент Cb цветности в качестве выходных данных. - The IBC block decoding process is initiated according to clause 8.6.3.1 with the luminance coding block location (xCb, yCb), the luma coding block width cbWidth and the luma coding block height cbHeight, the chrominance block vector bvC and cIdx variable set to 2 as input data, and IBC prediction samples (predSamples), which is a matrix predSamplesCb (cbWidth/SubWidthC)x(cbHeight/SubHeightC) of chrominance sample prediction for chrominance components Cb as output.

3. Остаточные выборки текущего блока кодирования получают следующим образом:3. Residual samples of the current coding block are obtained as follows:

- Процесс декодирования остаточного сигнала блоков кодирования, кодированных в режиме межкадрового предсказания, инициируют с помощью местоположения (xTb0, yTb0), установленного равным местоположению блока кодирования яркости (xCb, yCb), ширине nTbW, установленной равной ширине блока кодирования яркости cbWidth, высоте nTbH, установленной равной высоте блока кодирования яркости cbHeight, и переменной cIdx, установленной равной 0, в качестве входных данных, и матрицы resSamplesL в качестве выходных данных.- The process of decoding the residual signal of coding blocks encoded in the inter-prediction mode is initiated with the location (xTb0, yTb0) set equal to the location of the luminance coding block (xCb, yCb), the width nTbW set equal to the luminance coding block width cbWidth, the height nTbH, set equal to the height of the luminance coding block cbHeight, and the variable cIdx set equal to 0 as input, and the resSamplesL matrix as output.

- Процесс декодирования остаточного сигнала блоков кодирования, кодированных в режиме межкадрового предсказания, инициируют с помощью местоположения (xTb0, yTb0), установленного равным местоположению блока кодирования яркости (xCb, yCb), ширине nTbW, установленной равной ширине блока кодирования яркости cbWidth, высоте nTbH, установленной равной высоте блока кодирования яркости cbHeight, и переменной cIdx, установленной равной 1, в качестве входных данных, и матрицы resSamplesL в качестве выходных данных.- The process of decoding the residual signal of coding blocks encoded in the inter-prediction mode is initiated with the location (xTb0, yTb0) set equal to the location of the luminance coding block (xCb, yCb), the width nTbW set equal to the luminance coding block width cbWidth, the height nTbH, set equal to the height of the luminance coding block cbHeight, and the variable cIdx set equal to 1 as input, and the resSamplesL matrix as output.

- Процесс декодирования остаточного сигнала блоков кодирования, кодированных в режиме межкадрового предсказания, инициируют с помощью местоположения (xTb0, yTb0), установленного равным местоположению блока кодирования яркости (xCb, yCb), ширине nTbW, установленной равной ширине блока кодирования яркости cbWidth, высоте nTbH, установленной равной высоте блока кодирования яркости cbHeight, и переменной cIdx, установленной равной 2, в качестве входных данных, и матрицы resSamplesL в качестве выходных данных.- The process of decoding the residual signal of coding blocks encoded in the inter-prediction mode is initiated with the location (xTb0, yTb0) set equal to the location of the luminance coding block (xCb, yCb), the width nTbW set equal to the luminance coding block width cbWidth, the height nTbH, set equal to the height of the luminance coding block cbHeight, and the variable cIdx set equal to 2 as input, and the resSamplesL matrix as output.

Остаточные выборки текущего блока кодирования получают следующим образом:The residual samples of the current coding block are obtained as follows:

- Процесс реконструкции изображения для цветового компонента инициируют с помощью расположения блока (xCurr, yCurr ), установленного равным ( xCb, yCb ), ширины блока nCurrSw, установленной равной cbWidth, высоты блока nCurrSh, установленной равной cbHeight, переменной cIdx, установленной равной 0, матрицы predSamples (cbWidth)x(cbHeight), установленной равной predSamplesL, и матрицы resSamples (cbWidth)x(cbHeight), установленной равной resSamplesL, в качестве входных данных, а выходным результатом является модифицированное реконструированное изображение, предшествующее внутриконтурной фильтрации.- The image reconstruction process for the color component is initiated with the block location (xCurr, yCurr ) set equal to ( xCb, yCb ), the block width nCurrSw set equal to cbWidth, the block height nCurrSh set equal to cbHeight, the cIdx variable set equal to 0, the matrix predSamples (cbWidth)x(cbHeight) set to predSamplesL and resSamples (cbWidth)x(cbHeight) matrix set to resSamplesL as input, and the output is a modified reconstructed image prior to in-loop filtering.

- Когда treeType равен SINGLE_TREE, процесс реконструкции изображения цветового компонента инициируют с помощью расположения блока (xCurr, yCurr ), установленного равным ( xCb/SubWidthC, yCb/SubHeightC ), ширины блока nCurrSw, установленной равной cbWidth/SubWidthC, высоты блока nCurrSh, установленной равной cbHeight/SubHeightC, переменной cIdx, установленной равной 1, матрицы predSamples (cbWidth)x(cbHeight), установленной равной predSamplesL, и матрицы resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC), установленной равной predSamplesCb, и матрицы resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC), установленной равной resSamplesCb в качестве входных данных, а выходным результатом является модифицированное реконструированное изображение, предшествующее внутриконтурной фильтрации.- When treeType is equal to SINGLE_TREE, the color component image reconstruction process is initiated with a box location (xCurr, yCurr ) set to ( xCb/SubWidthC, yCb/SubHeightC ), a box width nCurrSw set to cbWidth/SubWidthC, a box height nCurrSh set to cbHeight/SubHeightC, cIdx variable set to 1, predSamples (cbWidth)x(cbHeight) matrix set to predSamplesL, and resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC) matrix set to predSamplesCb, and resSamples (cbWidth/ SubWidthC)x(cbHeight/SubHeightC) set to resSamplesCb as input and the output is a modified reconstructed image prior to in-loop filtering.

- Когда treeType равна SINGLE_TREE, процесс реконструкции изображения для цветового компонента инициируют с помощью расположения блока (xCurr, yCurr ), установленного равным ( xCb/SubWidthC, yCb/SubHeightC ), ширины блока nCurrSw, установленной равной cbWidth/SubWidthC, высоты блока nCurrSh, установленной равной cbHeight/SubHeightC, переменной cIdx, установленной равной 2, матрицы predSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC), установленной равной predSamplesCr, и матрицы resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC), установленной равной predSamplesCb, и матрицы resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC), установленной равной resSamplesCr в качестве входных данных, а выходным результатом является модифицированное реконструированное изображение, предшествующее внутриконтурной фильтрации.- When treeType is SINGLE_TREE, the image reconstruction process for the color component is initiated with a box position (xCurr, yCurr ) set to ( xCb/SubWidthC, yCb/SubHeightC ), a box width nCurrSw set to cbWidth/SubWidthC, a box height nCurrSh set to cbHeight/SubHeightC, cIdx set to 2, predSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC) matrix set to predSamplesCr, and resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC) matrix set to predSamplesCb, and matrix resSamples (cbWidth/SubWidthC)x(cbHeight/SubHeightC) set to resSamplesCr as input, and the output is a modified reconstructed image prior to in-loop filtering.

8.6.2 Процесс получения компонентов блочного вектора для блоков IBC8.6.2 Process for deriving block vector components for IBC blocks

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

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

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

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

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

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

блочный вектор яркости bvL с точностью 1/16 доли выборки.luma block vector bvL with 1/16th fraction of the sample precision.

Блочный вектор яркости bvL получают следующим образом:The block luma vector bvL is obtained as follows:

Процесс получения для предсказания блочного вектора яркости IBC инициируют согласно пункту 8.6.2.2 с помощью входных данных местоположения блока кодирования яркости (xCb, yCb), переменных cbWidth и cbHeight и выходными данными является блочный вектор bvL яркости.The derivation process for predicting the IBC luminance block vector is initiated according to clause 8.6.2.2 with the input luminance coding block location (xCb, yCb), the variables cbWidth and cbHeight, and the output is the luminance block vector bvL.

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

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

bvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ]bvd[ 0 ] = MvdL0[ xCb ][ yCb ][ 0 ] (1112)(1112) bvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ]bvd[ 1 ] = MvdL0[ xCb ][ yCb ][ 1 ] (1113)(1113)

2. Инициируют процесс округления для векторов движения с помощью mvX, установленного равным bvL, rightShift, установленного равным AmvrShift, и leftShift, установленного равным AmvrShift, в качестве входных данных, и выходные данные получают как округленный bvL.2. The rounding process for motion vectors is initiated with mvX set to bvL, rightShift set to AmvrShift, and leftShift set to AmvrShift as input, and the output is obtained as rounded bvL.

3. Блочный вектор bvL яркости модифицируют следующим образом:3. The luminance block vector bvL is modified as follows:

u[ 0 ] = ( bvL[ 0 ] + bvd[ 0 ] + 218 ) % 218 u[ 0 ] = ( bvL[ 0 ] + bvd[ 0 ] + 2 18 ) % 2 18 (1114)(1114) bvL[ 0 ] = ( u[ 0 ] >= 217 ) ? ( u[ 0 ] − 218 ) : u[ 0 ]bvL[ 0 ] = ( u[ 0 ] >= 2 17 ) ? ( u[ 0 ] − 2 18 ) : u[ 0 ] (1115)(1115) u[ 1 ] = ( bvL[ 1 ] + bvd[ 1 ] + 218 ) % 218 u[ 1 ] = ( bvL[ 1 ] + bvd[ 1 ] + 2 18 ) % 2 18 (1116)(1116) bvL[ 1 ] = ( u[ 1 ] >= 217 ) ? ( u[ 1 ] − 218 ) : u[ 1 ]bvL[ 1 ] = ( u[ 1 ] >= 2 17 ) ? ( u[ 1 ] − 2 18 ) : u[ 1 ] (1117)(1117)

Примечание 1. Результирующие значения bvL[ 0 ] и bvL[ 1 ], указанные выше, всегда будут находиться в диапазоне от −217 до 217 − 1, включительно.Note 1.— The resulting values bvL[ 0 ] and bvL[ 1 ] above will always be between −2 17 and 2 17 − 1, inclusive.

Когда IsGt4by4 равно TRUE, процесс обновления списка предикторов блочных векторов, основанных на архивных данных, как указано в пункте 8.6.2.6, инициируют с помощью блочного вектора bvL яркости.When IsGt4by4 is TRUE, the process of updating the list of block vector predictors based on archived data, as specified in clause 8.6.2.6, is initiated with the luma block vector bvL.

Требование согласованности битового потока состоит в том, чтобы блочный вектор bvL яркости удовлетворял следующим условиям:The bitstream consistency requirement is that the luma block vector bvL satisfy the following conditions:

CtbSizeY больше или равно (( yCb + ( bvL[ 1 ] >> 4 ) ) & ( CtbSizeY − 1 ) ) + cbHeight.CtbSizeY is greater than or equal to (( yCb + ( bvL[ 1 ] >> 4 ) ) & ( CtbSizeY − 1 ) ) + cbHeight.

IbcVirBuf[ 0 ][ ( x + (bvL[ 0 ] >> 4 ) ) & ( IbcBufWidthY − 1 ) ][ ( y + (bvL[1] >> 4 ) ) & ( CtbSizeY − 1) ] не должно быть равно −1 для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight − 1.IbcVirBuf[ 0 ][ ( x + (bvL[ 0 ] >> 4 ) ) & ( IbcBufWidthY − 1 ) ][ ( y + (bvL[1] >> 4 ) ) & ( CtbSizeY − 1) ] must not be equal to −1 for x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight − 1.

8.6.2.2 Процесс получения предсказания блочного вектора яркости IBC8.6.2.2 IBC luma block vector prediction process

Процесс инициируют, только когда CuPredMode[ 0 ][ xCb ][ yCb ] равно MODE_IBC, где ( xCb, yCb ) указывает верхнюю-левую выборку текущего блока кодирования яркости относительно левой верхней выборки яркости текущего изображения.The process is initiated only when CuPredMode[ 0 ][ xCb ][ yCb ] is equal to MODE_IBC, where ( xCb, yCb ) indicates the top-left sample of the current luminance coding block relative to the top-left sample of the luma of the current picture.

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

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

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

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

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

блочный вектор яркости bvL с точностью 1/16 доли выборки.luma block vector bvL with 1/16th fraction of the sample precision.

Блочный вектор яркости bvL получают в следующем порядке:The luma block vector bvL is obtained in the following order:

1. Когда IsGt4by4 равно TRUE (истинно), процесс получения кандидатов пространственных блочных векторов из соседних блоков кодирования, как описано в пункте 8.6.2.3, инициируют с помощью местоположения (xCb, yCb) блока кодирования яркости, ширины блока кодирования яркости cbWidth и высоты cbHeight в качестве входных данных, и выходные данные являются флагами доступности availableFlagA1, availableFlagB1 и блочными векторами bvA1 и bvB1.1. When IsGt4by4 is TRUE, the process of deriving spatial block vector candidates from neighboring coding blocks as described in clause 8.6.2.3 is initiated with the location (xCb, yCb) of the luminance coding block, the width of the luminance coding block cbWidth and the height cbHeight as inputs, and the outputs are availability flags availableFlagA1, availableFlagB1 and block vectors bvA1 and bvB1.

2. Когда IsGt4by4 равно TRUE (истинно), список кандидатов блочных векторов, bvCandList, строится следующим образом:2. When IsGt4by4 is TRUE, the block vector candidate list, bvCandList, is constructed as follows:

i = 0
if ( availableFlagA1 )
bvCandList [ i++ ] = bvA1 i = 0
if ( availableFlagB1 )
bvCandList [ i++ ] = bvB1
i = 0
if (availableFlagA1)
bvCandList [ i++ ] = bvA1 i = 0
if (availableFlagB1)
bvCandList [ i++ ] = bvB1

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

Когда IsGt4by4 равно TRUE (истинно), numCurrCand устанавливают равным количеству кандидатов на слияние в списке bvCandList.When IsGt4by4 is TRUE, numCurrCand is set to the number of merge candidates in bvCandList.

В противном случае, (IsGt4by4 равно FALSE (ложно)), numCurrCand устанавливают равным 0.Otherwise, (IsGt4by4 is FALSE), numCurrCand is set to 0.

4. Когда numCurrCand меньше, чем MaxNumIbcMergeCand, и NumHmvpIbcCand больше 0, процесс получения кандидатов блочных векторов IBC, основанных на архивных данных, согласно пункту 8.6.2.4, инициируют с помощью bvCandList и numCurrCand в качестве входных данных, и модифицированные bvCandList и numCurrCand получают в качестве выходного результата.4. When numCurrCand is less than MaxNumIbcMergeCand and NumHmvpIbcCand is greater than 0, the process of deriving archive data-based IBC block vector candidates according to clause 8.6.2.4 is initiated with bvCandList and numCurrCand as input, and modified bvCandList and numCurrCand are obtained in as the output.

5. Когда numCurrCand меньше, чем MaxNumIbcMergeCand, нижеследующее применяют до тех пор, пока numCurrCand не станет равно MaxNumIbcMergeCand:5. When numCurrCand is less than MaxNumIbcMergeCand, the following applies until numCurrCand equals MaxNumIbcMergeCand:

bvCandList[ numCurrCand ][ 0 ] устанавливают равным 0.bvCandList[ numCurrCand ][ 0 ] is set to 0.

bvCandList[ numCurrCand ][ 1 ] устанавливают равным 0.bvCandList[ numCurrCand ][ 1 ] is set to 0.

numCurrCand дают приращение на 1.numCurrCand increment by 1.

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

bvIdx = general_merge_flag[ xCb ][ yCb ] ? merge_idx[ xCb ][ yCb ] : mvp_l0_flag[ xCb ][ yCb ]bvIdx = general_merge_flag[ xCb ][ yCb ] ? merge_idx[ xCb ][ yCb ] : mvp_l0_flag[ xCb ][ yCb ] (1119)(1119)

7. Делаются нижеследующие назначения:7. The following appointments are made:

bvL[ 0 ] = bvCandList[ mvIdx ][ 0 ]bvL[ 0 ] = bvCandList[ mvIdx ][ 0 ] (1120)(1120) bvL[ 1 ] = bvCandList[ mvIdx ][ 1 ]bvL[ 1 ] = bvCandList[ mvIdx ][ 1 ] (1121)(1121)

8.6.2.3 Процесс получения кандидатов пространственных блочных векторов IBC8.6.2.3 Process for deriving IBC spatial block vector candidates

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

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

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

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

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

флаги доступности availableFlagA1 и availableFlagB1 соседних блоков кодирования,availability flags availableFlagA1 and availableFlagB1 of adjacent coding blocks,

блочные векторы bvA1 и bvB1 с точностью в 1/16 доли выборки соседних блоков кодирования.block vectors bvA1 and bvB1 with an accuracy of 1/16 of the fraction of the sample of neighboring coding blocks.

Для получения availableFlagA1 и mvA1 применяют нижеследующее:To obtain availableFlagA1 and mvA1, use the following:

Местоположение блока кодирования яркости (xNbA1, yNbA1) внутри соседнего блока кодирования яркости устанавливают равным (xCb − 1, yCb + cbHeight − 1).The location of the luminance coding block (xNbA1, yNbA1) within the adjacent luminance coding block is set to (xCb − 1, yCb + cbHeight − 1).

Процесс получения доступности соседнего блока инициируют с помощью текущего местоположения блока кодирования яркости ( xCurr, yCurr ), установленного равным ( xCb, yCb ), соседнего местоположения блока кодирования яркости (xNbA1, yNbA1), checkPredModeY, установленного равным TRUE (истина), и cIdx, установленного равным 0, в качестве входных данных, и выходной результат назначают флагу доступности блока availableA1.The neighbor block accessibility process is initiated with the current luminance coding block location ( xCurr, yCurr ) set to ( xCb, yCb ), the neighboring luminance coding block location (xNbA1, yNbA1), checkPredModeY set to TRUE, and cIdx, set to 0 as input, and the output is assigned to the block availability flag availableA1.

Переменные availableFlagA1 и bvA1 получают следующим образом:The availableFlagA1 and bvA1 variables are obtained as follows:

Если availableA1 равно FALSE (ложно), availableFlagA1 устанавливают равным 0 и оба компонента bvA1 устанавливают равными 0.If availableA1 is FALSE, availableFlagA1 is set to 0 and both bvA1 components are set to 0.

В противном случае, availableFlagA1 устанавливают равным 1 и делают нижеследующие назначения:Otherwise, availableFlagA1 is set to 1 and the following assignments are made:

bvA1 = MvL0[ xNbA1 ][ yNbA1 ]bvA1 = MvL0[ xNbA1 ][ yNbA1 ] (1122)(1122)

Для получения availableFlagB1 и bvB1 применяют нижеследующее:To obtain availableFlagB1 and bvB1, use the following:

Местоположение блока кодирования яркости (xNbB1, yNbB1) внутри соседнего блока кодирования яркости устанавливают равным (xCb + cbWidth − 1, yCb − 1).The location of the luminance coding block (xNbB1, yNbB1) within the adjacent luminance coding block is set to (xCb + cbWidth − 1, yCb − 1).

Процесс получения доступности соседнего блока инициируют с помощью текущего местоположения блока кодирования яркости ( xCurr, yCurr ), установленного равным ( xCb, yCb ), соседнего местоположения блока кодирования яркости (xNbB1, yNbB1), checkPredModeY, установленного равным TRUE (истина), и cIdx, установленного равным 0, в качестве входных данных, и выходной результат назначают флагу доступности блока availableB1.The neighbor block accessibility process is initiated with the current luminance coding block location ( xCurr, yCurr ) set to ( xCb, yCb ), the neighboring luma coding block location (xNbB1, yNbB1), checkPredModeY set to TRUE (true), and cIdx, set to 0 as input, and the output is assigned to the block availability flag availableB1.

Переменные availableFlagB1 и bvB1 получают следующим образом:The availableFlagB1 and bvB1 variables are obtained as follows:

Если одно или более из нижеследующих условий являются действительными, availableB1 устанавливают равным 0 и оба компонента bvB1 устанавливают равными 0:If one or more of the following conditions are valid, availableB1 is set to 0 and both bvB1 components are set to 0:

availableB1 равняется FALSE (ложно).availableB1 is FALSE.

availableA1 равняется TRUE (истинно) и местоположения блоков кодирования яркости (xNbA1, yNbA1) и (xNbB1, yNbB1) имеют одинаковые блочные векторы.availableA1 is TRUE and the luminance coding block locations (xNbA1, yNbA1) and (xNbB1, yNbB1) have the same block vectors.

В противном случае, availableFlagB1 устанавливают равным 1 и делают нижеследующие назначения:Otherwise, availableFlagB1 is set to 1 and the following assignments are made:

bvB1 = MvL0[ xNbB1 ][ yNbB1 ]bvB1 = MvL0[ xNbB1 ][ yNbB1 ] (1123).(1123).

8.6.2.4 Процесс получения кандидатов блочных векторов IBC, основанных на архивных данных8.6.2.4 Process for deriving IBC block vector candidates based on archived data

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

список кандидатов блочных векторов bvCandList, block vector candidate list bvCandList,

количество доступных кандидатов блочных векторов в списке numCurrCand.the number of available block vector candidates in the numCurrCand list.

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

модифицированный список кандидатов блочных векторов bvCandList, modified block vector candidate list bvCandList,

модифицированное количество доступных кандидатов блочных векторов в списке numCurrCand.the modified number of available block vector candidates in the numCurrCand list.

Переменные isPrunedA1 и isPrunedB1 обе устанавливают равными FALSE (ложно).The variables isPrunedA1 and isPrunedB1 are both set to FALSE.

Для каждого кандидата в HmvpIbcCandList[ hMvpIdx ] с индексом hMvpIdx = 1..NumHmvpIbcCand, нижеследующие последовательные этапы повторяются до тех пор, пока numCurrCand не станет равно MaxNumIbcMergeCand:For each HmvpIbcCandList[ hMvpIdx ] candidate with index hMvpIdx = 1..NumHmvpIbcCand, the following successive steps are repeated until numCurrCand equals MaxNumIbcMergeCand:

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

Если все нижеследующие условия действительны для любого кандидата N блочного вектора, где N - A1 или B1, sameMotion и isPrunedN оба устанавливают как TRUE (истинно):If all of the following conditions are valid for any block vector candidate N, where N is A1 or B1, sameMotion and isPrunedN are both set to TRUE:

IsGt4by4 равно TRUE (истинно).IsGt4by4 is TRUE.

hMvpIdx равно 1.hMvpIdx is 1.

Кандидат HmvpIbcCandList[NumHmvpIbcCand − hMvpIdx] равен кандидату N блочного вектора .Candidate HmvpIbcCandList[NumHmvpIbcCand − hMvpIdx] is equal to block vector candidate N .

isPrunedN равно FALSE (ложно).isPrunedN is FALSE.

В противном случае, sameMotion устанавливают равным FALSE (ложно).Otherwise, sameMotion is set to FALSE.

2. Когда same Motion равно FALSE, кандидата HmvpIbcCandList [NumHmvpIbcCand − hMvpIdx] добавляют к списку кандидатов блочных векторов следующим образом:2. When same Motion is FALSE, candidate HmvpIbcCandList [NumHmvpIbcCand − hMvpIdx] is added to the block vector candidate list as follows:

bvCandList[ numCurrCand++ ]= HmvpIbcCandList[ NumHmvpIbcCand − hMvpIdx ] (1124).bvCandList[ numCurrCand++ ]= HmvpIbcCandList[ NumHmvpIbcCand − hMvpIdx ] (1124).

8.6.2.5 Процесс получения блочных векторов цветности8.6.2.5 Chromaticity block vector derivation process

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

блочный вектор яркости bvL с точностью 1/16 доли выборки.luma block vector bvL with 1/16th fraction of the sample precision.

Результатом этого процесса является блочный вектор цветности bvC с точностью 1/32 доли выборки.The result of this process is a block chromaticity vector bvC with an accuracy of 1/32 of the sample fraction.

Блочный вектор цветности получают из соответствующего блочного вектора яркости.The chrominance block vector is derived from the corresponding luma block vector.

Блочный вектор bvC цветности получают следующим образом:The block chroma vector bvC is obtained as follows:

bvC[ 0 ] = ( ( bvL[ 0 ] >> ( 3 + SubWidthC ) ) * 32bvC[ 0 ] = ( ( bvL[ 0 ] >> ( 3 + SubWidthC ) ) * 32 (1125)(1125) bvC[ 1 ] = ( ( bvL[ 1 ] >> ( 3 + SubHeightC ) ) * 32bvC[ 1 ] = ( ( bvL[ 1 ] >> ( 3 + SubHeightC ) ) * 32 (1126)(1126)

8.6.2.6 Процесс обновления списка кандидатов в предикторы блочных векторов, основанных на архивных данных8.6.2.6 Process for updating a list of block vector predictor candidates based on archived data

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

блочный вектор яркости bvL с точностью 1/16 доли выборки.luma block vector bvL with 1/16th fraction of the sample precision.

Список кандидатов HmvpIbcCandList модифицируется на последующих выполняемых по порядку этапах:The HmvpIbcCandList candidate list is modified in the following steps, in order:

1. Переменная identicalCandExist устанавливается равной FALSE (ложно) и переменная removeIdx устанавливается равной 0.1. The variable identicalCandExist is set to FALSE (false) and the variable removeIdx is set to 0.

2. Когда NumHmvpIbcCand больше 0, для каждого индекса hMvpIdx с hMvpIdx = 0..NumHmvpIbcCand − 1, последующие этапы применяют до тех пор, пока identicalCandExist не станет равно TRUE (истинно):2. When NumHmvpIbcCand is greater than 0, for each hMvpIdx index with hMvpIdx = 0..NumHmvpIbcCand − 1, subsequent steps are applied until identicalCandExist is TRUE:

Когда bvL равен HmvpIbcCandList[ hMvpIdx ], identicalCandExist устанавливают равным TRUE (истинно) и removeIdx устанавливают равным hMvpIdx.When bvL is equal to HmvpIbcCandList[ hMvpIdx ], identicalCandExist is set to TRUE (true) and removeIdx is set to hMvpIdx.

3. Список кандидатов HmvpIbcCandList обновляют следующим образом:3. The HmvpIbcCandList candidate list is updated as follows:

Если identicalCandExist равно TRUE (истинно) или NumHmvpIbcCand равно 5, the применяют следующее:If identicalCandExist is TRUE (true) or NumHmvpIbcCand is 5, the following apply:

Для каждого индекса i с i = ( removeIdx + 1 )..( NumHmvpIbcCand − 1 ), HmvpIbcCandList[ i − 1] устанавливают равным HmvpIbcCandList [ i ].For each index i with i = ( removeIdx + 1 )..( NumHmvpIbcCand − 1 ), HmvpIbcCandList[ i − 1] is set equal to HmvpIbcCandList [ i ].

HmvpIbcCandList[ NumHmvpIbcCand − 1 ] устанавливают равным bvL.HmvpIbcCandList[ NumHmvpIbcCand − 1 ] is set to bvL.

В противном случае (identicalCandExist равно FALSE (ложно) и NumHmvpIbcCand меньше 5), применяют следующее:Otherwise (identicalCandExist is FALSE and NumHmvpIbcCand is less than 5), the following applies:

HmvpIbcCandList[ NumHmvpIbcCand ++ ] устанавливают равным bvL.HmvpIbcCandList[ NumHmvpIbcCand ++ ] is set to bvL.

8.6.3 Процесс декодирования для блоков IBC8.6.3 Decoding process for IBC blocks

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

Этот процесс инициируют при декодировании блоков кодирования, кодированных в режиме предсказания IBC. This process is initiated when decoding coding blocks encoded in IBC prediction mode.

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

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

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

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

блочный вектор bv,block Vector bv,

переменная cIdx, указывающая индекс компонент цветности текущего блока.variable cIdx indicating the index of the chrominance components of the current block.

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

матрица predSamples выборок предсказания.the predSamples matrix of prediction samples.

Когда cIdx равно 0, для x = xCb..xCb + cbWidth − 1 и y = yCb..yCb + cbHeight − 1, применяют следующее:When cIdx is 0, for x = xCb..xCb + cbWidth − 1 and y = yCb..yCb + cbHeight − 1, the following apply:

xVb = ( x + ( bv[ 0 ] >> 4 ) ) & ( IbcBufWidthY − 1 )xVb = ( x + ( bv[ 0 ] >> 4 ) ) & ( IbcBufWidthY − 1 ) (1127)(1127) yVb = ( y + ( bv[ 1 ] >> 4 ) ) & ( CtbSizeY − 1 )yVb = ( y + ( bv[ 1 ] >> 4 ) ) & ( CtbSizeY − 1 ) (1128)(1128) predSamples[ x ][ y ] = ibcVirBuf[ 0 ][ xVb ][ yVb ]predSamples[ x ][ y ] = ibcVirBuf[ 0 ][ xVb ][ yVb ] (1129)(1129)

Когда cIdx не равно 0, для x = xCb/subWidthC..xCb/subWidthC + cbWidth/subWidthC − 1 и y = yCb/subHeightC..yCb/subHeightC + cbHeight/subHeightC − 1, применяют следующее:When cIdx is not 0, for x = xCb/subWidthC..xCb/subWidthC + cbWidth/subWidthC − 1 and y = yCb/subHeightC..yCb/subHeightC + cbHeight/subHeightC − 1, the following apply:

xVb = ( x + ( bv[ 0 ] >> 5 ) ) & ( IbcBufWidthC − 1 )xVb = ( x + ( bv[ 0 ] >> 5 ) ) & ( IbcBufWidthC − 1 ) (1130)(1130) yVb = ( y + ( bv[ 1 ] >> 5 ) ) & ( ( CtbSizeY/subHeightC ) − 1 )yVb = ( y + ( bv[ 1 ] >> 5 ) ) & ( ( CtbSizeY/subHeightC ) − 1 ) (1131)(1131) predSamples[ x ][ y ] = ibcVirBuf[ cIdx ][ xVb ][ yVb ]predSamples[ x ][ y ] = ibcVirBuf[ cIdx ][ xVb ][ yVb ] (1132)(1132)

Когда cIdx равно 0, для x = 0..cbWidth − 1 and y = 0..cbHeight − 1 делают следующие назначения:When cIdx is 0, the following assignments are made for x = 0..cbWidth − 1 and y = 0..cbHeight − 1:

MvL0[ xCb + x ][ yCb + y ] = bvMvL0[ xCb + x ][ yCb + y] = bv (1133)(1133) MvL1[ xCb + x ][ yCb + y ] = 0MvL1[ xCb + x ][ yCb + y] = 0 (1134)(1134) RefIdxL0[ xCb + x ][ yCb + y ] = −1RefIdxL0[ xCb + x ][ yCb + y ] = −1 (1135)(1135) RefIdxL1[ xCb + x ][ yCb + y ] = −1RefIdxL1[ xCb + x ][ yCb + y ] = −1 (1136)(1136) PredFlagL0[ xCb + x ][ yCb + y ] = 0PredFlagL0[ xCb + x ][ yCb + y] = 0 (1137)(1137) PredFlagL1[ xCb + x ][ yCb + y ] = 0PredFlagL1[ xCb + x ][ yCb + y] = 0 (1138)(1138) BcwIdx[ xCb + x ][ yCb + y ] = 0BcwIdx[ xCb + x ][ yCb + y] = 0 (1139).(1139).

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

На фиг. 8 представлена блок-схема системы 3100 предоставления контента для реализации услуги распределения контента. Эта система 3100 предоставления контента содержит устройство 3102 получения изображения, оконечное устройство 3106 и, как вариант, содержит дисплей 3126.In FIG. 8 is a block diagram of a content providing system 3100 for implementing a content distribution service. This content delivery system 3100 includes an image acquisition device 3102, a terminal device 3106, and optionally a display 3126.

Устройство 3102 получения изображения осуществляет связь с оконечным устройством 3106 через линию 3104 связи.The image acquisition device 3102 communicates with the terminal device 3106 via the communication line 3104.

Линия связи может содержать описанный выше канал 13 связи. Линия 3104 связи содержит, но не ограничивается WI-FI, Ethernet, кабельную линию, беспроводную линию связи (3G/4G/5G), USB или их сочетание любого вида и т.п.The communication line may comprise the communication channel 13 described above. Link 3104 includes, but is not limited to, WI-FI, Ethernet, cable line, wireless link (3G/4G/5G), USB, or any combination thereof, and the like.

Устройство 3102 получения изображения формирует данные и может кодировать данные по способу кодирования, как представлено в приведенных выше вариантах осуществления. Альтернативно, устройство 3102 получения изображения может распределять данные потоковому серверу (не показан на чертежах) и сервер кодирует данные и передает кодированные данные оконечному устройству 3106.The image pickup device 3102 generates data and can encode the data in an encoding method as shown in the above embodiments. Alternatively, the image acquisition device 3102 may distribute the data to a streaming server (not shown in the drawings) and the server encodes the data and transmits the encoded data to the terminal device 3106.

Устройство 3102 получения изображения содержит, не ограничиваясь только этим, камеру, смартфон или планшет, компьютер или переносной компьютер, система видеоконференций, PDA, устройство, монтируемое на транспортном средстве, или сочетание любых из них и т.п. Например, устройство 3102 получения изображения может содержать устройство 12 источника, как описано выше. Когда данные содержат в себе видеоданные, причем видеокодер 20, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс видеокодирования. Когда данные содержат в себе аудиоданные (например, голосовые), аудиокодер, содержащийся в устройстве 3102 получения изображения, реально может выполнять процесс аудиокодирования. Для некоторых практических сценариев устройство 3102 получения изображения распределяет кодированные видеоданные и аудиоданные посредством мультиплексирования их вместе. Для других практических сценариев, например, в системе видеоконференций, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 получения изображения раздельно распределяет кодированные аудиоданные и кодированные видеоданные оконечному устройству 3106. The image acquisition device 3102 includes, but is not limited to, a camera, a smartphone or tablet, a computer or laptop, a video conferencing system, a PDA, a vehicle-mounted device, or a combination of any of these, and the like. For example, the image acquisition device 3102 may include a source device 12 as described above. When the data includes video data, the video encoder 20 included in the image pickup device 3102 can actually perform a video encoding process. When the data contains audio data (eg, voice), the audio encoder contained in the image pickup device 3102 can actually perform the audio encoding process. For some practical scenarios, the image acquisition device 3102 distributes encoded video data and audio data by multiplexing them together. For other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. The image pickup device 3102 separately distributes the encoded audio data and the encoded video data to the terminal device 3106.

В системе 3100 предоставления контента оконечное устройство 3106 принимает и воспроизводит кодированные данные. Оконечное устройство 3106 может быть устройством с возможностями приема и восстановления данных, таким как смартфон или планшет 3108, компьютером или переносным компьютером 3110, сетевым видеорекордером (NVR)/ цифровым видеорекордером (digital video recorder, DVR) 3112, телевизионным приемником 3114, телевизионной приставкой (set top box, STB) 3116, системой 3118 видеоконференций, системой 3120 видеонаблюдения, персональным цифровым помощником (personal digital assistant, PDA) 3122, устройством 3124, монтируемым на транспортном средстве, или сочетанием любых из них и т.п., способным декодировать вышеупомянутые кодированные данные. Например, оконечное устройство 3106 может содержать устройство 14 назначения, как описано выше. Когда кодированные данные содержат в себе видеоданные, видеокодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения видеодекодирования. Когда кодированные данные содержат в себе аудиоданные, аудиодекодер 30, содержащийся в оконечном устройстве, имеет приоритет выполнения аудиодекодирования. In the content delivery system 3100, the terminal device 3106 receives and reproduces the encoded data. The terminal device 3106 may be a device with receive and retrieve capabilities such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a television receiver 3114, a set-top box ( set top box (STB) 3116, a videoconferencing system 3118, a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or a combination of any of them, etc., capable of decoding the above encoded data. For example, terminal device 3106 may include a destination device 14 as described above. When the encoded data includes video data, the video encoder 30 included in the terminal has priority to perform video decoding. When the encoded data contains audio data, the audio decoder 30 contained in the terminal has priority to perform audio decoding.

Для оконечного устройства, имеющего дисплей, например, смартфон или планшет 3108, компьютер или переносной компьютер 3110, сетевой видеорекордер (NVR)/ цифровой видеорекордер (DVR) 3112, телевизионный приемник 3114, персональный цифровой помощник (PDA) 3122, или устройство 3124, монтируемое на транспортном средстве, оконечное устройство может подавать декодированные данные на его дисплей. Для оконечного устройства, не имеющего дисплея, например, STB 3116, система 3118 видеоконференций или система 3120 видеонаблюдения, внешний дисплей 3116 осуществляет с ними связь и показывает декодированные данные.For a terminal device that has a display, such as a 3108 smartphone or tablet, a 3110 computer or laptop, a 3112 Network Video Recorder (NVR)/DVR (Digital Video Recorder) 3112, a 3114 TV, a 3122 Personal Digital Assistant (PDA), or a 3124 mountable on the vehicle, the terminal may provide the decoded data to its display. For a terminal device that does not have a display, such as STB 3116, video conferencing system 3118 or video surveillance system 3120, an external display 3116 communicates with them and shows the decoded data.

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

На фиг. 9 представлена диаграмма структуры примерного оконечного устройства 3106.In FIG. 9 is a diagram of the structure of an exemplary terminal device 3106.

После того, как оконечное устройство 3106 принимает поток от устройства 3102 получения изображения, блок 3202 обработки протокола анализирует протокол передачи потока. Протокол содержит, не ограничиваясь только этим, протокол потоковой передачи в реальном времени (Real Time Streaming Protocol, RTSP), протокол передачи гипертекста (Hyper Text Transfer Protocol, HTTP), протокол живой потоковой передачи HTTP (HTTP Live streaming protocol, HLS), MPEG-DASH, транспортный протокол передачи в реальном времени (Real-time Transport protocol, RTP), протокол передачи сообщений в реальном времени (Real Time Messaging Protocol, RTMP) или их комбинацию любого вида и т.п.After the terminal device 3106 receives the stream from the image pickup device 3102, the protocol processing unit 3202 parses the protocol for transmitting the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hyper Text Transfer Protocol (HTTP), HTTP Live streaming protocol (HLS), MPEG -DASH, Real-time Transport protocol (RTP), Real Time Messaging Protocol (RTMP), or any combination thereof, etc.

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

Посредством процесса демультиплексирования формируются элементарный видеопоток (elementary stream, ES), аудио ES и, как вариант, субтитры. Видеодекодер 3206, который содержит видеодекодер 30, как объяснялось в вышеупомянутых вариантах осуществления, декодирует видео ES способом декодирования, показанным в вышеупомянутых вариантах осуществления, чтобы сформировать видеокадр, и подает эти данные на блок 3212 синхронизации.The demultiplexing process generates an elementary video stream (ES), audio ES, and optionally subtitles. The video decoder 3206, which includes the video decoder 30 as explained in the above embodiments, decodes the video ES by the decoding method shown in the above embodiments to form a video frame, and supplies this data to the synchronization block 3212.

Аудиодекодер 3208 декодирует аудио ES, чтобы сформировать аудиокадр, и подает эти данные на блок 3212 синхронизации. An audio decoder 3208 decodes the audio ES to form an audio frame and provides this data to a sync block 3212.

Альтернативно, видеокадр может быть сохранен в буфере (не показан на фиг. 9) перед его подачей на блок 3212 синхронизации.Alternatively, the video frame may be stored in a buffer (not shown in FIG. 9) before being fed to the sync block 3212.

Аналогично, аудиокадр может быть сохранен в буфере (не показан на фиг. 9) перед его подачей на блок 3212 синхронизации.Likewise, the audio frame may be stored in a buffer (not shown in FIG. 9) before being fed to the sync block 3212.

Блок 3212 синхронизации синхронизирует видеокадр и аудиокадр и подает видео/аудиоданные на дисплей 3214 видео/аудио.Block 3212 synchronization synchronizes the video frame and audio frame and supplies video/audio data to the display 3214 video/audio.

Например, блок 3212 синхронизации синхронизирует представление видео- и аудиоинформации. Информацию можно кодировать в синтаксис, используя временные отметки, относящиеся к презентации кодированных аудио- и видеоданных, и временные отметки, относящиеся к передаче самого потока данных. For example, block 3212 synchronization synchronizes the presentation of video and audio information. The information may be encoded into a syntax using timestamps related to the presentation of the encoded audio and video data and timestamps related to the transmission of the data stream itself.

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

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

Пример 1. Способ построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:Example 1. A method for constructing a list of merge candidates for an intra block copy (IBC) mode, said method comprising the steps of:

вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока (в данном примере перед этим этапом вставления начальный список на слияние является пустым списком), когда левый соседний блок доступен и левый соседний блок использует режим IBC; inserting the block vector of the current block's left neighbor block into the initial merge list of the current block (in this example, before this insertion step, the initial merge list is an empty list) when the left neighbor is available and the left neighbor is using IBC mode;

вставляют блочный вектор верхнего соседнего блока текущего блока в начальный список на слияние (в данном примере перед этим этапом начальный список на слияние является пустым списком или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока), когда верхний соседний блок доступен, верхний соседний блок использует режим IBC и блочный вектор верхнего соседнего блока является не таким, как блочный вектор левого соседнего блока; insert the block vector of the current block's top neighbor block into the initial merge list (in this example, before this step, the initial merge list is an empty list, or the initial merge list contains the block vector of the current block's left neighbor block), when the top neighbor block is available, the top neighbor the block uses IBC mode and the block vector of the top neighbor block is different from the block vector of the left neighbor block;

вставляют блочный вектор правого верхнего соседнего блока текущего блока в начальный список на слияние (в данном примере перед этим этапом начальный список на слияние является пустым списком или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока и блочный вектор левого соседнего блока текущего блока), когда правый верхний соседний блок доступен и правый верхний соседний блок использует режим IBC; insert the block vector of the current block's top right neighbor block into the initial merge list (in this example, before this step, the initial merge list is an empty list, or the initial merge list contains the block vector of the current block's top neighbor block, or the initial merge list contains the block vector of the left block vector of the current block's top neighbor or the initial merge list contains the block vector of the top neighbor of the current block and the block vector of the left neighbor of the current block) when the right top neighbor is available and the right top neighbor is using IBC mode;

Пример 2. Способ, соответствующий примеру 1, в котором способ дополнительно содержит этап, на котором:Example 2 The method of Example 1, wherein the method further comprises:

вставляют блочный вектор левого нижнего соседнего блока текущего блока в начальный список на слияние (в данном примере перед этим этапом начальный список на слияние является пустым списком или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока и блочный вектор левого соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока, блочный вектор левого соседнего блока текущего блока и блочный вектор правого верхнего соседнего блока), когда левый нижний соседний блок доступен и левый нижний соседний блок использует режим IBC; insert the block vector of the current block's left bottom neighbor block into the initial merge list (in this example, before this step, the initial merge list is an empty list, or the initial merge list contains the block vector of the current block's top neighbor block, or the initial merge list contains a block vector the left neighbor block of the current block, or the initial merge list contains the block vector of the top neighbor block of the current block and the block vector of the left neighbor block of the current block, or the initial merge list contains the block vector of the top neighbor block of the current block, the block vector of the left neighbor block of the current block, and top right neighbor block vector) when a bottom left neighbor is available and the bottom left neighbor is using IBC mode;

Пример 3. Способ, соответствующий примеру 1 или 2, в котором способ дополнительно содержит этап, на котором:Example 3 A method according to example 1 or 2, wherein the method further comprises:

вставляют блочный вектор левого верхнего соседнего блока текущего блока в начальный список на слияние (в данном примере перед этим этапом начальный список на слияние является пустым списком или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор левого соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока и блочный вектор левого соседнего блока текущего блока, или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока, блочный вектор левого соседнего блока текущего блока и блочный вектор правого верхнего соседнего блока, или начальный список на слияние содержит блочный вектор верхнего соседнего блока текущего блока, блочный вектор левого соседнего блока текущего блока, блочный вектор правого верхнего соседнего блока и блочный вектор левого нижнего соседнего блока), когда левый верхний соседний блок доступен, левый верхний соседний блок использует режим IBC и количество блочных векторов в начальном списке на слияние меньше порога (например, порог равен 4). insert the block vector of the current block's top left neighbor block into the initial merge list (in this example, before this step, the initial merge list is an empty list, or the initial merge list contains the block vector of the current block's top neighbor block, or the initial merge list contains a block vector the left neighbor block of the current block, or the initial merge list contains the block vector of the top neighbor block of the current block and the block vector of the left neighbor block of the current block, or the initial merge list contains the block vector of the top neighbor block of the current block, the block vector of the left neighbor block of the current block, and the block vector of the top right neighbor block, or the initial merge list contains the block vector of the top neighbor block of the current block, the block vector of the left neighbor block of the current block, the block vector of the right top neighbor block, and the block vector of the left bottom neighbor block) when the left upper neighbor block is available , the top-left neighbor block uses IBC mode and the number of block vectors in the initial merge list is less than a threshold (for example, the threshold is 4).

Пример 4. Кодер (20), содержащий схему обработки для выполнения способа, соответствующего любому из примеров 1-3. Example 4 Encoder (20) containing a processing circuit for performing the method corresponding to any of Examples 1-3.

Пример 5. Декодер (30), содержащий схему обработки для выполнения способа, соответствующего любому из примеров 1-3. Example 5 A decoder (30) containing a processing circuit for performing a method corresponding to any of Examples 1-3.

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

Пример 7. Декодер или кодер, содержащий:Example 7: A decoder or encoder comprising:

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

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

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

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

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

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

+ Сложение+ Addition

- Вычитание (как двухаргументный оператор) или отрицание (как унарный оператор префикса)- Subtraction (as a two-argument operator) or negation (as a unary prefix operator)

* Умножение, в том числе, матричное умножение* Multiplication, including matrix multiplication

хY Возведение в степень. Указывает x в степени y. В других контекстах такое обозначение используют для снабжения верхними индексами, не предназначенными для интерпретации как возведение в степеньx Y Exponentiation. Specifies x to the power of y. In other contexts, this notation is used to provide superscripts not intended to be interpreted as exponentiation.

/Целочисленное деление с усечением результата в направлении нуля. Например, 7/4 и -7/-4 усекаются до 1, а -7/4 и 7/-4 усекаются до -1./Integer division truncating the result towards zero. For example, 7/4 and -7/-4 are truncated to 1, and -7/4 and 7/-4 are truncated to -1.

÷ Используют для обозначения деления в математических уравнениях, в которых никакое усечение или округление не предполагается.÷ Used to denote division in mathematical equations in which no truncation or rounding is expected.

х y

Figure 00000002
Используют для обозначения деления в математических уравнениях, в которых никакое усечение или округление не предполагается. X y
Figure 00000002
Used to indicate division in mathematical equations in which no truncation or rounding is expected.

i = x y f ( i )

Figure 00000003
Суммирование f( i ), где i принимает любые целочисленные значения от x до и включая y. i = x y f ( i )
Figure 00000003
The sum of f( i ), where i takes any integer value from x to and including y.

x%y Модуль. Остаток от x, деленного на y, определяется только для целых чисел x и y, где x >= 0 и y > 0x%y Module. The remainder of x divided by y is only defined for integers x and y where x >= 0 and y > 0

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

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

x && y Булево логическое "И" x и yx && y Boolean logical "AND" x and y

x | | y Булево логическое "ИЛИ" x и yx | | y Boolean logical "OR" x and y

! Булево логическое "НЕ"! Boolean logical "NOT"

x ? y : z Если x TRUE (истинно) или не равно 0, оценивают значение y; в противном случае, оценивают значение z.x? y : z If x is TRUE (true) or not equal to 0, evaluate the value of y; otherwise, the z-value is evaluated.

Операторы соотношенийRatio Operators

Приведенные ниже операторы соотношений определяются следующим образом:The ratio operators below are defined as follows:

> Больше > More

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

< Меньше < Less

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

= = Равно= = Equal

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

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

Поразрядные операторыBitwise Operators

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

& Поразрядное "И". При работе с целочисленными аргументами действует как комплементарное представление до 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0. & Bitwise "AND". When used with integer arguments, acts as a complementary representation up to 2 for an integer value. When dealing with a binary argument containing fewer bits than another argument, the shorter argument is expanded to include more significant bits of 0.

| Побитовое "ИЛИ". При работе с целочисленными аргументами, действует комплементарное представление до 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0.| Bitwise "OR". When working with integer arguments, the complementary representation up to 2 for the integer value is in effect. When dealing with a binary argument containing fewer bits than another argument, the shorter argument is expanded to include more significant bits of 0.

^ Побитовое "исключающее ИЛИ" При работе с целочисленными аргументами, действует комплементарное представление до 2 для целочисленного значения. При работе с двоичным аргументом, содержащим меньше битов, чем другой аргумент, более короткий аргумент расширяют, добавляя более старшие биты, равные 0.^ Bitwise "exclusive OR" When working with integer arguments, the complementary representation up to 2 for the integer value is in effect. When dealing with a binary argument containing fewer bits than another argument, the shorter argument is expanded to include more significant bits of 0.

x >> y Арифметический сдвиг вправо комплементарного целочисленного представления до 2 для двоичных цифр х * у. Эта функция определяется только для неотрицательных целочисленных значений у. Биты, смещенные в старшие значащие разряды (most significant bit, MSB) как результат сдвига вправо, имеют значение, равное MSB для х, предшествующего операции сдвигаx >> y Arithmetic right shift of the complementary integer representation up to 2 for the binary digits x * y. This function is only defined for non-negative integer values of y. Bits shifted to the most significant bit (MSB) as a result of a right shift have a value equal to the MSB for x preceding the shift operation.

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

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

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

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

+ + Приращение вверх, то есть, x+ + эквивалентно x = x + 1; когда используется в матричном индексе, оценивает значение переменной перед операцией приращения вверх.+ + Increment up, that is, x+ + is equivalent to x = x + 1; when used in a matrix index, evaluates the value of the variable before incrementing up.

− − Приращение вниз, то есть, x− − эквивалентно x = x - 1; когда используется в матричном индексе, оценивает значение переменной перед операцией приращения вниз.− − Increment down, that is, x− − is equivalent to x = x - 1; when used in a matrix index, evaluates the value of the variable before incrementing down.

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

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

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

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

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

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

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

Figure 00000004
Figure 00000004

Asin( x ) тригонометрическая обратная синусная функция, действующая на аргументе х, который находится в диапазоне от −1,0 до 1,0, включительно, с выходным значением в диапазоне от −рч2 до рч2, включительно, в единицах радиан. Asin( x ) is a trigonometric inverse sine function acting on an argument x that is in the range −1.0 to 1.0, inclusive, with an output value in the range −rp2 to rp2, inclusive, in units of radians.

Atan( x ) тригонометрическая обратная тангенсная функция, действующая на аргументе х, с выходным значением в диапазоне от −рч2 до рч2, включительно, в единицах радиан. Atan( x ) is a trigonometric inverse tangent function, acting on the argument x, with an output value in the range −rp2 to rp2, inclusive, in units of radians.

Figure 00000005
Figure 00000005

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

b, d = Clip1((F + 0) >> 1) b, d = Clip1((F + 0) >> 1)

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

Figure 00000006
Figure 00000006

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

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

Figure 00000007
Figure 00000007

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

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

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

Figure 00000008
Figure 00000008

Figure 00000009
Figure 00000009

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

Figure 00000010
Figure 00000010

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

Sqrt( x ) =

Figure 00000011
Figure 00000011
Sqrt( x ) =
Figure 00000011
Figure 00000011

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

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

Порядок очередности выполнения операцийOrder of precedence of operations

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

– Операции с более высоким приоритетом вычисляют перед любой операцией более низкого приоритета.– Operations with a higher priority are evaluated before any operation with a lower priority.

– Операции равного приоритета вычисляются последовательно слева направо.– Operations of equal precedence are evaluated sequentially from left to right.

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

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

Таблица: Очередность выполнения операций от наивысшего приоритета (вверху таблицы) к наинизшему (внизу таблицы).Table: Order of execution of operations from highest priority (top of the table) to lowest priority (bottom of the table).

операции (с операндами x, y и z)operations (with operands x, y and z) "x++", "x− −""x++", "x−−" "!x", "−x" (в качестве унарного оператора префикса)"!x", "−x" (as unary prefix operator) xy x y "x * y", "x/y", "x ч y", "

Figure 00000012
Figure 00000012
", "x % y""x * y", "x/y", "x h y", "
Figure 00000012
Figure 00000012
", "x % y" "x + y", "x − y" (в качестве двухаргументного оператора), "
Figure 00000013
"
"x + y", "x − y" (as a two-argument operator), "
Figure 00000013
"
"x << y", "x >> y""x << y", "x >> y" "x < y", "x <= y", "x > y", "x >= y""x < y", "x <= y", "x > y", "x >= y" "x = = y", "x != y""x == y", "x != y" "x & y""x & y" "x | y""x|y" "x && y""x && y" "x | | y""x||y" "x ? y : z""x? y: z" "x..y""x..y" "x = y", "x += y", "x −= y""x = y", "x += y", "x −= y"

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

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

if( condition 0)if( condition 0)

statement 0statement 0

else if( condition 1 )else if( condition 1 )

statement 1statement 1

...
else /* informative remark on remaining condition */
...
else /* informative remark on remaining condition */

statement nstatement n

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

... as follows/... the following applies...:... as follows/... the following applies...:

– If condition 0, statement 0– If condition 0, statement 0

– Otherwise, if condition 1, statement 1– Otherwise, if condition 1, statement 1

– ...- ...

– Otherwise (informative remark on remaining condition), statement n– Otherwise (informative remark on remaining condition), statement n

Каждый оператор "If ... Otherwise, if ... Otherwise, ..." в тексте вводится с помощью "... as follows" or "... the following applies", непосредственно сопровождаясь "If ... ". Последним условием "If ... Otherwise, if ... Otherwise, ..." всегда являются операторы "Otherwise, ...". Interleaved "If ... Otherwise, if ... Otherwise, ...", которые могут идентифицироваться совпадением "... as follows" или "... the following applies" с окончанием "Otherwise, ...".Each "If ... Otherwise, if ... Otherwise, ..." statement in the text is entered with "... as follows" or "... the following applies", immediately followed by "If ... ". The last "If ... Otherwise, if ... Otherwise, ..." conditions are always "Otherwise, ..." statements. Interleaved "If ... Otherwise, if ... Otherwise, ...", which can be identified by matching "... as follows" or "... the following applies" ending in "Otherwise, ...".

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

if( condition 0a && condition 0b )if( condition 0a && condition 0b )

statement 0statement 0

else if( condition 1a | | condition 1b )else if( condition 1a | | condition 1b )

statement 1statement 1

...
else
statement n
...
else
statement n

может быть описано следующим способом:can be described in the following way:

... as follows/... the following applies:... as follows/... the following applies:

– If all of the following conditions are true, statement 0:– If all of the following conditions are true, statement 0:

– condition 0a– condition 0a

– condition 0b– condition 0b

– Otherwise, if one or more of the following conditions are true, statement 1:– Otherwise, if one or more of the following conditions are true, statement 1:

– condition 1a– condition 1a

– condition 1b– condition 1b

– ...- ...

– Otherwise, statement n– Otherwise, statement n

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

if( condition 0 )if( condition 0 )

statement 0statement 0

if( condition 1 )if( condition 1 )

statement 1statement 1

может быть описано следующим способом:can be described in the following way:

When condition 0, statement 0When condition 0, statement 0

When condition 1, statement 1.When condition 1, statement 1.

Хотя варианты осуществления изобретения были описаны, в первую очередь, основываясь на видеокодировании, следует заметить, что варианты осуществления системы 10 кодирования, кодер 20 и декодер 30 (и, соответственно, система 10) и другие варианты осуществления, описанные здесь, могут также быть выполнены с возможностью применения при обработке фотографий или при кодировании, то есть, при обработке или кодировании индивидуального изображения, независимо от любого предыдущего или последующего изображения, как при видеокодировании. В целом, только блоки 244 (кодер) и 344 (декодер) межкадрового предсказания могут быть недоступны в случае, когда кодирование при обработке изображения ограничивается одиночным изображением 17. Although embodiments of the invention have been described primarily based on video coding, it should be noted that embodiments of encoding system 10, encoder 20 and decoder 30 (and thus system 10) and other embodiments described herein may also be performed with the possibility of application in photo processing or in encoding, that is, in the processing or encoding of an individual image, regardless of any previous or subsequent image, as in video encoding. In general, only the inter prediction blocks 244 (encoder) and 344 (decoder) may be unavailable in the case where image processing coding is limited to a single image 17.

Все другие функциональные возможности (также упоминаемые как инструменты или технологии) видеокодера 20 и видеодекодера 30 могут, в равной степени, использоваться для обработки фотографий, например, вычисление 204/304 остатка, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, деление на части 262/362, внутрикадровое предсказание 254/354, и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304. All other functionality (also referred to as tools or technologies) of video encoder 20 and video decoder 30 can equally be used for photo processing, e.g. ) transform 212/312, partitioning 262/362, intra prediction 254/354, and/or loop filtering 220, 320, entropy coding 270, and entropy decoding 304.

Варианты осуществления, например, кодера 20 и декодера 30, и функции, описанные здесь, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы аппаратными средствами, программным обеспечением, встроенным программным обеспечением или любым их сочетанием. При реализации в программном обеспечении функции могут храниться на считываемом компьютером носителе или передаваться через средства связи в виде одной или более команд или кода и исполняться процессором на основе аппаратных средств. Считываемый компьютером носитель может содержать считываемый компьютером носитель запоминающего устройства, соответствующий физическому носителю, такому как носитель запоминающего устройства для хранения данных, или среду связи, содержащую любой носитель, облегчающий передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемый компьютером носитель, в целом, может соответствовать (1) физическому считываемому компьютером носителю запоминающего устройства, являющемуся непереносным, или (2) носителю связи, такому как сигнал или несущая. Носитель запоминающего устройства для хранения данных может быть любым доступным носителем, к которому может получать доступ один или более компьютеров один или более компьютеров или один или более процессоров, чтобы восстанавливать команды, управляющую программу и/или структуры данных для реализации технологий, описанных в настоящем раскрытии. Компьютерный программный продукт может содержать считываемый компьютером носитель.Embodiments of, for example, encoder 20 and decoder 30, and the functions described herein, for example, with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored on a computer-readable medium or transmitted via communications as one or more instructions or code and executed by a processor in hardware. The computer-readable medium may comprise a computer-readable storage medium corresponding to a physical medium, such as a storage medium for data storage, or a communication medium comprising any medium facilitating the transfer of a computer program from one place to another, such as according to a communication protocol. Thus, computer-readable media may generally correspond to (1) physical, computer-readable storage media that is non-portable, or (2) a communication medium such as a signal or carrier. A storage media can be any available media that can be accessed by one or more computers, one or more computers, or one or more processors to retrieve instructions, control program, and/or data structures for implementing the technologies described in this disclosure. . The computer program product may include a computer-readable medium.

Для примера, но не для ограничения, такой считываемый компьютером носитель запоминающего устройства может содержать оперативную память (RAM), постоянную память (ROM), электрически стираемую программируемую постоянную память (EEPROM), компакт-диск (CD-ROM) или другое запоминающее устройство на оптических дисках, запоминающее устройство на магнитных дисках или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемой управляющей программы в форме команд или структур данных и может быть доступен компьютеру. Кроме того, любое соединение соответственно называется считываемым компьютером носителем. Например, если команды передаются с веб-сайта, сервера или от другого удаленного источника, используя коаксиальный кабель, оптический кабель, витую пару, цифровую абонентскую линию (digital subscriber line, DSL) или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, то тогда коаксиальный кабель, оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная, радиоволновая или микроволновая, содержатся в определении носителя. Однако, следует понимать, что считываемый компьютером носитель запоминающего устройства для хранения данных и носитель запоминающего устройства данных могут не содержать соединения, несущие, сигналы или другие переносные носители, но являться непереносными физическими носителями для хранения данных. Диски содержат компакт-диски (CD)ерные диски, оптические диски, универсальные цифровые диски (DVD), дискеты и диски Blu-ray, где одни диски обычно воспроизводят данные магнитным способом, тогда как другие диски воспроизводят данные оптически с помощью лазеров. Сочетания вышеперечисленного также могут содержаться в рамках объема считываемых компьютером носителей.By way of example, and not limitation, such computer-readable storage media may comprise random access memory (RAM), read-only memory (ROM), electrically erasable programmable read-only memory (EEPROM), a compact disc (CD-ROM), or other storage device on optical disks, magnetic disk storage or other magnetic storage devices, flash memory or any other medium that can be used to store the desired control program in the form of instructions or data structures and can be accessed by a computer. In addition, any connection is appropriately referred to as a computer-readable medium. For example, if commands are transmitted from a website, server, or other remote source using coaxial cable, optical cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio wave, or microwave, then then coaxial cable, optical cable, twisted pair, DSL, or wireless technologies such as infrared, radio wave, or microwave are contained in the media definition. However, it should be understood that computer-readable storage media and storage media may not contain connections, carriers, signals, or other portable media, but be non-transferable physical storage media. The discs include compact discs (CD) black discs, optical discs, digital versatile discs (DVDs), floppy disks and Blu-ray discs, where some discs typically reproduce data magnetically while other discs reproduce data optically using lasers. Combinations of the above may also be included within the scope of computer-readable media.

Команды могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (digital signal processor, DSP), универсальные микропроцессоры, специализированные интегральные схемы (application-specific integrated circuit, ASIC), программируемые логические интегральные схемы (field programmable gate array, FPGA) или другие эквивалентные интегральные или дискретные логические схемы. Соответственно, термин "процессор", как он используется здесь, может относиться к любой из вышеперечисленных структур или к любой другой структуре, пригодной для реализации описанных здесь технологий. Кроме того, в некоторых вариантах функциональные возможности, представленные в настоящем описании, могут быть обеспечены в рамках специализированных аппаратных средств и/или в модулях программного обеспечения, выполненных с возможностью кодирования и декодирования, или могут содержаться объединенном кодеке. Кроме того, технологии могут быть полностью реализованы в одной или нескольких схемах или логических элементах.Instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays, FPGA) or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor" as used herein may refer to any of the above structures, or to any other structure suitable for implementing the technologies described here. In addition, in some embodiments, the functionality presented herein may be provided within dedicated hardware and/or software modules capable of encoding and decoding, or may be contained in a combined codec. In addition, technologies may be fully implemented in one or more circuits or logic elements.

Технологии, описанные в настоящем раскрытии, могут быть реализованы широким разнообразием устройств, в том числе, беспроводным мобильным телефоном, интегральной схемой (integrated circuit, IC) или набором IC (например, набором чипов). Различные компоненты, модули или блоки описываются в насоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью осуществления раскрытых технологий, но не обязательно требующих реализации с помощью различных аппаратных блоков. Точнее, как описано выше, различные блоки могут объединяться в аппаратный блок кодера-декодера или могут обеспечиваться с помощью набора способных к взаимодействию аппаратных средств, содержащих один или более процессоров, как описано выше, в сочетании с соответствующим программным обеспечением и встроенным программным обеспечением.The technologies described in this disclosure may be implemented by a wide variety of devices, including a wireless mobile phone, an integrated circuit (IC), or an IC stack (eg, a stack of chips). Various components, modules, or blocks are described in this disclosure to emphasize the functional aspects of devices capable of implementing the disclosed technologies, but not necessarily requiring implementation with different hardware blocks. More specifically, as described above, the various blocks may be combined into an encoder/decoder hardware block, or may be provided by a set of interoperable hardware comprising one or more processors as described above, in combination with appropriate software and firmware.

Claims (42)

1. Способ для построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:1. A method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of: вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока, когда левый соседний блок доступен и левый соседний блок использует режим IBC; inserting a left neighbor block vector of the current block into the initial merge list of the current block when the left neighbor is available and the left neighbor is using IBC mode; вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние, когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор левого соседнего блока; иinserting the block vector of the aforementioned neighbor block of the current block into the initial merge list, when the aforementioned neighbor block is available, the aforementioned neighbor block uses the IBC mode, and the block vector of the aforementioned neighbor block is not the same as the block vector of the left neighbor block; And вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных (HMVP), в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP, и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP.inserting the block vector of the last candidate in the archive-based motion vector predictor (HMVP) into the initial merge list when the block vector of the aforementioned neighbor block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left neighbor block is not the same as the block vector of the last HMVP candidate. 2. Способ по п. 1, в котором способ дополнительно содержит этап, на котором:2. The method of claim 1, wherein the method further comprises: получают блочный вектор текущего блока, соответствующий начальному списку на слияние, после вышеупомянутых процессов вставки, и индекс кандидата на слияние для текущего блока.obtaining a block vector of the current block corresponding to the initial merge list after the above insertion processes, and a merge candidate index for the current block. 3. Способ для построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:3. A method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of: вставляют блочный вектор соседнего блока текущего блока в начальный список на слияние текущего блока, когда соседний блок доступен и соседний блок использует режим IBC;inserting a neighbor block vector of the current block into the initial merge list of the current block when the neighbor block is available and the neighbor block uses the IBC mode; вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных (HMVP), в начальный список на слияние, когда блочный вектор соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP; иinserting a block vector of the last candidate in the history-based motion vector predictor (HMVP) into the initial merge list when the block vector of the adjacent block is not the same as the block vector of the last HMVP candidate; And вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение для блочного вектора другого кандидата в HMVP удаляют.inserting the block vector of the other HMVP candidate into the initial merge list in which the abbreviation for the block vector of the other HMVP candidate is removed. 4. Способ по п. 3, в котором способ дополнительно содержит этап, на котором:4. The method of claim 3, wherein the method further comprises: получают блочный вектор текущего блока, соответствующий начальному списку на слияние после вышеупомянутых процессов вставки, и индекс кандидата на слияние для текущего блока.obtaining a block vector of the current block corresponding to the initial merge list after the above insertion processes, and a merge candidate index for the current block. 5. Способ для построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:5. A method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of: вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока, когда левый соседний блок доступен и левый соседний блок использует режим IBC;inserting a left neighbor block vector of the current block into the initial merge list of the current block when the left neighbor is available and the left neighbor is using IBC mode; вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние, когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор левого соседнего блока;inserting the block vector of the aforementioned neighbor block of the current block into the initial merge list, when the aforementioned neighbor block is available, the aforementioned neighbor block uses the IBC mode, and the block vector of the aforementioned neighbor block is not the same as the block vector of the left neighbor block; вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных (HMVP), в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP, и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP; иinserting the block vector of the last candidate in the archive-based motion vector predictor (HMVP) into the initial merge list when the block vector of the aforementioned neighbor block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left neighbor block is not the same as the block vector of the latest HMVP candidate; And вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение для блочного вектора другого кандидата в HMVP удаляют.inserting the block vector of the other HMVP candidate into the initial merge list in which the abbreviation for the block vector of the other HMVP candidate is removed. 6. Способ по п. 5, в котором способ дополнительно содержит этап, на котором:6. The method of claim 5, wherein the method further comprises: получают блочный вектор текущего блока, соответствующий начальному списку на слияние после вышеупомянутых процессов вставки, и индекс кандидата на слияние для текущего блока.obtaining a block vector of the current block corresponding to the initial merge list after the above insertion processes, and a merge candidate index for the current block. 7. Способ по п. 5 или 6, в котором начальный список на слияние перед первым процессом вставки является пустым списком.7. The method of claim 5 or 6, wherein the initial merge list before the first insertion process is an empty list. 8. Способ по любому из пп. 5-7, в котором вышеупомянутые процессы вставки выполняют по порядку.8. The method according to any one of paragraphs. 5-7, in which the above-mentioned insertion processes are performed in order. 9. Способ для построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:9. A method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of: вставляют блочный вектор соседнего блока текущего блока в начальный список на слияние текущего блока, когда соседний блок доступен и соседний блок использует режим IBC; иinserting a neighbor block vector of the current block into the initial merge list of the current block when the neighbor block is available and the neighbor block uses the IBC mode; And вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных (HMVP), в начальный список на слияние, когда блочный вектор соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP;inserting a block vector of the last candidate in the history-based motion vector predictor (HMVP) into the initial merge list when the block vector of the adjacent block is not the same as the block vector of the last HMVP candidate; в котором последний блочный вектор в начальном списке на слияние текущего блока является блочным вектором одного кандидата в HMVP.in which the last block vector in the initial merge list of the current block is the block vector of one HMVP candidate. 10. Способ по п. 9, в котором способ дополнительно содержит этап, на котором:10. The method of claim 9, wherein the method further comprises: получают блочный вектор текущего блока, соответствующий начальному списку на слияние после вышеупомянутых процессов вставки, и индекс кандидата на слияние для текущего блока.obtaining a block vector of the current block corresponding to the initial merge list after the above insertion processes, and a merge candidate index for the current block. 11. Способ для построения списка кандидатов на слияние для режима внутрикадрового копирования блоков (Intra block copy, IBC), причем упомянутый способ содержит этапы, на которых:11. A method for constructing a merge candidate list for Intra block copy (IBC) mode, said method comprising the steps of: вставляют блочный вектор левого соседнего блока текущего блока в начальный список на слияние текущего блока, когда левый соседний блок доступен и левый соседний блок использует режим IBC;inserting a left neighbor block vector of the current block into the initial merge list of the current block when the left neighbor is available and the left neighbor is using IBC mode; вставляют блочный вектор вышеупомянутого соседнего блока текущего блока в начальный список на слияние, когда вышеупомянутый соседний блок доступен, вышеупомянутый соседний блок использует режим IBC и блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор левого соседнего блока;inserting the block vector of the aforementioned neighbor block of the current block into the initial merge list, when the aforementioned neighbor block is available, the aforementioned neighbor block uses the IBC mode, and the block vector of the aforementioned neighbor block is not the same as the block vector of the left neighbor block; вставляют блочный вектор последнего кандидата в предикторе вектора движения, основанного на архивных данных (HMVP), в начальный список на слияние, когда блочный вектор вышеупомянутого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP, и когда блочный вектор левого соседнего блока не является таким же, как блочный вектор последнего кандидата в HMVP; иinserting the block vector of the last candidate in the archive-based motion vector predictor (HMVP) into the initial merge list when the block vector of the aforementioned neighbor block is not the same as the block vector of the last HMVP candidate, and when the block vector of the left neighbor block is not the same as the block vector of the latest HMVP candidate; And вставляют блочный вектор другого кандидата в HMVP в начальный список на слияние, в котором сокращение для блочного вектора другого кандидата в HMVP удаляется, иinserting the block vector of the other HMVP candidate into the initial merge list in which the abbreviation for the block vector of the other HMVP candidate is removed, and в котором последний блочный вектор в начальном списке на слияние текущего блока является блочным вектором другого кандидата в HMVP.where the last block vector in the current block's initial merge list is a block vector of another HMVP candidate. 12. Кодер (20), содержащий схему обработки для выполнения способа, соответствующего любому из пп. 1-11.12. Encoder (20), containing the processing circuit for performing the method corresponding to any one of paragraphs. 1-11. 13. Декодер (30), содержащий схему обработки для выполнения способа, соответствующего любому из пп. 1-11.13. Decoder (30) containing the processing circuit for performing the method corresponding to any one of paragraphs. 1-11. 14. Считываемый компьютером носитель, содержащий программный код для выполнения способа по любому из пп. 1-11.14. Computer-readable media containing program code for performing the method according to any one of paragraphs. 1-11. 15. Декодер, содержащий:15. Decoder, containing: один или более процессоров; иone or more processors; And непереносной считываемый компьютером носитель запоминающего устройства, связанный с процессорами и хранящий программирование для его исполнения процессорами, в котором, программирование, когда исполняется процессорами, конфигурирует декодер для выполнения способа, соответствующего любому из пп. 1-11.a non-portable, computer-readable storage medium associated with the processors and storing programming for execution by the processors, wherein the programming, when executed by the processors, configures a decoder to perform the method of any one of claims. 1-11. 16. Устройство декодирования видеоданных, содержащее:16. A video data decoding device, comprising: энергонезависимое запоминающее устройство, сконфигурированное для хранения видеоданных в форме битового потока; а такжеa non-volatile storage device configured to store video data in the form of a bit stream; and видеодекодер, сконфигурированный для выполнения способа по любому из пп. 1-11.a video decoder configured to perform the method according to any one of paragraphs. 1-11.
RU2021119784A 2019-03-04 2020-02-10 Encoder, decoder and corresponding methods using intra-frame block copy merge list RU2797574C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/813,690 2019-03-04
US62/815,311 2019-03-07

Publications (2)

Publication Number Publication Date
RU2021119784A RU2021119784A (en) 2023-01-09
RU2797574C2 true RU2797574C2 (en) 2023-06-07

Family

ID=

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
LI ZHANG et al., CE4-related: Restrictions on History-based Motion Vector Prediction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-M0272, 13th Meeting: Marrakech, 9-18 Jan. 2019. BENJAMIN BROSS et al., Versatile Video Coding (Draft 4), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-M1001-v5, 13th Meeting: Marrakech, 9-18 Jan. 2019. LI ZHANG et al., CE4-related: History-based Motion Vector Prediction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0104-v1, 11th Meeting: Ljubljana, 10-18 July 2018. EP 3308544 A1 - 2018-04-18. WO 2015180014 A1 - 2015-12-03. RU 2632158 С2 - 2017-10-02. US 2016105670 A1 - 2016-04-14. *

Similar Documents

Publication Publication Date Title
KR102596735B1 (en) An encoder, a decoder and corresponding methods using ibc dedicated buffer and default value refreshing for luma and chroma component
CN112913250B (en) Encoder, decoder and corresponding methods using IBC search range optimization for arbitrary CTU sizes
JP7405870B2 (en) Encoder, decoder and corresponding method used for IBC merge list
US11909959B2 (en) Encoder, a decoder and corresponding methods for merge mode
US11876997B2 (en) Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction
CN113660497B (en) Encoder, decoder and corresponding methods using IBC merge lists
CN112913236B (en) Encoder, decoder and corresponding methods using compressed MV storage
CN114125468A (en) Intra-frame prediction method and device
CN113615173A (en) Method and device for carrying out optical flow prediction correction on affine decoding block
RU2797574C2 (en) Encoder, decoder and corresponding methods using intra-frame block copy merge list
RU2817030C2 (en) Encoder, decoder and corresponding use methods for ibc combining list
JP7477066B2 (en) Encoder, decoder and corresponding method using IBC merge lists
RU2800681C2 (en) Coder, decoder and corresponding methods for intra prediction
RU2801326C2 (en) Coder, decoder and corresponding methods using allocated ibc buffer and default value updated brightness and colour component
US20240137499A1 (en) Encoder, a decoder and corresponding methods for merge mode