RU2793708C1 - Method and device for transmitting predictor candidate list size for intra-frame block compensation - Google Patents

Method and device for transmitting predictor candidate list size for intra-frame block compensation Download PDF

Info

Publication number
RU2793708C1
RU2793708C1 RU2021122958A RU2021122958A RU2793708C1 RU 2793708 C1 RU2793708 C1 RU 2793708C1 RU 2021122958 A RU2021122958 A RU 2021122958A RU 2021122958 A RU2021122958 A RU 2021122958A RU 2793708 C1 RU2793708 C1 RU 2793708C1
Authority
RU
Russia
Prior art keywords
candidates
maximum number
video
ibc
merge
Prior art date
Application number
RU2021122958A
Other languages
Russian (ru)
Inventor
Сяочжун СЮЙ
Сян Ли
Шань ЛЮ
Original Assignee
TEНСЕНТ АМЕРИКА ЭлЭлСи
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 TEНСЕНТ АМЕРИКА ЭлЭлСи filed Critical TEНСЕНТ АМЕРИКА ЭлЭлСи
Application granted granted Critical
Publication of RU2793708C1 publication Critical patent/RU2793708C1/en

Links

Images

Abstract

FIELD: video coding.
SUBSTANCE: video decoding method is provided, and comprises the receipt of an encoded video bitstream including a current image, and also includes determining a predetermined condition associated with transmission data included in the encoded video bitstream; determining, based on a predetermined condition, of an index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy candidates (IBC); building a list of candidates with vector predictors; extracting a vector predictor from the list of candidates according to an index whose value does not exceed a certain index size; and decoding the current block in accordance with the extracted vector predictor.
EFFECT: increase in the efficiency of video coding/decoding.
7 cl, 21 dwg, 2 tbl

Description

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИINCLUSION BY LINK

[1] В настоящем раскрытии испрашивается преимущество приоритета патентной заявки США № 16/863,661 «СПОСОБ И УСТРОЙСТВО ДЛЯ ПЕРЕДАЧИ РАЗМЕРА СПИСКА КАНДИДАТОВ-ПРЕДИКТОРОВ ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 30 апреля 2020 г., в которой испрашивается преимущество приоритета предварительной заявки США № 62/904,307 «СПОСОБЫ предсказания ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 23 сентября 2019 г., и предварительной заявки США № 62/873,044 «ПЕРЕДАЧА РАЗМЕРА СПИСКА КАНДИДАТОВ-ПРЕДИКТОРОВ ДЛЯ ВНУТРИКАДРОВОЙ КОМПЕНСАЦИИ БЛОКА», поданной 11 июля 2019 г. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.[1] This disclosure claims the benefit of priority of U.S. Patent Application No. 16/863,661 "METHOD AND APPARATUS FOR TRANSMITTING THE SIZE OF A PREDICTOR CANDIDATE LIST FOR INTRA-FRAME BLOCK COMPENSATION", filed April 30, 2020, which claims the benefit of priority of U.S. Provisional Application No. 62 /904,307 “PREDICTION METHODS FOR INTRAFRAME BLOCK EVENT” filed September 23, 2019 and U.S. Provisional Application No. 62/873,044 “TRANSFER OF PREDICTOR CANDIDATE LIST SIZE FOR INTRAFRAME BLOCK EVENT” filed July 11, 2019 Full disclosure of prior applications in full included in the present description by reference.

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

[2] Настоящее раскрытие описывает варианты осуществления, в основном относящиеся к кодированию видео.[2] The present disclosure describes embodiments primarily related to video coding.

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

[3] Описание уровня техники, представленное в данном документе, предназначено для общего представления контекста раскрытия. Работа названных в настоящее время изобретателей, в той мере, в какой она описана в этом разделе описания уровня техники, а также аспекты описания, которые в противном случае не могут считаться предшествующим уровнем техники на момент подачи заявки, ни прямо, ни косвенно не признаются в качестве предшествующего уровня техники в отношении настоящего раскрытия.[3] The description of the prior art provided herein is intended to provide a general overview of the context of the disclosure. The work of the currently named inventors, to the extent that it is described in this section of the description of the prior art, as well as aspects of the description that would otherwise not be considered prior art at the time of filing, are neither expressly nor impliedly recognized in as prior art with respect to the present disclosure.

[4] Кодирование и декодирование видео могут выполняться с использованием межкадрового предсказания с компенсацией движения. Несжатое цифровое видео может включать в себя серию изображений, причем каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображения (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080p60 4:2:0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.[4] Video encoding and decoding may be performed using motion-compensated inter-picture prediction. Uncompressed digital video may include a series of images, each image having a spatial size of, for example, 1920×1080 luma samples and associated chrominance samples. A series of images can have a fixed or variable image rate (informally also known as frame rate), such as 60 images per second or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video at 8 bits per sample (1920x1080 brightness sample resolution at 60Hz frame rate) requires bandwidth close to 1.5Gbps. An hour of such video requires more than 600 GB of disk space.

[5] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых точная копия исходного сигнала может быть восстановлена из сжатого исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого применения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.[5] One of the goals of video encoding and decoding may be to reduce the redundancy of the input video signal through compression. Compression can help reduce the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. Both lossless and lossy compression, as well as a combination of both, can be used. Lossless compression refers to techniques where an exact copy of the original signal can be reconstructed from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the distortion between the original and reconstructed signals is small enough to make the reconstructed signal useful for the intended application. In the case of video, lossy compression is widely used. The amount of distortion allowed depends on the application; for example, users of certain consumer streaming applications may tolerate higher distortion than users of television distribution applications. The achievable compression ratio may reflect the following: higher distortion resolution/tolerance may result in a higher compression ratio.

[6] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок отсчетных данных из ранее восстановленного изображения или его части (опорное изображение) после пространственного сдвига в направлении, указанном вектором движения (далее MV), используется для предсказания вновь восстановленного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как восстанавливаемое в настоящее время изображение. MV могут иметь два измерения X и Y или три измерения, причем третье является показателем используемого опорного изображения (последнее, косвенно, может быть измерением времени).[6] Motion compensation may be a lossy compression technique and may refer to techniques in which a block of sample data from a previously reconstructed image or part of it (reference image) after a spatial shift in the direction indicated by the motion vector (hereinafter MV) is used for prediction newly reconstructed image or part of an image. In some cases, the reference image may be the same as the image currently being restored. The MVs may have two X and Y dimensions, or three dimensions, with the third being indicative of the reference picture used (the latter, indirectly, may be a time dimension).

[7] В некоторых методах сжатия видео MV, применимый к определенной области отсчетных данных, может быть предсказан из других MV, например, из тех, которые относятся к другой области отсчетных данных, пространственно смежных с восстанавливаемой областью и предшествующих этому MV в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования MV, тем самым устраняя избыточность и увеличивая степень сжатия. Предсказание MV может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного с камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим отдельный MV, перемещаются в аналогичном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием аналогичного вектора движения, полученного из MV соседней области. Это приводит к тому, что MV, найденный для данной области, аналогичен или совпадает с MV, предсказанным из окружающих MV, и который, в свою очередь, может быть представлен после энтропийного кодирования в меньшем количестве битов, чем то, которое было бы использовано при кодировании MV напрямую. В некоторых случаях предсказание MV может быть примером сжатия без потерь сигнала (а именно: MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях само предсказание MV может быть с потерями, например, из-за ошибок округления при вычислении предиктора из нескольких окружающих MV.[7] In some video compression techniques, the MV applicable to a certain region of the sample data can be predicted from other MVs, for example, those belonging to another region of the sample data, spatially adjacent to the region being reconstructed and preceding this MV in decoding order. This can greatly reduce the amount of data required for MV encoding, thereby eliminating redundancy and increasing the compression rate. MV prediction can work efficiently, for example, because when encoding a video input signal received from a camera (known as natural video), there is a statistical probability that areas larger than the area to which a single MV is applied move in a similar direction and, therefore, in some cases, can be predicted using a similar motion vector obtained from the MV of the neighboring area. This results in the MV found for a given region being similar or identical to the MV predicted from the surrounding MVs, which in turn can be represented after entropy encoding in fewer bits than what would be used in MV encoding directly. In some cases, MV prediction may be an example of lossless compression of a signal (namely MV) derived from the original signal (namely a stream of samples). In other cases, the MV prediction itself may be lossy, for example, due to rounding errors when computing a predictor from multiple surrounding MVs.

[8] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. H.265, «High Efficiency Video Coding», декабрь 2016 г.). Из множества механизмов предсказания MV, которые предлагает H.265, здесь описывается метод, далее именуемый «пространственным слиянием».[8] Various MV prediction mechanisms are described in H.265/HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). Of the many MV prediction mechanisms that H.265 offers, a method hereinafter referred to as "spatial fusion" is described.

[9] Как показано на фиг. 1, текущий блок (101) содержит отсчеты, которые были обнаружены кодером во время процесса поиска движения как предсказываемые из предыдущего блока того же размера, который был пространственно сдвинут. Вместо того, чтобы кодировать этот MV напрямую, MV может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с одним из пяти окружающих отсчетов, обозначенных A0 , A1 и B0, B1, B2 (102-106 соответственно). В H.265 предсказание MV может использовать предикторы из того же опорного изображения, который использует соседний блок. Порядок формирования списка кандидатов может быть

Figure 00000001
[9] As shown in FIG. 1, the current block (101) contains samples that were detected by the encoder during the motion search process as being predicted from a previous block of the same size that was spatially shifted. Instead of encoding this MV directly, the MV can be obtained from the metadata associated with one or more reference pictures, for example, from the most recent (in decoding order) reference picture, using the MV associated with one of the five surrounding samples, denoted A0 , A1 and B0, B1, B2 (102-106 respectively). In H.265, MV prediction may use predictors from the same reference picture as the neighboring block uses. The procedure for generating a list of candidates can be
Figure 00000001

РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯDISCLOSURE OF THE INVENTION

[10] Согласно примерному варианту осуществления способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ включает в себя определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Способ включает в себя определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Способ включает в себя построение списка кандидатов с векторными предикторами. Способ включает в себя извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Способ дополнительно включает в себя декодирование текущего блока в соответствии с извлеченным векторным предиктором.[10] According to an exemplary embodiment, a video decoding method includes receiving an encoded video bitstream including a current picture. The method includes determining a predetermined condition associated with transmission data included in an encoded video bitstream. The method includes determining, based on a predetermined condition, an index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy (IBC) candidates. The method includes constructing a candidate list with vector predictors. The method includes extracting a vector predictor from the candidate list according to an index whose value does not exceed a certain index size. The method further includes decoding the current block in accordance with the extracted vector predictor.

[11] Согласно примерному варианту осуществления способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ дополнительно включает в себя извлечение данных передачи из кодированного битового потока видео для текущего блока. Способ дополнительно включает в себя определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Способ дополнительно включает в себя установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[11] According to an exemplary embodiment, a video decoding method includes receiving an encoded video bitstream including a current picture. The method further includes extracting transmission data from the encoded video bitstream for the current block. The method further includes determining whether the maximum number of merge candidates is included in the extracted transmission data for the current block. The method further includes setting a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

[12] Согласно примерному варианту осуществления устройство декодирования видео для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение. Схема обработки дополнительно конфигурирована для определения заранее определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Схема обработки дополнительно конфигурирована для определения, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Схема обработки дополнительно конфигурирована для построения списка кандидатов с векторными предикторами, извлечения векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Схема обработки дополнительно конфигурирована для декодирования текущего блока в соответствии с извлеченным векторным предиктором.[12] According to an exemplary embodiment, a video decoding apparatus for decoding a video includes a processing circuit configured to receive an encoded video bitstream including a current picture. The processing circuit is further configured to determine a predetermined condition associated with transmission data included in the encoded video bitstream. The processing circuit is further configured to determine, based on a predetermined condition, an index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy (IBC) candidates. The processing circuit is further configured to build a candidate list with vector predictors, extract a vector predictor from the candidate list according to an index whose value does not exceed a certain index size. The processing circuit is further configured to decode the current block in accordance with the extracted vector predictor.

[13] Согласно примерному варианту осуществления устройство видеодекодера для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение. Схема обработки дополнительно конфигурирована для извлечения данных передачи из кодированного битового потока видео для текущего блока. Схема обработки дополнительно конфигурирована для определения, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Схема обработки дополнительно конфигурирована для установки максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[13] According to an exemplary embodiment, a video decoder apparatus for decoding video includes a processing circuit configured to receive an encoded video bitstream including a current picture. The processing circuit is further configured to extract transmission data from the encoded video bitstream for the current block. The processing circuit is further configured to determine whether the maximum number of merge candidates is included in the extracted transmission data for the current block. The processing circuit is further configured to set a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

[14] Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, который включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ включает в себя определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео. Способ включает в себя определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC). Способ включает в себя построение списка кандидатов с векторными предикторами. Способ включает в себя извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса. Способ дополнительно включает в себя декодирование текущего блока в соответствии с извлеченным векторным предиктором.[14] A non-transitory computer-readable storage medium containing instructions stored thereon that, when executed by a processor in a video decoder, cause the processor to perform a method that includes receiving an encoded video bitstream including a current picture. The method includes determining a predetermined condition associated with transmission data included in an encoded video bitstream. The method includes determining, based on a predetermined condition, an index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy (IBC) candidates. The method includes constructing a candidate list with vector predictors. The method includes extracting a vector predictor from the candidate list according to an index whose value does not exceed a certain index size. The method further includes decoding the current block in accordance with the extracted vector predictor.

[15] Невременный машиночитаемый носитель информации, имеющий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, который включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение. Способ дополнительно включает в себя извлечение данных передачи из кодированного битового потока видео для текущего блока. Способ дополнительно включает в себя определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Способ дополнительно включает в себя установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[15] A non-transitory computer-readable storage medium having instructions stored thereon that, when executed by a processor in a video decoder, cause the processor to perform a method that includes receiving an encoded video bitstream including a current picture. The method further includes extracting transmission data from the encoded video bitstream for the current block. The method further includes determining whether the maximum number of merge candidates is included in the extracted transmission data for the current block. The method further includes setting a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

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

[16] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых:[16] Additional features, essence and various advantages of the disclosed subject matter will be more apparent from the following detailed description and the accompanying drawings, in which:

[17] - на фиг. 1 показана схематическая иллюстрация текущего блока и окружающих его кандидатов на пространственное слияние в одном примере;[17] - in Fig. 1 is a schematic illustration of the current block and its surrounding spatial merge candidates in one example;

[18] - на фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы (200) связи в соответствии с вариантом осуществления;[18] - in Fig. 2 is a schematic illustration of a simplified block diagram of a communications system (200) in accordance with an embodiment;

[19] - на фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы системы (300) связи в соответствии с вариантом осуществления;[19] - in Fig. 3 is a schematic illustration of a simplified block diagram of a communications system (300) in accordance with an embodiment;

[20] - на фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантом осуществления;[20] - in Fig. 4 is a schematic illustration of a simplified block diagram of a decoder according to an embodiment;

[21] - на фиг. 5 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантом осуществления;[21] - in Fig. 5 is a schematic illustration of a simplified block diagram of an encoder according to an embodiment;

[22] - на фиг. 6 показана блок-схема кодера в соответствии с другим вариантом осуществления;[22] - in Fig. 6 is a block diagram of an encoder according to another embodiment;

[23] - на фиг. 7 показана блок-схема декодера в соответствии с другим вариантом осуществления;[23] - in Fig. 7 is a block diagram of a decoder according to another embodiment;

[24] - на фиг. 8 показана схематическая иллюстрация внутрикадровой компенсации блока в соответствии с вариантом осуществления;[24] - in Fig. 8 is a schematic illustration of an intra-frame block compensation according to an embodiment;

[25] - на фиг. 9A-9D показана схематическая иллюстрация внутрикадровой компенсации блока с диапазоном поиска размера одной единицы дерева кодирования (CTU) в соответствии с вариантом осуществления;[25] - in Fig. 9A-9D are schematic illustrations of intra-frame block compensation with a search range of one coding tree unit (CTU) size, according to an embodiment;

[26] - на фиг. 10A-10D показана схематическая иллюстрация того, как обновляется буфер, в соответствии с вариантами осуществления;[26] - in Fig. 10A-10D show a schematic illustration of how a buffer is updated, in accordance with embodiments;

[27] - на фиг. 11A показана иллюстрация блок-схемы декодирования для буфера предсказания MV на основе истории (HMVP);[27] - in Fig. 11A is an illustration of a decoding block diagram for a history-based MV prediction buffer (HMVP);

[28] - на фиг. 11B показана схематическая иллюстрация обновления буфера HMVP;[28] - in Fig. 11B is a schematic illustration of an HMVP buffer update;

[29] - на фиг. 12 показана иллюстрация примерного процесса декодирования в соответствии с вариантом осуществления;[29] - in Fig. 12 is an illustration of an exemplary decoding process according to an embodiment;

[30] - на фиг. 13 показана иллюстрация примерного процесса декодирования в соответствии с вариантом осуществления;[30] - in Fig. 13 is an illustration of an exemplary decoding process according to an embodiment;

[31] - на фиг. 14 показана схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления настоящего раскрытия.[31] - in Fig. 14 is a schematic illustration of a computer system in accordance with an embodiment of the present disclosure.

ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯIMPLEMENTATION OF THE INVENTION

[32] На фиг. 2 проиллюстрирована упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего раскрытия. Система (200) связи включает в себя множество оконечных устройств, которые могут связываться друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере с фиг. 2 первая пара оконечных устройств (210) и (220) выполняет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством (210)) для передачи другому оконечному устройству (220) через сеть (250). Кодированные видеоданные могут быть переданы в форме одного или более кодированных битовых потоков видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения в соответствии с восстановленными видеоданными. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.[32] FIG. 2 illustrates a simplified block diagram of a communications system (200) according to an embodiment of the present disclosure. The communication system (200) includes a plurality of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminals (210) and (220) interconnected via a network (250). In the example of FIG. 2, the first pair of terminals (210) and (220) performs a unidirectional data transfer. For example, terminal (210) may encode video data (eg, a video stream that is captured by terminal (210)) for transmission to another terminal (220) over network (250). The encoded video data may be transmitted in the form of one or more encoded video bitstreams. The terminal device (220) may receive the encoded video data from the network (250), decode the encoded video data to recover the video images, and display the video images in accordance with the recovered video data. One-way communication may be common in media serving applications and the like.

[33] В другом примере система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые выполняют двунаправленную передачу кодированных видеоданных, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных, в примере, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, которые захватываются оконечным устройством) для передачи на другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, переданные другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений, и может отображать видеоизображения на доступном устройстве отображения в соответствии с восстановленными видеоданными.[33] In another example, the communication system (200) includes a second pair of terminals (230) and (240) that perform bidirectional transmission of encoded video data, which may occur, for example, during a video conference. For bidirectional data transfer, in the example, each terminal of terminals (230) and (240) can encode video data (for example, a video stream that is captured by the terminal) for transmission to another terminal of terminals (230) and (240). ) through the network (250). Each terminal of terminals (230) and (240) can also receive encoded video data transmitted by another terminal from terminals (230) and (240) and can decode the encoded video data to reconstruct video images, and can display video images on an accessible device. display according to the recovered video data.

[34] В примере с фиг. 2 оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (250) представляет собой любое количество сетей, которые передают кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные (соединенные проводами) и/или беспроводные сети связи. Сеть (250) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (250) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.[34] In the example of FIG. 2 terminal devices (210), (220), (230), and (240) can be illustrated as servers, personal computers, and smartphones, but the principles of the present disclosure cannot be limited to this. Embodiments of the present disclosure find application in laptop computers, tablet computers, media players, and/or specialized video conferencing equipment. Network (250) is any number of networks that transmit encoded video data between terminals (210), (220), (230) and (240), including, for example, wired (wired) and/or wireless communication networks. The communication network (250) may communicate on circuit-switched and/or packet-switched channels. Representative networks include telecommunications networks, local area networks, wide area networks and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (250) may not be essential to the operation of this disclosure, unless explained herein below.

[35] На фиг. 3 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.[35] FIG. 3 illustrates, as an example of application for the disclosed subject matter, the placement of a video encoder and a video decoder in a streaming environment. The disclosed subject matter may be equally applicable to other video-enabled applications including, for example, videoconferencing, digital television, storage of compressed video on digital media including CD, DVD, memory card, etc., and so on. .

[36] Система потоковой передачи может включать в себя подсистему (313) захвата, которая может включать в себя источник (301) видео, например цифровую камеру, создающий, например, поток (302) видеоизображений, которые не сжаты. В примере поток (302) видеоизображений включает в себя отсчеты, снятые цифровой камерой. Поток (302) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или кодированными битовыми потоками видео), может обрабатываться электронным устройством (320), которое включает в себя видео кодер (303), подключенный к источнику (301) видео. Видеокодер (303) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или кодированный битовый поток (304) видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут быть сохранены на сервере потоковой передачи (305) для будущего использования. Одна или более клиентских подсистем потоковой передачи, таких как клиентские подсистемы (306) и (308) на фиг. 3, могут получить доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может включать в себя видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, которые могут быть визуализированы на дисплее (312) (например, экране дисплея) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи кодированные видеоданные (304), (307) и (309) (например, битовые потоки видео) могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T H.265. В одном примере разрабатываемый стандарт кодирования видео неофициально известен как универсальное кодирование видео (VVC). Раскрытый объект может использоваться в контексте VVC.[36] The streaming system may include a capture subsystem (313), which may include a video source (301), such as a digital camera, producing, for example, a video stream (302) that is not compressed. In an example, the video stream (302) includes samples taken by a digital camera. The video stream (302), shown in bold to emphasize the large amount of data compared to the encoded video data (304) (or encoded video bitstreams), may be processed by an electronic device (320) that includes a video encoder (303) connected to the video source (301). The video encoder (303) may include hardware, software, or a combination thereof to enable or implement aspects of the disclosed subject matter, as described in more detail below. Encoded video data (304) (or encoded video bitstream (304)), depicted with a thin line to emphasize the smaller amount of data compared to the video stream (302), can be stored on the streaming server (305) for future use. One or more streaming client subsystems, such as client subsystems (306) and (308) in FIG. 3 can access the streaming server (305) to extract copies (307) and (309) of the encoded video data (304). The client subsystem (306) may include a video decoder (310), such as in an electronic device (330). The video decoder (310) decodes the incoming copy (307) of the encoded video data and creates an outgoing stream (311) of video images that can be rendered on a display (312) (eg, a display screen) or other rendering device (not shown). In some streaming systems, encoded video data (304), (307), and (309) (eg, video bitstreams) may be encoded according to certain video coding/compression standards. Examples of these standards include ITU-T Recommendation H.265. In one example, the video coding standard under development is informally known as Universal Video Coding (VVC). The expanded object can be used in a VVC context.

[37] Следует отметить, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), а электронное устройство (330) также может включать в себя видеокодер (не показан).[37] It should be noted that the electronic devices (320) and (330) may include other components (not shown). For example, electronic device (320) may include a video decoder (not shown), and electronic device (330) may also include a video encoder (not shown).

[38] На фиг. 4 показана блок-схема видеодекодера (410) согласно варианту осуществления настоящего раскрытия. Видеодекодер (410) может быть включен в электронное устройство (430). Электронное устройство (430) может включать в себя приемник (431) (например, приемную схему). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере с фиг. 3.[38] FIG. 4 shows a block diagram of a video decoder (410) according to an embodiment of the present disclosure. The video decoder (410) may be included in the electronic device (430). The electronic device (430) may include a receiver (431) (eg, receiver circuitry). Video decoder (410) may be used instead of video decoder (310) in the example of FIG. 3.

[39] Приемник (431) может принимать одну или несколько кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (410); в том же или другом варианте осуществления – по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (401), который может быть аппаратной/программной связью с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (431) может принимать закодированные видеоданные с другими данными, например, закодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (431) и энтропийным декодером/парсером (420) (далее «парсер (420)») может быть подключена буферная память (415). В некоторых приложениях буферная память (415) является частью видеодекодера (410). В других случаях она может находиться снаружи видеодекодера (410) (не показано). В других случаях может иметься буферная память (не изображена) снаружи видеодекодера (410), например, для борьбы с дрожанием сети, и, кроме того, другая буферная память (415) внутри видеодекодера (410), например, для обработки времени воспроизведения. Когда приемник (431) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (415) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буферная память (415), которая может быть сравнительно большой и может быть предпочтительно адаптивного размера, и может по меньшей мере частично быть реализована в операционной системе или аналогичных элементах (не изображены) снаружи видеодекодера (410).[39] The receiver (431) may receive one or more encoded video sequences to be decoded by the video decoder (410); in the same or different embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of other coded video sequences. An encoded video sequence may be received from a channel (401), which may be a hardware/software connection to a storage device that stores the encoded video data. The receiver (431) may receive encoded video data with other data, such as encoded audio data and/or ancillary data streams, which may be sent to their respective using entities (not shown). The receiver (431) may separate the encoded video sequence from other data. A buffer memory (415) can be connected between the receiver (431) and the entropy decoder/parser (420) (hereinafter "parser (420)") to combat jitter in the network. In some applications, the buffer memory (415) is part of the video decoder (410). In other cases, it may be outside the video decoder (410) (not shown). In other cases, there may be a buffer memory (not shown) outside the video decoder (410), for example, to combat network jitter, and, in addition, another buffer memory (415) inside the video decoder (410), for example, to handle playback time. When the receiver (431) receives data from a storage/transfer device with sufficient bandwidth and controllability, or from an isosynchronous network, buffer memory (415) may not be needed or may be small. For use in best quality packet networks such as the Internet, a buffer memory (415) may be required, which may be relatively large and may preferably be of an adaptive size, and may be at least partially implemented in an operating system or similar elements (not shown) outside the video decoder (410).

[40] Видеодекодер (410) может включать в себя парсер (420) для восстановления символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и потенциально информацию для управления устройством визуализации, таким как устройство (412) визуализации (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (420) может парсить/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование закодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Парсер (420) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.[40] The video decoder (410) may include a parser (420) for recovering the symbols (421) from the encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (410) and potentially information to control a rendering device such as a rendering device (412) (e.g., a display screen) that is not an integral part of the electronic device (430), but may be connected to an electronic device (430) as shown in FIG. 4. The control information for the rendering device(s) may be in the form of additional extended information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). The parser (420) may parse/entropy decode the received encoded video sequence. Encoding of the encoded video sequence may be in accordance with a video coding technology or standard and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The parser (420) may extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), and so on. The parser (420) may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.

[41] Парсер (420) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буферной памяти (415), чтобы создавать символы (421).[41] The parser (420) may perform an entropy decoding/parsing operation of the video sequence received from the buffer memory (415) to create symbols (421).

[42] Восстановление символов (421) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: внешнее и внутреннее изображение, внешний и внутренний блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (420). Поток такой информации управления подгруппой между парсером (420) и множеством модулей ниже не показан для ясности.[42] Symbol recovery (421) may include many different modules depending on the type of encoded video image or parts thereof (such as: external and internal image, external and internal block) and other factors. Which modules are involved and how can be controlled by the subgroup control information that has been parsed from the encoded video sequence by the parser (420). The flow of such subgroup control information between the parser (420) and the plurality of modules is not shown below for clarity.

[43] Помимо уже упомянутых функциональных блоков, видеодекодер (410) может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть, по меньшей мере частично, интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.[43] In addition to the functional blocks already mentioned, the video decoder (410) can be conceptually subdivided into a number of functional modules, as described below. In a practical implementation operating under commercial constraints, many of these modules interact closely with each other and can be at least partially integrated into each other. However, for purposes of describing the disclosed subject matter, the conceptual division into functional modules below is appropriate.

[44] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (421) от парсера (420). Модуль (451) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (455).[44] The first module is the scaling/inverse transform module (451). The scaling/inverse transform module (451) receives the quantized transform coefficient, as well as control information, including which transform to use, block size, quantization factor, quantization scaling matrices, and so on, in the form of symbol(s) (421) from the parser ( 420). The scaling/inverse transform module (451) may output blocks containing sample values that may be input to the aggregator (455).

[45] В некоторых случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (452) внутрикадрового предсказания. В некоторых случаях модуль (452) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично восстановленное текущее изображение и/или полностью восстановленное текущее изображение. Агрегатор (455), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем внутреннего предсказания (452), к выходной информации отсчетов, предоставляемой модулем (451) масштабирования/обратного преобразования.[45] In some cases, the output samples of the scaling/inverse transform module (451) may refer to an intra-coded block; that is, to a block that does not use prediction information from previously restored images, but can use prediction information from previously restored portions of the current image. Such prediction information may be provided by the intra prediction module (452). In some cases, the intra-prediction module (452) generates a block of the same size and shape as the reconstructed block, using the already recovered surrounding information retrieved from the current image buffer (458). The current picture buffer (458) buffers, for example, a partially restored current picture and/or a fully restored current picture. The aggregator (455), in some cases, adds for each sample the prediction information generated by the intra prediction module (452) to the sample output information provided by the scaling/inverse transform module (451).

[46] В других случаях выходные отсчеты модуля (451) масштабирования/обратного преобразования могут относиться к блоку с внешним кодированием и потенциально с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может обращаться к памяти (457) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (421), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (455) к выходу модуля (451) масштабирования/обратного преобразования (в данном случае называемые остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения в форме символов (421), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.[46] In other cases, the output samples of the scaling/inverse transform module (451) may refer to an inter-coded block and potentially motion-compensated. In such a case, the motion compensation prediction module (453) may access the reference picture memory (457) to retrieve samples used for prediction. After compensating for the movement of the selected samples according to the symbols (421) associated with the block, these samples can be added by the aggregator (455) to the output of the scaling/inverse transform module (451) (in this case called residual samples or residual signal) to generate output information. The addresses in the reference picture memory (457) from where the motion compensation prediction module (453) selects prediction samples may be controlled by the motion vectors available to the motion compensation prediction module (453) in the form of symbols (421), which may have, for example, components X, Y and reference image. Motion compensation may also include interpolation of sample values retrieved from the reference picture memory (457) when accurate sub-sample motion vectors are used, motion vector prediction mechanisms, and so on.

[47] Выходные отсчеты агрегатора (455) могут подвергаться различным методам петлевой фильтрации в модуле (456) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированную видеопоследовательность (также называемую битовым потоком кодированного видео) и предоставляемые модулю (456) петлевой фильтрации как символы (421) из парсера (420), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные петлей значения отсчетов.[47] The output samples of the aggregator (455) may be subjected to various loop filtering methods in the loop filter module (456). The video compression technologies may include in-loop filtering technologies that are controlled by parameters included in the encoded video sequence (also referred to as the encoded video bitstream) and provided to the loop filtering module (456) as symbols (421) from the parser (420), but may also respond to the metainformation received during the decoding of the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as to respond to the sample values previously restored and filtered by the loop.

[48] Выходной сигнал модуля (456) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (412) визуализации, а также сохранен в памяти (457) опорных изображений для использования в будущем межкадровом предсказании.[48] The output of the loop filter module (456) may be a stream of samples that can be output to the renderer (412) and also stored in the reference picture memory (457) for use in future inter-picture prediction.

[49] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. Например, после того, как кодированное изображение, соответствующее текущему изображению, полностью восстановлено, и кодированное изображение было идентифицировано как опорное изображение (например, парсером (420)), буфер (458) текущего изображения может стать частью памяти (457) опорных изображений, и буфер свежего текущего изображения может быть перераспределен перед началом восстановления следующего кодированного изображения.[49] Certain encoded pictures after full recovery can be used as reference pictures for future prediction. For example, after the encoded picture corresponding to the current picture is completely restored and the encoded picture has been identified as a reference picture (eg, by the parser (420)), the current picture buffer (458) may become part of the reference picture memory (457), and the buffer of the fresh current picture may be reallocated before starting the reconstruction of the next encoded picture.

[50] Видеодекодер (410) может выполнять операции декодирования согласно заранее определенной технологии сжатия видео в стандарте, таком как ITU-T Rec. H.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность соответствует как синтаксису технологии или стандарту сжатия видео, так и профилям, задокументированным в технологии или стандарте сжатия видео. В частности, профиль может выбирать определенные инструменты как единственные инструменты, доступные для использования в этом профиле, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.[50] The video decoder (410) may perform decoding operations according to a predetermined video compression technology in a standard such as ITU-T Rec. H.265. The encoded video sequence may conform to the syntax specified by the video compression technology or standard being used, in the sense that the encoded video sequence conforms to both the syntax of the video compression technology or standard and the profiles documented in the video compression technology or standard. In particular, a profile may select certain tools as the only tools available for use in that profile, from among all the tools available in a video compression technology or standard. It may also be necessary for compliance that the complexity of the encoded video sequence be within limits defined by the level of technology or video compression standard. In some cases, levels limit the maximum image size, the maximum frame rate, the maximum recovery sampling rate (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the layers may, in some cases, be further constrained by hypothetical reference decoder (HRD) specifications and metadata for managing the HRD buffer transmitted in the encoded video sequence.

[51] В варианте осуществления приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.[51] In an embodiment, the receiver (431) may receive additional (redundant) data with encoded video. Additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (410) to correctly decode the data and/or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, and so on.

[52] На фиг. 5 показана блок-схема видеодекодера (503) согласно варианту осуществления настоящего раскрытия. Видеокодер (503) включен в электронное устройство (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере с фиг. 3.[52] FIG. 5 shows a block diagram of a video decoder (503) according to an embodiment of the present disclosure. The video encoder (503) is included in the electronic device (520). The electronic device (520) includes a transmitter (540) (eg, a transmission circuit). Video encoder (503) may be used instead of video encoder (303) in the example of FIG. 3.

[53] Видеокодер (503) может принимать отсчеты видео от источника (501) видео (который не является частью электронного устройства (520) в примере c фиг. 5), который может захватывать видеоизображение(я) для кодирования с помощью видеокодера (503). В другом примере источник (501) видео является частью электронного устройства (520).[53] The video encoder (503) may receive video samples from a video source (501) (which is not part of the electronic device (520) in example c of FIG. 5) that may capture video image(s) for encoding by the video encoder (503) . In another example, the video source (501) is part of an electronic device (520).

[54] Источник (501) видео может предоставить исходную видеопоследовательность для кодирования видеокодером (503) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, ...), любое цветовое пространство (например, BT.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (501) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (501) видео может быть камерой, которая фиксирует информацию локального изображения в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.[54] The video source (501) may provide the source video sequence for encoding by the video encoder (503) in the form of a digital stream of video samples, which may have any suitable bit depth (eg: 8 bit, 10 bit, 12 bit, ...), any color space (eg BT.601 Y CrCB, RGB, …) and any suitable sample structure (eg Y CrCb 4:2:0, Y CrCb 4:4:4). In the media serving system, the video source (501) may be a storage device storing pre-rendered video. In a videoconferencing system, the video source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual images that, when viewed sequentially, convey motion. The images themselves can be organized as a spatial array of pixels, in which each pixel can contain one or more samples depending on the sample structure used, color space, and so on. One skilled in the art can easily understand the relationship between pixels and samples. The description below is based on readings.

[55] Согласно варианту осуществления видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования – одна из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально связан с другими функциональными модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером (550), могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Контроллер (550) может быть конфигурирован так, чтобы иметь другие подходящие функции, которые относятся к видеокодеру (503), оптимизированному для определенной конструкции системы.[55] According to an embodiment, the video encoder (503) may encode and compress images of the source video sequence into the encoded video sequence (543) in real time or with any other time constraints as required by the application. Providing an appropriate coding rate is one of the functions of the controller (550). In some embodiments, the controller (550) controls other functional modules, as described below, and is operatively linked to other functional modules. The connection is not shown for clarity. Parameters set by the controller (550) may include parameters related to speed control (picture skip, quantizer, speed-distortion optimization methods lambda value, ...), image size, group of pictures (GOP) layout, maximum motion vector search range and so on. The controller (550) may be configured to have other suitable functions that are related to the video encoder (503) optimized for a particular system design.

[56] В некоторых вариантах осуществления видеокодер (503) конфигурирован для работы в петле кодирования. В качестве упрощенного описания, в примере, петля кодирования может включать в себя кодер (530) источника (например, ответственный за создание символов, таких как поток символов, на основе входного изображения, которое должно быть кодировано, и опорного изображения (изображений)), и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) восстанавливает символы для создания данных отсчетов аналогично тому, как также создавал бы (удаленный) декодер (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте изобретения). Восстановленный поток отсчетов (данные отсчетов) вводится в память опорных изображений (534). Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое в памяти опорных изображений (534) также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые бы «видел» декодер при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) также используется в некоторых смежных областях техники.[56] In some embodiments, the video encoder (503) is configured to operate in a coding loop. As a simplified description, in an example, an encoding loop may include a source encoder (530) (eg, responsible for creating symbols, such as a stream of symbols, based on an input image to be encoded and reference image(s)), and a (local) decoder (533) embedded in the video encoder (503). The decoder (533) decompresses the symbols to create sample data in a manner similar to how a (remote) decoder would also create (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies discussed in the disclosed subject matter). The reconstructed sample stream (sample data) is entered into the reference picture memory (534). Since the decoding of the symbol stream results in bit-accurate results, regardless of the location of the decoder (local or remote), the contents in the reference picture memory (534) are also bit-accurate between the local encoder and the remote encoder. In other words, the prediction portion of the encoder "sees" as reference picture samples exactly the same sample values that the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and the resulting drift if synchronism cannot be maintained due to, for example, channel errors) is also used in some related fields of technology.

[57] Работа «локального» декодера (533) может быть такой же, как у «удаленного» декодера, такого как видеодекодер (410), который уже был подробно описан выше в связи с фиг. 4. Кратко ссылаясь также на фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в закодированную видеопоследовательность энтропийным кодером (545) и парсером (420) может быть без потерь, части энтропийного декодирования видеодекодера (410), включая буферную память (415) и парсер (420), не могут быть полностью реализованы в локальном декодере (533).[57] The operation of the "local" decoder (533) may be the same as that of the "remote" decoder, such as the video decoder (410), which has already been described in detail above in connection with FIG. 4. Briefly referring also to FIG. 4, however, since symbols are available and encoding/decoding of symbols into the encoded video sequence by the entropy encoder (545) and parser (420) can be lossless, the entropy decoding parts of the video decoder (410), including the buffer memory (415) and the parser (420) , cannot be fully implemented in the local decoder (533).

[58] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсингового/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать, по существу, в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.[58] At this point, it can be observed that any decoding technology other than parsing/entropy decoding that is present in a decoder must also necessarily be present in substantially identical functional form in the corresponding encoder. For this reason, the disclosed subject matter focuses on the operation of the decoder. The description of encoding technologies can be abbreviated as they are the inverse of fully described decoding technologies. Only in some areas a more detailed description is required, which is given below.

[59] Во время работы в некоторых примерах исходный кодер (530) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (532) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказания для входного изображения.[59] During operation, in some examples, source encoder (530) may perform motion-compensated predictive encoding that predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence that have been designated "reference pictures". Thus, the coding engine (532) encodes the differences between the pixel blocks of the input image and the pixel blocks of the reference image(s) that can be selected as the prediction reference(s) for the input image.

[60] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть обозначены как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 5), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных изображениях, и может вызывать сохранение восстановленных опорных изображений в кэше (534) опорных изображений. Таким образом, видеокодер (503) может локально хранить копии восстановленных опорных изображений, которые имеют общий контент, в качестве восстановленных опорных изображений, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).[60] The local video decoder (533) may decode the encoded video data of pictures that can be designated as reference pictures based on the symbols generated by the source encoder (530). The operations of the encoding engine (532) may preferably be lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (533) replicates the decoding processes that may be performed by the video decoder on the reference pictures and may cause the recovered reference pictures to be stored in the reference picture cache (534). Thus, the video encoder (503) can locally store copies of the reconstructed reference pictures that share the same content as the reconstructed reference pictures to be received by the far-end video decoder (in the absence of transmission errors).

[61] Предиктор (535) может выполнять поиски с предсказанием для механизма (532) кодирования. То есть, для нового изображения, которое должно быть закодировано, предиктор (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном для предсказания для новых изображений. Предиктор (535) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны для предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (535), входное изображение может иметь эталоны для предсказания, взятые из множества опорных изображений, сохраненных в памяти (534) опорных изображений.[61] The predictor (535) may perform predictive searches for the encoding engine (532). That is, for a new picture to be encoded, the predictor (535) may search the reference picture memory (534) for sample data (as reference pixel block candidates) or certain metadata such as reference picture motion vectors, block shapes, and so on. further, which can serve as a suitable reference for prediction for new images. The predictor (535) may operate on a block-by-pixel basis to find appropriate references for prediction. In some cases, as determined by the search results obtained by the predictor (535), the input image may have prediction references taken from a plurality of reference pictures stored in the reference picture memory (534).

[62] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.[62] The controller (550) may control the encoding operations of the source encoder (530), including, for example, setting parameters and subgroup parameters used to encode video data.

[63] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в закодированную видеопоследовательность путем сжатия без потерь символов согласно таким технологиям, как кодирование Хаффмана, кодирование с переменной длиной, арифметическое кодирование и так далее.[63] The output signals of all the above functional modules can be entropy encoded in an entropy encoder (545). An entropy encoder (545) translates symbols generated by various functional units into an encoded video sequence by lossless symbol compression according to techniques such as Huffman coding, variable length coding, arithmetic coding, and so on.

[64] Передатчик (540) может буферизовать закодированные видеопоследовательности, созданные энтропийным кодером (545), чтобы подготовиться к передаче через канал (560) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить закодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные из видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).[64] The transmitter (540) may buffer the encoded video sequences generated by the entropy encoder (545) to prepare for transmission over a communication channel (560), which may be a hardware/software connection to a storage device that will store the encoded video data. The transmitter (540) may combine the encoded video data from the video encoder (503) with other data to be transmitted, such as encoded audio data and/or ancillary data streams (sources not shown).

[65] Контроллер (550) может управлять работой видеокодера (503). Во время кодирования контроллер (550) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов изображений:[65] The controller (550) may control the operation of the video encoder (503). During encoding, the controller (550) may assign to each encoded picture a certain type of encoded picture, which may affect the encoding methods that can be applied to the corresponding picture. For example, images can often be categorized as one of the following image types:

[66] Внутреннее изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы внутренних изображений, включая, например, изображения с независимым обновлением декодера («IDR»). Специалисту в области техники известны эти варианты I-изображений и их соответствующие приложения и особенности.[66] An intra-picture (I-picture) may be one that can be encoded and decoded without using any other picture in the sequence as a prediction source. Some video codecs allow various types of internal pictures, including, for example, independent decoder update ("IDR") pictures. The person skilled in the art will be aware of these variants of I-images and their respective applications and features.

[67] Изображение с предсказанием (P-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[67] A predictive picture (P-picture) may be one that can be encoded and decoded using intra prediction or inter prediction using at most one motion vector and a reference index to predict sample values of each block.

[68] Изображение с двунаправленным предсказанием (B-изображение) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.[68] A bidirectional predictive picture (B-picture) may be one that can be encoded and decoded using intra prediction or inter prediction using no more than two motion vectors and reference indices to predict sample values of each block. Similarly, multi-prediction images may use more than two reference images and associated metadata to reconstruct a single block.

[69] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Пиксельные блоки P-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки B-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[69] Source images can typically be spatially divided into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and encoded on a block-by-block basis. The blocks may be predictively encoded with reference to other (already encoded) blocks, as determined by the coding assignment applied to the corresponding block images. For example, blocks of I-pictures may be predictively encoded or they may be predictively encoded with reference to already encoded blocks of the same picture (spatial prediction or intra prediction). P-picture pixel blocks may be predictively encoded, spatially predicted, or temporally predicted with reference to one previously encoded reference picture. Blocks of B-pictures may be predictively coded, spatially predicted, or temporally predicted with reference to one or two previously encoded reference pictures.

[70] Видеокодер (503) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как ITU-T Rec. H.265. В своей работе видеокодер (503) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.[70] The video encoder (503) may perform encoding operations in accordance with a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. The encoded video data may therefore follow the syntax given by the video coding technology or standard being used.

[71] В варианте осуществления передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные слои/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и так далее.[71] In an embodiment, transmitter (540) may transmit additional data with encoded video. The source encoder (530) may include such data as part of the encoded video sequence. The additional data may comprise temporal/spatial/SNR enhancement layers, other forms of redundant data such as redundant images and slices, SEI messages, VUI parameter set fragments, and so on.

[72] Видео может быть захвачено как множество исходных изображений (видеоизображений) во временной последовательности. Внутрикадровое предсказание (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а межкадровое предсказание использует (временную или другую) корреляцию между изображениями. В примере конкретное изображение при кодировании/декодировании, которое упоминается как текущее изображение, разбивается на блоки. Когда блок в текущем изображении подобен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может быть кодирован вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.[72] The video may be captured as a plurality of source images (video images) in time sequence. Intra-frame prediction (often abbreviated as intra-prediction) uses the spatial correlation in a given image, while inter-frame prediction uses (temporal or other) correlation between images. In the example, a specific image, when encoding/decoding, which is referred to as the current image, is divided into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in a video, the block in the current picture may be encoded with a vector called a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension identifying the reference picture if multiple reference pictures are used.

[73] В некоторых вариантах осуществления при межкадровом предсказании может использоваться метод двойного предсказания. Согласно методу двойного предсказания, используются два опорных изображения, такие как первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может быть кодирован первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может быть предсказан комбинацией первого опорного блока и второго опорного блока.[73] In some embodiments, a dual prediction technique may be used in inter-picture prediction. According to the double prediction method, two reference pictures are used, such as a first reference picture and a second reference picture, which both precede the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture may be encoded with a first motion vector that points to a first reference block in a first reference picture and a second motion vector that points to a second reference block in a second reference picture. The block may be predicted by the combination of the first reference block and the second reference block.

[74] Кроме того, метод режима слияния может использоваться в межкадровом предсказании для повышения эффективности кодирования.[74] In addition, the merge mode technique can be used in inter-picture prediction to improve coding efficiency.

[75] Согласно некоторым вариантам осуществления изобретения, предсказания, такие как межкадровые предсказания и внутрикадровые предсказания, выполняются в единице блоков. Например, в соответствии со стандартом HEVC, изображение в последовательности видеоизображений разделяется на единицы дерева кодирования (CTU) для сжатия, причем CTU в изображении имеют одинаковый размер, например 64×64 пикселей, 32×32 пикселей или 16×16 пикселей. В общем, CTU включает в себя три блока дерева кодирования (CTB), которые представляют собой один CTB яркости и два CTB цветности. Каждая CTU может быть рекурсивно разделена на квадродерево на одну или множество единиц кодирования (CU). Например, CTU размером 64×64 пикселей можно разделить на одну CU из 64×64 пикселей, или 4 CU из 32×32 пикселей, или 16 CU из 16×16 пикселей. В примере каждая CU анализируется для определения типа предсказания для CU, такого как тип внешнего предсказания или тип внутреннего предсказания. CU разделяется на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. Обычно каждая PU включает в себя блок предсказания (PB) яркости и два PB цветности. В варианте осуществления операция предсказания при кодировании (кодировании/декодировании) выполняется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, такую как 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[75] According to some embodiments of the invention, predictions such as inter predictions and intra predictions are performed in a unit of blocks. For example, according to the HEVC standard, an image in a video sequence is divided into coding tree units (CTUs) for compression, where the CTUs in the image are the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU includes three coding tree blocks (CTBs), which are one luminance CTB and two chrominance CTBs. Each CTU may be recursively split into a quadtree into one or multiple coding units (CUs). For example, a CTU of 64x64 pixels can be divided into one CU of 64x64 pixels, or 4 CUs of 32x32 pixels, or 16 CUs of 16x16 pixels. In the example, each CU is parsed to determine a prediction type for the CU, such as an inter prediction type or an intra prediction type. The CU is divided into one or more prediction units (PUs) depending on temporal and/or spatial predictability. Typically, each PU includes a Luma PB and two Chroma PBs. In an embodiment, an encoding (encoding/decoding) prediction operation is performed in a prediction block unit. Using the luminance prediction block as an example of the prediction block, the prediction block includes a matrix of values (e.g., luminance values) for pixels, such as 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc. P.

[76] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления раскрытия. Видеокодер (603) конфигурирован для приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое является частью кодированной видеопоследовательности. В одном примере видеокодер (603) используется вместо видеокодера (303) в примере с фиг. 3.[76] FIG. 6 shows a diagram of a video encoder (603) according to another embodiment of the disclosure. The video encoder (603) is configured to receive a processing unit (eg, a prediction unit) of sample values in the current video image in the video sequence and encoding the processing unit into an encoded image that is part of the encoded video sequence. In one example, a video encoder (603) is used in place of the video encoder (303) in the example of FIG. 3.

[77] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, такого как блок предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, закодирован ли блок обработки лучше всего при использовании внутреннего режима, внешнего режима или режима двойного предсказания, используя, например, оптимизацию скорости-искажения. Когда блок обработки должен быть кодирован во внутреннем режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; а когда блок обработки должен быть кодирован во внешнем режиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях кодирования видео режим слияния может быть субрежимом межкадрового предсказания, в котором вектор движения выводится из одного или более предикторов вектора движения без преимущества кодированной компоненты вектора движения снаружи предикторов. В некоторых других технологиях кодирования видео может присутствовать компонент вектора движения, применимый к рассматриваемому блоку. В одном примере видеокодер (603) включает в себя другие компоненты, такие как модуль выбора режима (не показан), для определения режима блоков обработки.[77] In the HEVC example, video encoder (603) receives a matrix of sample values for a processing block, such as an 8×8 sample prediction block, or the like. The video encoder (603) determines whether the processing unit is best encoded using intra mode, inter mode, or dual prediction mode, using rate-distortion optimization, for example. When the processing block is to be encoded in intra mode, the video encoder (603) may use an intra prediction technique to encode the processing block into an encoded picture; and when a processing block is to be encoded in an inter-prediction or dual-prediction mode, the video encoder (603) may use an inter-prediction or dual prediction method, respectively, to encode the processing block into an encoded picture. In some video coding technologies, the merge mode may be a sub-mode of inter-picture prediction in which a motion vector is derived from one or more motion vector predictors without taking advantage of the motion vector coded component outside of the predictors. In some other video coding technologies, there may be a motion vector component applicable to the block in question. In one example, the video encoder (603) includes other components such as a mode selector (not shown) to determine the mode of the processing units.

[78] В примере с фиг. 6 видеокодер (603) включает в себя внешний кодер (630), внутренний кодер (622), вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные вместе, как показано на фиг. 6.[78] In the example of FIG. 6, the video encoder (603) includes an outer encoder (630), an inner encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a common controller (621), and an entropy encoder (625), connected together as shown in Fig. 6.

[79] Внешний кодер (630) конфигурирован для приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоков в предыдущих изображениях и последующих изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, предсказанный блок) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорные изображения являются декодированными опорными изображениями, которые декодируются на основе кодированной видеоинформации.[79] The outer encoder (630) is configured to receive samples of the current block (e.g., processing block), compare the block with one or more reference blocks in the reference pictures (e.g., blocks in previous pictures and next pictures), generate inter prediction information (e.g., , descriptions of redundant information according to the inter coding method, motion vectors, merge mode information), and calculation of inter prediction results (eg, predicted block) based on the inter prediction information using any suitable method. In some examples, the reference pictures are decoded reference pictures that are decoded based on the encoded video information.

[80] Внутренний кодер (622) конфигурирован для приема отсчетов текущего блока (например, блока обработки), в некоторых случаях сравнения блока с блоками, уже кодированными в том же изображении, генерации квантованных коэффициентов после преобразования, а в некоторых случаях также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методов внутреннего кодирования). В одном примере внутренний кодер (622) также вычисляет результаты внутреннего предсказания (например, предсказанный блок) на основе информации внутреннего предсказания и опорных блоков в одном и том же изображении.[80] The inner encoder (622) is configured to receive samples of the current block (e.g., processing block), in some cases comparing the block with blocks already coded in the same picture, generating quantized post-transform coefficients, and in some cases also intra prediction information. (eg, intra prediction direction information according to one or more intra coding methods). In one example, intra encoder 622 also calculates intra prediction results (eg, predicted block) based on intra prediction information and reference blocks in the same picture.

[81] Общий контроллер (621) конфигурирован для определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. В одном примере общий контроллер (621) определяет режим блока и подает управляющий сигнал на переключатель (626) на основе режима. Например, когда режим является внутренним режимом, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат внутреннего режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию внутреннего предсказания и включить информацию внутреннего предсказания в битовый поток; и когда режимом является внешний режим, общий контроллер (621) управляет переключателем (626), чтобы выбрать результат внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625), чтобы выбрать информацию внешнего предсказания и включить информацию внешнего предсказания в битовый поток.[81] The common controller (621) is configured to determine the common control data and control other components of the video encoder (603) based on the common control data. In one example, the common controller (621) determines the mode of the block and provides a control signal to the switch (626) based on the mode. For example, when the mode is an intra mode, the common controller (621) controls the switch (626) to select the result of the intra mode for use by the residual calculator (623), and controls the entropy encoder (625) to select the intra prediction information and turn on the intra prediction information into the bitstream; and when the mode is inter mode, the common controller (621) controls the switch (626) to select the inter prediction result to be used by the residual calculator (623), and controls the entropy encoder (625) to select the inter prediction information and include the inter prediction information in bitstream.

[82] Вычислитель (623) остатка конфигурирован для вычисления разницы (данных остатка) между принятым блоком и результатами предсказания, выбранными из внутреннего кодера (622) или внешнего кодера (630). Кодер (624) остатка конфигурирован для работы на основе данных остатка, чтобы кодировать данные остатка, чтобы генерировать коэффициенты преобразования. В одном примере кодер (624) остатка конфигурирован для преобразования данных остатка из пространственной области в частотную область и генерации коэффициентов преобразования. Коэффициенты преобразования затем подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка конфигурирован для выполнения обратного преобразования и генерации декодированных данных остатка. Декодированные данные остатка могут подходящим образом использоваться внутренним кодером (622) и внешним кодером (630). Например, внутренний кодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а внутренний кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки соответствующим образом обрабатываются для генерирования декодированных изображений, и декодированные изображения могут быть буферизованы в схеме памяти (не показана) и использоваться в качестве опорных изображений в некоторых примерах.[82] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and the prediction results selected from the inner encoder (622) or the outer encoder (630). The residual encoder (624) is configured to operate based on the residual data to encode the residual data to generate transform coefficients. In one example, the residual encoder (624) is configured to transform residual data from the spatial domain to the frequency domain and generate transform coefficients. The transform coefficients are then subjected to quantization processing to obtain quantized transform coefficients. In various embodiments, video encoder (603) also includes a residual decoder (628). The residual decoder (628) is configured to perform inverse transformation and generate decoded residual data. The decoded residual data may be appropriately used by the inner encoder (622) and the outer encoder (630). For example, intra encoder (630) may generate decoded blocks based on decoded residual data and inter prediction information, and intra encoder (622) may generate decoded blocks based on decoded residual data and intra prediction information. The decoded blocks are suitably processed to generate decoded pictures, and the decoded pictures may be buffered in a memory circuit (not shown) and used as reference pictures in some examples.

[83] Энтропийный кодер (625) конфигурирован для форматирования битового потока, чтобы включить в него кодированный блок. Энтропийный кодер (625) конфигурирован для включения различной информации в соответствии с подходящим стандартом, таким как стандарт HEVC. В одном примере энтропийный кодер (625) конфигурирован для включения общих данных управления, выбранной информации предсказания (например, информации внутреннего предсказания или информации внешнего предсказания), информации остатка и другой подходящей информации в битовом потоке. Отметим, что согласно раскрытому объекту изобретения при кодировании блока в субрежиме слияния либо внешнего режима, либо режима двойного предсказания информация остатка отсутствует.[83] The entropy encoder (625) is configured to format the bitstream to include a coded block. The entropy encoder (625) is configured to include various information according to an appropriate standard such as the HEVC standard. In one example, entropy encoder 625 is configured to include common control data, selected prediction information (eg, intra prediction information or inter prediction information), residual information, and other pertinent information in the bitstream. Note that, according to the disclosed subject matter, when encoding a block in the merge sub-mode of either the inter-mode or the dual-prediction mode, there is no residual information.

[84] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления раскрытия. Видеодекодер (710) конфигурирован для приема кодированных изображений, которые являются частью кодированной видеопоследовательности, и декодирования кодированных изображений для создания восстановленных изображений. В одном примере видеодекодер (710) используется вместо видеодекодера (310) в примере с фиг. 3.[84] FIG. 7 shows a diagram of a video decoder (710) according to another embodiment of the disclosure. The video decoder (710) is configured to receive encoded pictures that are part of the encoded video sequence and decode the encoded pictures to create reconstructed pictures. In one example, video decoder (710) is used in place of video decoder (310) in the example of FIG. 3.

[85] В примере с фиг. 7 видеодекодер (710) включает в себя энтропийный декодер (771), внешний декодер (780), декодер (773) остатка, модуль (774) восстановления и внутренний декодер (772), соединенные вместе, как показано на фиг. 7.[85] In the example of FIG. 7, the video decoder (710) includes an entropy decoder (771), an external decoder (780), a residual decoder (773), a reconstruction unit (774), and an internal decoder (772) connected together as shown in FIG. 7.

[86] Энтропийный декодер (771) может быть конфигурирован для восстановления из кодированного изображения определенных символов, которые представляют элементы синтаксиса, из которых состоит кодированное изображение. Такие символы могут включать в себя, например, режим, в котором кодируется блок (такой как, например, внутренний режим, внешний режим, режим двойного предсказания, причем последние два в субрежиме слияния или другом субрежиме), информацию предсказания (такую как, например, информация внутреннего предсказания или информация внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, которые используются для предсказания внутренним декодером (772) или внешним декодером (780), соответственно, остаточную информацию в форме, например, квантованных коэффициентов преобразования и т.п. В одном примере, когда режимом предсказания является внешний режим или режим двунаправленного предсказания, информация внешнего предсказания предоставляется во внешний декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания предоставляется во внутренний декодер (772). Остаточная информация может подвергаться обратному квантованию и предоставляется декодеру (773) остатка.[86] The entropy decoder (771) may be configured to recover from the encoded image certain symbols that represent the syntax elements that make up the encoded image. Such symbols may include, for example, the mode in which the block is encoded (such as, for example, intra mode, inter mode, dual prediction mode, the latter two in a merge submode or another submode), prediction information (such as, for example, intra prediction information or inter prediction information) that can identify a specific sample or metadata that is used for prediction by the intra decoder (772) or the outer decoder (780), respectively, residual information in the form of, for example, quantized transform coefficients, and the like. In one example, when the prediction mode is an inter mode or a bidirectional prediction mode, inter prediction information is provided to an external decoder (780); and when the prediction type is an intra prediction type, the intra prediction information is provided to the intra decoder (772). The residual information may be inverse quantized and provided to the residual decoder (773).

[87] Внешний декодер (780) конфигурирован для приема информации внешнего предсказания и генерации результатов внешнего предсказания на основе информации внешнего предсказания.[87] The outer decoder (780) is configured to receive inter prediction information and generate inter prediction results based on the inter prediction information.

[88] Внутренний декодер (772) конфигурирован для приема информации внутреннего предсказания и генерации результатов предсказания на основе информации внутреннего предсказания.[88] The intra decoder (772) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.

[89] Декодер (773) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (771) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).[89] The residual decoder (773) is configured to perform inverse quantization to extract the dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require certain control information (to include a quantizer parameter (QP)), and this information may be provided by the entropy decoder (771) (data path not shown as this may only be small control information).

[90] Модуль (774) восстановления конфигурирован для объединения в пространственной области остатка, выводимого декодером (773) остатка, и результатов предсказания (выводимых модулями внешнего или внутреннего предсказания, в зависимости от случая) для формирования восстановленного блока, который может быть частью восстановленного изображения, которое, в свою очередь, может быть частью восстановленного видео. Следует отметить, что могут выполняться и другие подходящие операции, такие как операция деблокирования и т.п., для улучшения визуального качества.[90] The recovery module (774) is configured to combine in the spatial domain the residual output by the residual decoder (773) and the prediction results (output by the inter or intra prediction modules, as the case may be) to form a reconstructed block that may be part of the reconstructed image , which in turn can be part of the recovered video. It should be noted that other suitable operations, such as a release operation and the like, may be performed to improve the visual quality.

[91] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. В варианте осуществления видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.[91] It should be noted that video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using any suitable technique. In an embodiment, video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using one or more integrated circuits. In another embodiment, video encoders (303), (503) and (503) and video decoders (310), (410) and (710) may be implemented using one or more processors that execute program instructions.

[92] Компенсация на основе блоков из другого изображения может называться компенсацией движения. Компенсация блока также может выполняться из ранее восстановленной области в пределах того же изображения, что может называться внутрикадровой компенсацией блока, копией внутри блока (IBC) или ссылкой на текущее изображение (CPR). Например, вектор смещения, который указывает смещение между текущим блоком и опорным блоком, называется вектором блока. Согласно некоторым вариантам осуществления вектор блока указывает на опорный блок, который уже восстановлен и доступен для ссылки. Также, для рассмотрения параллельной обработки, может быть исключена ссылка вектором блока на опорную область, которая находится за границей тайла/слайса или границы в форме лестницы волнового фронта. Из-за этих ограничений вектор блока может отличаться от вектора движения при компенсации движения, где вектор движения может иметь любое значение (положительное или отрицательное, в направлении x или y).[92] Compensation based on blocks from another image may be referred to as motion compensation. Block compensation may also be performed from a previously reconstructed area within the same picture, which may be referred to as intra-frame block compensation, intra-block copy (IBC), or current picture reference (CPR). For example, an offset vector that specifies the offset between the current block and the reference block is called a block vector. In some embodiments, the block vector points to a reference block that has already been recovered and is available for reference. Also, to consider parallel processing, the block vector reference to a reference area that is outside the tile/slice boundary or the wavefront ladder boundary can be excluded. Because of these limitations, the block vector may differ from the motion vector in motion compensation, where the motion vector can be any value (positive or negative, in the x or y direction).

[93] Кодирование вектора блока может быть явным или неявным. В явном режиме, который иногда называют режимом AMVP (расширенное предсказание вектора движения) при внешнем кодировании, передается разность между вектором блока и его предиктором. В неявном режиме вектор блока восстанавливается из предиктора вектора блока аналогично вектору движения в режиме слияния. Разрешение вектора блока в некоторых вариантах осуществления ограничено целочисленными позициями. В других вариантах осуществления разрешение вектора блока может указывать на дробные позиции.[93] Block vector encoding may be explicit or implicit. In the explicit mode, which is sometimes called the AMVP (Advanced Motion Vector Prediction) mode in intercoding, the difference between the block vector and its predictor is transmitted. In implicit mode, the block vector is reconstructed from the block vector predictor, similar to the motion vector in merge mode. The block vector resolution in some embodiments is limited to integer positions. In other embodiments, the block vector resolution may indicate fractional positions.

[94] Использование внутриблочного копирования на уровне блока может быть передано с помощью флага уровня блока, называемого флагом IBC. В одном варианте осуществления флаг IBC передается, когда текущий блок не кодируется в режиме слияния. Флаг IBC может также передаваться методом опорного индекса, который выполняется путем обработки текущего декодированного изображения как опорного изображения. В кодировании содержимого экрана HEVC (SCC) такое опорное изображение помещается в последнюю позицию списка. Этим специальным опорным изображением также можно управлять вместе с другими временными опорными изображениями в DPB. IBC может также включать в себя варианты, такие как зеркально отраженное IBC (например, опорный блок зеркально отражается по горизонтали или вертикали перед использованием для предсказания текущего блока) или линейное (IBC) (например, каждая единица компенсации внутри блока кодирования M×N представляет собой линию M×1 или 1×N).[94] The use of intra-block copy at the block level can be conveyed using a block level flag called the IBC flag. In one embodiment, the IBC flag is transmitted when the current block is not merge-encoded. The IBC flag may also be transmitted by the reference index method, which is performed by treating the current decoded picture as a reference picture. In HEVC Screen Content Coding (SCC), such a reference picture is placed in the last position of the list. This special reference picture can also be managed along with other temporary reference pictures in the DPB. IBC may also include options such as flipped IBC (eg, a reference block is flipped horizontally or vertically before being used to predict the current block) or linear (IBC) (eg, each compensation unit within an M×N coding block is line M×1 or 1×N).

[95] На фиг. 8 проиллюстрирован вариант осуществления внутрикадровой компенсации блока (например, режим внутриблочного копирования). Как показано на фиг. 8, текущее изображение 800 включает в себя набор областей блоков, которые уже были кодированы/декодированы (т.е. квадраты серого цвета), и набор областей блоков, которые еще предстоит кодировать/декодировать (т.е. квадраты белого цвета). Блок 802 одной из областей блоков, которые еще предстоит кодировать/декодировать, может быть связан с вектором 804 блоков, который указывает на другой блок 806, который ранее был кодирован/декодирован. Соответственно, любая информация о движении, связанная с блоком 806, может использоваться для кодирования/декодирования блока 802.[95] FIG. 8 illustrates an embodiment of intra-frame block compensation (eg, intra-block copy mode). As shown in FIG. 8, the current picture 800 includes a set of block areas that have already been coded/decoded (ie, gray squares) and a set of block areas that have yet to be coded/decoded (ie, white boxes). Block 802 of one of the block regions yet to be coded/decoded may be associated with a block vector 804 that points to another block 806 that has previously been coded/decoded. Accordingly, any motion information associated with block 806 may be used to encode/decode block 802.

[96] В некоторых вариантах осуществления диапазон поиска режима CPR ограничен, чтобы находиться в пределах текущей CTU. Эффективное требование к памяти для хранения опорных отсчетов для режима CPR составляет 1 размер CTU отсчетов. Принимая во внимание существующую память опорных отсчетов для хранения восстановленных отсчетов в текущей области 64×64, требуются еще 3 памяти опорных отсчетов размером 64×64. Варианты осуществления настоящего раскрытия расширяют эффективный диапазон поиска режима CPR до некоторой части левой CTU, в то время как общие требования к памяти для хранения опорных пикселей остаются неизменными (1 размер CTU, всего 4 64×64 памяти опорных отсчетов).[96] In some embodiments, the CPR mode search range is limited to be within the current CTU. The effective memory requirement for storing reference samples for CPR mode is 1 sample CTU size. Considering the existing reference memory to store the recovered samples in the current 64×64 area, 3 more reference sample memories of 64×64 are required. Embodiments of the present disclosure extend the effective search range of the CPR mode to some portion of the left CTU while the overall memory requirements for storing reference pixels remain unchanged (1 CTU size, total 4 64x64 reference sample memories).

[97] Как показано на фиг. 9A, верхняя левая область CTU 900 является текущей декодируемой областью. Когда верхняя левая область CTU 900 декодируется, запись [1] памяти опорных отсчетов перезаписывается отсчетами из этой области, как проиллюстрировано на фиг. 10A (например, перезаписанная ячейка(и) памяти имеет диагональную штриховку). Как показано на фиг. 9B, верхняя правая область CTU 900 является следующей текущей декодируемой областью. Когда верхняя правая область CTU 900 декодируется, запись [2] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10B. Как показано на фиг. 9C, нижняя левая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя левая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10C. Как показано на фиг. 9D, нижняя правая область CTU 900 является следующей текущей декодируемой областью. Когда нижняя правая область CTU 900 декодируется, запись [3] памяти опорных отсчетов перезаписывается отсчетами из этой области, как показано на фиг. 10D.[97] As shown in FIG. 9A, the upper left area of the CTU 900 is the current decodable area. When the upper left region of the CTU 900 is decoded, the reference sample memory entry [1] is overwritten with samples from this region, as illustrated in FIG. 10A (for example, the overwritten memory cell(s) has diagonal hatching). As shown in FIG. 9B, the upper right area of the CTU 900 is the next current decodable area. When the upper right region of the CTU 900 is decoded, the reference sample memory entry [2] is overwritten with samples from this region, as shown in FIG. 10b. As shown in FIG. 9C, the lower left area of CTU 900 is the next current decodable area. When the lower left region of the CTU 900 is decoded, the reference sample memory entry [3] is overwritten with samples from this region, as shown in FIG. 10C. As shown in FIG. 9D, the lower right region of the CTU 900 is the next current decodable region. When the lower right region of the CTU 900 is decoded, the reference sample memory entry [3] is overwritten with samples from this region, as shown in FIG. 10D.

[98] В некоторых вариантах осуществления условиями соответствия битового потока является то, что действительный вектор блока (mvL, в разрешении 1/16 - pel) должен соответствовать указанным ниже условиям. В некоторых вариантах осуществления вектор движения яркости mvL подчиняется следующим ограничениям A1, A2, B1, C1 и C2.[98] In some embodiments, the bitstream matching conditions are that the actual block vector (mvL, in 1/16 - pel resolution) must meet the following conditions. In some embodiments, the luminance motion vector mvL is subject to the following constraints A1, A2, B1, C1, and C2.

[99] В первом ограничении (A1), когда процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (xCb + (mvL [0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) в качестве входных данных, выход должен быть равен значению ИСТИНА.[99] In the first constraint ( A1 ), when an inference process for block availability (eg, a neighbor block availability check process) is invoked with the current luminance location (xCurr, yCurr) set to (xCb, yCb) and the adjacent luminance location (xCb + (mvL[0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) as input, output must be TRUE.

[100] Во втором ограничении (A2), когда процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (xCb + (mvL [0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) в качестве входных данных, выход должен быть равен значению ИСТИНА.[100] In the second constraint ( A2 ), when an inference process for block availability (e.g., a neighbor block availability check process) is invoked with the current luma location (xCurr, yCurr) set to (xCb, yCb) and the neighboring luma location (xCb + (mvL[0] >> 4) + cbWidth - 1, yCb + (mvL [1] >> 4) + cbHeight - 1) as input, output must be TRUE.

[101] В третьем ограничении (B1) выполняется одно или оба следующих условия:[101] The third constraint ( B1 ) has one or both of the following conditions:

(i) Значение (mvL [0] >> 4) + cbWidth меньше или равно 0.(i) The value of (mvL[0] >> 4) + cbWidth is less than or equal to 0.

(ii) Значение (mvL [1] >> 4) + cbHeight меньше или равно 0.(ii) The value of (mvL[1] >> 4) + cbHeight is less than or equal to 0.

[102] В четвертом ограничении (C1) выполняются следующие условия:[102] The fourth constraint ( C1 ) has the following conditions:

(i) (yCb + (mvL [1] >> 4)) >> CtbLog2SizeY = yCb >> CtbLog2SizeY(i) (yCb + (mvL[1] >> 4)) >> CtbLog2SizeY = yCb >> CtbLog2SizeY

(ii) (yCb + (mvL [1] >> 4) + cbHeight - 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY(ii) (yCb + (mvL[1] >> 4) + cbHeight - 1) >> CtbLog2SizeY = yCb >> CtbLog2SizeY

(iii) (xCb + (mvL [0] >> 4)) >> CtbLog2SizeY> = (xCb >> CtbLog2SizeY) - 1(iii) (xCb + (mvL[0] >> 4)) >> CtbLog2SizeY > = (xCb >> CtbLog2SizeY) - 1

(iv) (xCb + (mvL [0] >> 4) + cbWidth - 1) >> CtbLog2SizeY <= (xCb >> CtbLog2SizeY)(iv) (xCb + (mvL[0] >> 4) + cbWidth - 1) >> CtbLog2SizeY <= (xCb >> CtbLog2SizeY)

[103] В пятом ограничении (C2), когда (xCb + (mvL [0] >> 4)) >> CtbLog2SizeY равно (xCb >> CtbLog2SizeY) - 1, процесс вывода для доступности блока (например, процесс проверки доступности соседних блоков) вызывается с текущим местоположением яркости (xCurr, yCurr), установленным равным (xCb, yCb), и соседним местоположением яркости (((xCb + (mvL [0] >> 4) + CtbSizeY) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1), ((yCb + (mvL [1] >> 4)) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1)) в качестве входных данных, а выход должен быть равен значению ЛОЖЬ.[103] In the fifth constraint ( C2 ), when (xCb + (mvL [0] >> 4)) >> CtbLog2SizeY is equal to (xCb >> CtbLog2SizeY) - 1, the inference process for block availability (e.g., neighbor block availability check process ) is called with the current brightness location (xCurr, yCurr) set to (xCb, yCb) and the adjacent brightness location (((xCb + (mvL[0] >> 4) + CtbSizeY) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1), ((yCb + (mvL [1] >> 4)) >> (CtbLog2SizeY - 1)) << (CtbLog2SizeY - 1)) as input, and the output must be FALSE.

[104] В приведенных выше уравнениях xCb и yCb – координаты x и y текущего блока соответственно. Переменные cbHeight и cbWidth – это высота и ширина текущего блока соответственно. Переменная CtbLog2sizeY относится к размеру CTU в домене log2. Например, CtbLog2sizeY = 7 означает, что размер CTU составляет 128 × 128. Переменные mvL0[0] и mvL0[1] относятся к компонентам x и y вектора блока mvL0 соответственно. Если выходное значение – ЛОЖЬ, то отсчеты для опорного блока определяются как доступные (например, соседний блок доступен для использования внутриблочного копирования). Если выходной сигнал – ИСТИНА, то отсчеты для опорного блока определяются как недоступные.[104] In the equations above, xCb and yCb are the x and y coordinates of the current block, respectively. The cbHeight and cbWidth variables are the height and width of the current block, respectively. The variable CtbLog2sizeY refers to the size of the CTU in the log2 domain. For example, CtbLog2sizeY = 7 means that the CTU size is 128 × 128. The variables mvL0[0] and mvL0[1] refer to the x and y components of the mvL0 block vector, respectively. If the output value is FALSE, then the samples for the reference block are determined to be available (for example, the adjacent block is available for in-block copy use). If the output is TRUE, then the samples for the reference block are defined as unavailable.

[105] Согласно некоторым вариантам осуществления, способ MVP на основе истории (HMVP) включает в себя кандидата HMVP, который определяется как информация о движении ранее кодированного блока. Таблица с множеством кандидатов HMVP поддерживается в процессе кодирования/декодирования. Таблица очищается при обнаружении нового слайса. Каждый раз, когда есть внешне кодированный неаффинный блок, соответствующая информация о движении добавляется к последней записи таблицы как новый кандидат HMVP. Последовательность кодирования метода HMVP изображена на фиг. 11А.[105] According to some embodiments, a history-based MVP (HMVP) method includes an HMVP candidate, which is defined as motion information of a previously encoded block. A table with multiple HMVP candidates is maintained during the encoding/decoding process. The table is cleared when a new slice is found. Each time there is an externally encoded non-affine block, the corresponding motion information is added to the last table entry as a new HMVP candidate. The encoding sequence of the HMVP method is shown in FIG. 11A.

[106] Размер S таблицы установлен равным 6, что указывает на то, что в таблицу могут быть добавлены до 6 кандидатов HMVP. При вставке нового кандидата движения в таблицу используется правило ограниченного FIFO, так что сначала применяется проверка избыточности, чтобы определить, есть ли в таблице идентичное HMVP. При обнаружении идентичное HMVP удаляется из таблицы, а все кандидаты HMVP впоследствии перемещаются вперед (т.е. с уменьшением индексов на 1). На фиг. 11B показан пример вставки нового кандидата движения в таблицу HMVP.[106] The size S of the table is set to 6, indicating that up to 6 HMVP candidates can be added to the table. When inserting a new motion candidate into a table, the restricted FIFO rule is used so that a redundancy check is first applied to determine if there is an identical HMVP in the table. When found, the identical HMVP is removed from the table, and all HMVP candidates are subsequently moved forward (i.e., decrementing indexes by 1). In FIG. 11B shows an example of inserting a new motion candidate into the HMVP table.

[107] Кандидаты HMVP могут использоваться в процессе построения списка кандидатов на слияние. Несколько последних кандидатов HMVP в таблице проверяются по порядку и вставляются в список кандидатов после кандидата TMVP. К кандидатам HMVP может применяться отсечение к кандидату пространственного или временного слияния, с исключением кандидата движения субблока (то есть ATMVP).[107] HMVP candidates may be used in the process of constructing a merge candidate list. The last few HMVP candidates in the table are checked in order and inserted into the list of candidates after the TMVP candidate. For HMVP candidates, clipping may be applied to the spatial or temporal merge candidate, with the exclusion of the subblock motion candidate (ie, ATMVP).

[108] В некоторых вариантах осуществления, чтобы уменьшить количество операций отсечения, количество проверяемых кандидатов HMVP (обозначено L) устанавливается как L = (N <= 4) ? M: (8 - N), где N указывает количество доступных кандидатов на слияние, не являющихся субблоками, а M указывает количество доступных кандидатов HMVP в таблице. Кроме того, как только общее количество доступных кандидатов на слияние достигает переданных максимально разрешенных кандидатов на слияние минус 1, процесс построения списка кандидатов на слияние из списка HMVP завершается. Кроме того, количество пар для комбинированного вывода кандидатов на слияние с двойным предсказанием сокращено с 12 до 6.[108] In some embodiments, in order to reduce the number of pruning operations, the number of HMVP candidates to be tested (denoted L) is set to L = (N <= 4) ? M: (8 - N) where N indicates the number of non-subblock merge candidates available and M indicates the number of available HMVP candidates in the table. In addition, once the total number of available merge candidates reaches the transmitted maximum allowed merge candidates minus 1, the process of constructing the merge candidate list from the HMVP list ends. In addition, the number of pairs for combined derivation of dual prediction merge candidates has been reduced from 12 to 6.

[109] Кандидаты HMVP также могут использоваться в процессе построения списка кандидатов AMVP. Векторы движения последних K кандидатов HMVP в таблице вставляются после кандидата TMVP. Только кандидаты HMVP с тем же опорным изображением, что и целевое опорное изображение AMVP, используются для построения списка кандидатов AMVP. К кандидатам HMVP применяется отсечение. В некоторых приложениях K устанавливается равным 4, в то время как размер списка AMVP остается неизменным (т.е. равным 2).[109] HMVP candidates can also be used in the AMVP candidate list building process. The motion vectors of the last K HMVP candidates in the table are inserted after the TMVP candidate. Only HMVP candidates with the same reference picture as the target AMVP reference picture are used to construct the list of AMVP candidates. A pruning is applied to HMVP candidates. In some applications, K is set to 4 while the size of the AMVP list remains unchanged (ie, 2).

[110] Согласно некоторым вариантам осуществления, когда внутриблочное копирование работает как режим, отдельный от внешнего режима, для хранения ранее кодированных векторов блоков внутриблочного копирования может использоваться отдельный буфер истории, называемый HBVP. В качестве отдельного режима от внешнего предсказания желательно иметь упрощенный процесс вывода вектора блока для режима внутриблочного копирования. Список кандидатов для предсказания IBC BV в режиме AMVP может совместно использовать тот, который используется в режиме слияния IBC (список кандидатов на слияние), с 2 пространственными кандидатами + 5 кандидатами HBVP.[110] According to some embodiments, when intra-block copy operates as a mode separate from external mode, a separate history buffer called HBVP can be used to store previously encoded vectors of blocks of intra-block copy. As a separate mode from inter-prediction, it is desirable to have a simplified block vector derivation process for the intra-block copy mode. The IBC BV prediction candidate list in AMVP mode can share the one used in the IBC merge mode (Merge Candidate List) with 2 spatial candidates + 5 HBVP candidates.

[111] Размер списка кандидатов на слияние режима IBC может быть назначен как MaxNumMergeCand. MaxNumMergeCand может определяться размером MaxNumMergeCand списка кандидатов на слияние во внешнем режиме, который указывается в некоторых примерах как six_minus_max_num_merge_cand. Переменная six_minus_max_num_merge_cand может указывать максимальное количество кандидатов на слияние предсказания вектора движения (MVP), поддерживаемых в слайсе, вычтенное из 6.[111] The size of the IBC mode merge candidate list may be assigned as MaxNumMergeCand. MaxNumMergeCand may be determined by the size of MaxNumMergeCand of the external mode merge candidate list, which is specified as six_minus_max_num_merge_cand in some examples. The variable six_minus_max_num_merge_cand may indicate the maximum number of motion vector prediction (MVP) merge candidates supported in a slice, subtracted from 6.

[112] В некоторых примерах максимальное количество кандидатов на слияние MVP, MaxNumMergeCand, может быть получено как:[112] In some examples, the maximum number of MVP merge candidates, MaxNumMergeCand, can be obtained as:

Уравнение (1): MaxNumMergeCand = 6 - six_minus_max_num_merge_candEquation (1): MaxNumMergeCand = 6 - six_minus_max_num_merge_cand

[113] Значение MaxNumMergeCand может находиться в диапазоне от 1 до 6 включительно. В некоторых системах видеокодирования размер списка слияния для режима IBC сообщается отдельно от размера списка слияния во внешнем режиме слияния для всех I/P/B-слайсов. Диапазон этого размера может быть таким же, как во внешнем режиме слияния (например, от 1 до 6 включительно). В некоторых примерах максимальное количество кандидатов IBC, MaxNumIbcMergeCand может быть получено как:[113] The MaxNumMergeCand value can range from 1 to 6 inclusive. In some video coding systems, the merge list size for the IBC mode is reported separately from the merge list size in the outer merge mode for all I/P/B slices. The range of this size can be the same as in external merge mode (for example, from 1 to 6 inclusive). In some examples, the maximum number of IBC candidates, MaxNumIbcMergeCand can be obtained as:

Уравнение (2): MaxNumIBCMergeCand = 6 - six_minus_max_num_ibc_merge_candEquation (2): MaxNumIBCMergeCand = 6 - six_minus_max_num_ibc_merge_cand

[114] В уравнении (2) переменная six_minus_max_num_ibc_merge_cand определяет максимальное количество кандидатов слияния предсказания вектора движения (MVP) IBC, поддерживаемых в срезе, вычитаемое из 6. Значение MaxNumIBCMergeCand может находиться в диапазоне от 1 до 6 включительно. В некоторых системах видеокодирования передача индекса слияния для режима слияния IBC может по-прежнему совместно использовать передачу индекса слияния, используемую для внешнего режима слияния. В этом отношении режим слияния IBC и внешний режим слияния могут совместно использовать один и тот же синтаксический элемент для индекса слияния. Поскольку индекс слияния преобразован в двоичную форму с использованием кода усеченного риса (TR), максимальная длина индекса слияния составляет MaxNumMergeCand - 1. Однако существует потребность в решении для передачи индекса слияния, когда MaxNumIbcMergeCand не равно MaxNumMergeCand.[114] In Equation (2), the variable six_minus_max_num_ibc_merge_cand specifies the maximum number of IBC motion vector prediction (MVP) merge candidates supported in a slice subtracted from 6. The value of MaxNumIBCMergeCand can range from 1 to 6 inclusive. In some video coding systems, the merge index transmission for the IBC merge mode may still share the merge index transmission used for the outer merge mode. In this regard, the IBC merge mode and the external merge mode may share the same syntax element for the merge index. Since the merge index is binarized using the truncated rice (TR) code, the maximum length of the merge index is MaxNumMergeCand - 1. However, there is a need for a solution for passing the merge index when MaxNumIbcMergeCand is not equal to MaxNumMergeCand.

[115] Варианты осуществления настоящего раскрытия можно использовать по отдельности или комбинировать в любом порядке. Кроме того, каждый из способов, кодер и декодер согласно вариантам осуществления настоящего раскрытия может быть реализован схемой обработки (например, одним или более процессорами или одной или несколькими интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе. Согласно некоторым вариантам осуществления термин «блок» может интерпретироваться как блок предсказания, блок кодирования или единица кодирования (то есть CU).[115] Embodiments of the present disclosure may be used singly or combined in any order. In addition, each of the methods, encoder and decoder according to embodiments of the present disclosure may be implemented by a processing circuit (eg, one or more processors or one or more integrated circuits). In one example, one or more processors execute a program that is stored on a non-transitory computer-readable medium. In some embodiments, the term "block" may be interpreted as a prediction block, coding block, or coding unit (ie, CU).

[116][116]

[117] Согласно некоторым вариантам осуществления, число максимального размера слияния для бинаризации индекса слияния устанавливается с возможностью переключения между числами MaxNumMergeCand и MaxNumIbcMergeCand. Например, когда текущий блок кодируется в режиме IBC, максимальный размер слияния для индекса слияния составляет MaxNumIbcMergeCand. Однако когда текущий блок не кодирован в режиме IBC, максимальный размер слияния для индекса слияния составляет MaxNumMergeCand. В таблице 1 показаны примеры синтаксических элементов и связанных преобразований в двоичную форму.[117] According to some embodiments, the maximum merge size number for binarization of the merge index is set to switch between MaxNumMergeCand and MaxNumIbcMergeCand numbers. For example, when the current block is encoded in IBC mode, the maximum merge size for the merge index is MaxNumIbcMergeCand. However, when the current block is not encoded in IBC mode, the maximum merge size for the merge index is MaxNumMergeCand. Table 1 shows examples of syntax elements and associated binarizations.

merge_data ()merge_data() regular_merge_flag [ ][ ]regular_merge_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_merge_flag [ ][ ]mmvd_merge_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_cand_flag [ ][ ]mmvd_cand_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_distance_idx [ ][ ]mmvd_distance_idx [ ][ ] TRTR cMax = 7, cRiceParam = 0cMax=7, cRiceParam=0 mmvd_direction_idx [ ][ ]mmvd_direction_idx [ ][ ] FLFL cMax = 3cMax = 3 ciip_flag [ ][ ]ciip_flag[][] FLFL cMax = 1cMax = 1 merge_subblock_flag [ ][ ]merge_subblock_flag [ ][ ] FLFL cMax = 1cMax = 1 merge_subblock_idx [ ][ ]merge_subblock_idx [ ][ ] TRTR cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0 merge_triangle_split_dir [ ][ ]merge_triangle_split_dir [ ][ ] FLFL cMax = 1cMax = 1 merge_triangle_idx0 [ ][ ]merge_triangle_idx0 [ ][ ] TRTR cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0 merge_triangle_idx1 [ ][ ]merge_triangle_idx1 [ ][ ] TRTR cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0 merge_idx [ ][ ]merge_idx [ ][ ] TRTR cMax = (CuPredMode [0][x0][y0]! = MODE_IBC? MaxNumMergeCand : MaxNumIbcMergeCand) - 1, cRiceParam = 0cMax = (CuPredMode[0][x0][y0] != MODE_IBC? MaxNumMergeCand : MaxNumIbcMergeCand) - 1, cRiceParam = 0

Таблица 1Table 1

[118] Как проиллюстрировано в Таблице 1, преобразование в двоичную форму индекса слияния (т.е. merge_idx [][]) основано на том, кодирован ли текущий блок в режиме IBC. Кроме того, FL относится к фиксированной длине; cMax относится к максимально возможному значению кода переменной длины; eRiceParam – это параметр риса кода переменной длины. Параметр «рис» может использоваться для определения двоичного кода каждого входного значения. В усеченном двоичном коде параметр риса равен 0.[118] As illustrated in Table 1, the binarization of the merge index (ie, merge_idx [][]) is based on whether the current block is encoded in IBC mode. Also, FL refers to a fixed length; cMax refers to the maximum possible value of a variable length code; eRiceParam is a variable length code rice parameter. The "rice" parameter can be used to determine the binary code of each input value. In truncated binary, the rice parameter is 0.

[119] Согласно некоторым вариантам осуществления, число максимального размера слияния для преобразования в двоичную форму индекса слияния устанавливается равным максимальному числу между MaxNumMergeCand и MaxNumIbcMergeCand. Поскольку в группе I-слайса/тайла значение MaxNumMergeCand не передается, MaxNumMergeCand может иметь предполагаемое значение 1 (т.е. минимальное возможное значение для MaxNumIbcMergeCand). Соответственно, когда MaxNumMergeCand не передается, значение six_minus_max_num_merge_cand предполагается равным 5, поскольку значение MaxNumMergeCand предполагается равным 1. Следовательно, в уравнении (1) MaxNumMergeCand равно 1, поскольку six_minus_max_num_merge_cand равно 5. В уравнении (2) значение MaxNumIbcMergeCand находится в диапазоне от 1 до 6 включительно.[119] According to some embodiments, the maximum merge size number for binarization of the merge index is set to the maximum number between MaxNumMergeCand and MaxNumIbcMergeCand. Since no MaxNumMergeCand value is passed in the I-slice/tile group, MaxNumMergeCand can be assumed to be 1 (ie the minimum possible value for MaxNumIbcMergeCand). Accordingly, when MaxNumMergeCand is not transmitted, the value of six_minus_max_num_merge_cand is assumed to be 5, since the value of MaxNumMergeCand is assumed to be 1. Therefore, in equation (1), MaxNumMergeCand is 1, since six_minus_max_num_merge_cand is 5. In equation (2), the value of MaxNumIbcMergeCand is in the range of 1 to 6 inclusive.

[120] В таблице 2 показаны примеры синтаксиса и связанных преобразований в двоичную форму.[120] Table 2 shows examples of syntax and associated binarizations.

merge_data ()merge_data() regular_merge_flag [ ][ ]regular_merge_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_merge_flag [ ][ ]mmvd_merge_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_cand_flag [ ][ ]mmvd_cand_flag [ ][ ] FLFL cMax = 1cMax = 1 mmvd_distance_idx [ ][ ]mmvd_distance_idx [ ][ ] TRTR cMax = 7, cRiceParam = 0cMax=7, cRiceParam=0 mmvd_direction_idx [ ][ ]mmvd_direction_idx [ ][ ] FLFL cMax = 3cMax = 3 ciip_flag [ ][ ]ciip_flag[][] FLFL cMax = 1cMax = 1 merge_subblock_flag [ ][ ]merge_subblock_flag [ ][ ] FLFL cMax = 1cMax = 1 merge_subblock_idx [ ][ ]merge_subblock_idx [ ][ ] TRTR cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0cMax = MaxNumSubblockMergeCand - 1, cRiceParam = 0 merge_triangle_split_dir [ ][ ]merge_triangle_split_dir [ ][ ] FLFL cMax = 1cMax = 1 merge_triangle_idx0 [ ][ ]merge_triangle_idx0 [ ][ ] TRTR cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0cMax = MaxNumTriangleMergeCand - 1, cRiceParam = 0 merge_triangle_idx1 [ ][ ]merge_triangle_idx1 [ ][ ] TRTR cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0cMax = MaxNumTriangleMergeCand - 2, cRiceParam = 0 merge_idx [ ][ ]merge_idx [ ][ ] TRTR cMax = Max (MaxNumMergeCand, MaxNumIbcMergeCand) - 1, cRiceParam = 0cMax = Max(MaxNumMergeCand, MaxNumIbcMergeCand) - 1, cRiceParam = 0

Таблица 2table 2

[121] Как проиллюстрировано в Таблице 2, преобразование в двоичную форму индекса слияния (т.е. merge_idx[][]) основано на том, превышает ли максимальное количество кандидатов режима слияния (т.е. MaxNumMergeCand) максимальное количество кандидатов IBC (т.е. MaxNumIbcMergeCand).[121] As illustrated in Table 2, the binarization of the merge index (i.e., merge_idx[][]) is based on whether the maximum number of merge mode candidates (i.e., MaxNumMergeCand) exceeds the maximum number of IBC candidates (t .e. MaxNumIbcMergeCand).

[122] Согласно некоторым вариантам осуществления диапазон MaxNumIbcMergeCand должен быть меньше или равен MaxNumMergeCand. Поскольку в группе I-слайса/тайла значение MaxNumMergeCand не передается, значение MaxNumMergeCand предполагается равным 6. Соответственно, в уравнении (1) значение six_minus_max_num_merge_cand предполагается равным 0, поскольку MaxNumMergeCand предполагается равным 6. В некоторых вариантах осуществления, когда передаваемое значение MaxNumIbcMergeCand больше, чем MaxNumMergeCand, MaxNumIbcMergeCand ограничивается до MaxNumMergeCand. Соответственно, в уравнении (2), если тип слайса – I, значение MaxNumIbcMergeCand должно быть в диапазоне от 1 до 6 включительно. Однако, если тип слайса – P или B, значение MaxNumIbcMergeCand находится в диапазоне от 1 до MaxNumMergeCand включительно. Соответственно, когда типом слайса является P или B (т.е. MaxNumMergeCand не передается), значение MaxNumIbcMergeCand может быть определено следующим образом: MaxNumIbcMergeCand = min (MaxNumIbcMergeCand, MaxNumMergeCand).[122] In some embodiments, the range of MaxNumIbcMergeCand must be less than or equal to MaxNumMergeCand. Since MaxNumMergeCand is not transmitted in the I-slice/tile group, MaxNumMergeCand is assumed to be 6. Accordingly, in Equation (1), six_minus_max_num_merge_cand is assumed to be 0, since MaxNumMergeCand is assumed to be 6. In some embodiments, when the transmitted value of MaxNumIbcMergeCand is greater than MaxNumMergeCand, MaxNumIbcMergeCand is limited to MaxNumMergeCand. Accordingly, in equation (2), if the slice type is I, the value of MaxNumIbcMergeCand must be in the range from 1 to 6 inclusive. However, if the slice type is P or B, the MaxNumIbcMergeCand value is between 1 and MaxNumMergeCand inclusive. Accordingly, when the slice type is P or B (ie, MaxNumMergeCand is not passed), the value of MaxNumIbcMergeCand can be determined as follows: MaxNumIbcMergeCand = min(MaxNumIbcMergeCand, MaxNumMergeCand).

[123] На фиг. 12 проиллюстрирован вариант осуществления процесса декодирования видео, выполняемого видеодекодером, таким как видеодекодер (710). Процесс может начинаться на этапе (S1200), где принимается кодированный битовый поток видео, включающий в себя текущее изображение. Процесс переходит к этапу (S1202), на котором определяется заранее определенное условие, связанное с данными передачи, включенными в кодированный битовый поток видео.[123] FIG. 12 illustrates an embodiment of a video decoding process performed by a video decoder, such as video decoder (710). The process may start at step (S1200) where an encoded video bitstream including the current picture is received. The process proceeds to step (S1202) in which a predetermined condition associated with the transmission data included in the encoded video bitstream is determined.

[124] Процесс переходит к этапу (S1204), где на основе заранее определенного условия размер индекса, включенного в данные передачи для списка кандидатов векторных предикторов, устанавливается равным одному из максимального количества кандидатов режима слияния и количества кандидатов IBC. В качестве примера индекс может быть индексом слияния, включенным в кодированный битовый поток видео. В качестве примера заранее определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC. Если текущий блок закодирован в режиме IBC, размер индекса устанавливается равным MaxNumIbcMergeCand. Однако если текущий блок не закодирован в режиме IBC, размер индекса устанавливается равным MaxNumMergeCand.[124] The process proceeds to step (S1204) where, based on a predetermined condition, the index size included in the transmission data for the vector predictor candidate list is set to one of the maximum number of merge mode candidates and the number of IBC candidates. As an example, the index may be a merge index included in the encoded video bitstream. As an example, the predetermined condition includes determining whether the current block is encoded in IBC mode. If the current block is encoded in IBC mode, the index size is set to MaxNumIbcMergeCand. However, if the current block is not encoded in IBC mode, the index size is set to MaxNumMergeCand.

[125] В качестве другого примера заранее определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC. Если максимальное количество кандидатов режима слияния превышает максимальное количество кандидатов IBC, размер индекса устанавливается равным MaxNumMergeCand. Однако, если максимальное количество кандидатов режима слияния меньше максимального количества кандидатов IBC, размер индекса устанавливается равным MaxNumIbcMergeCand.[125] As another example, the predetermined condition includes determining whether the maximum number of merge mode candidates exceeds the maximum number of IBC candidates. If the maximum number of merge mode candidates exceeds the maximum number of IBC candidates, the index size is set to MaxNumMergeCand. However, if the maximum number of merge mode candidates is less than the maximum number of IBC candidates, the index size is set to MaxNumIbcMergeCand.

[126] Процесс переходит с этапа (S1204) на (S1206), где список кандидатов строится с помощью векторных предикторов. Например, если текущий блок кодируется в режиме слияния, список кандидатов является списком слияния, а векторные предикторы являются векторами движения. В другом примере, если текущий блок кодируется в режиме IBC, список кандидатов представляет собой список векторных предикторов блока. Процесс продолжается с этапа (S1208), на котором векторный предиктор из списка кандидатов извлекается в соответствии с индексом, значение которого не превышает определенный размер индекса. Например, значение индекса, который используется для извлечения векторного предиктора из списка кандидатов, не может превышать размер индекса, который определяется на этапе (S1204). Процесс переходит к этапу (S1210), где текущий блок декодируется в соответствии с извлеченным векторным предиктором.[126] The process proceeds from step (S1204) to (S1206), where the list of candidates is built using vector predictors. For example, if the current block is encoded in merge mode, the candidate list is a merge list and the predictor vectors are motion vectors. In another example, if the current block is encoded in IBC mode, the candidate list is a list of vector block predictors. The process continues from (S1208) where a vector predictor from the candidate list is extracted according to an index whose value does not exceed a certain index size. For example, the value of the index that is used to extract the vector predictor from the candidate list cannot exceed the size of the index that is determined in step (S1204). The process proceeds to step (S1210) where the current block is decoded according to the extracted vector predictor.

[127] На фиг. 13 проиллюстрирован вариант осуществления процесса декодирования видео, выполняемого видеодекодером, таким как видеодекодер (710). Процесс может начинаться на этапе (S1300), где принимается кодированный битовый поток видео, включающий в себя текущее изображение. Процесс переходит к этапу (S1302), на котором данные передачи из кодированного битового потока видео извлекаются для текущего блока. Процесс переходит к этапу (S1304), чтобы определить, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока. Например, определяется, передается ли сигнал MaxNumMergeCand. Как обсуждалось выше, в некоторых примерах MaxNumMergeCand не передается для типов I-слайсов/тайлов и передается для типов P- или B-слайсов/тайлов.[127] FIG. 13 illustrates an embodiment of a video decoding process performed by a video decoder, such as video decoder (710). The process may start at step (S1300) where an encoded video bitstream including the current picture is received. The process proceeds to a step (S1302) in which transmission data from the encoded video bitstream is extracted for the current block. The process proceeds to step (S1304) to determine whether the maximum number of merge candidates is included in the extracted transmission data for the current block. For example, it is determined whether the MaxNumMergeCand signal is transmitted. As discussed above, in some examples MaxNumMergeCand is not passed for I-slice/tile types and is passed for P- or B-slice/tile types.

[128] Процесс переходит на этап (S1306), где устанавливается максимальное количество кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока. Например, если MaxNumMergeCand не передается, значение MaxNumIbcMergeCand находится в диапазоне от 1 до 6 включительно. Однако если MaxNumMergeCand передается, значение MaxNumIbcMergeCand изменяется от 1 до MaxNumMergeCand включительно.[128] The process proceeds to step (S1306) where the maximum number of intra-block copy candidates (IBC) is set based on determining whether the maximum number of merge candidates is included in the transmission data for the current block. For example, if MaxNumMergeCand is not passed, the value of MaxNumIbcMergeCand is between 1 and 6, inclusive. However, if MaxNumMergeCand is passed, the value of MaxNumIbcMergeCand changes from 1 to MaxNumMergeCand inclusive.

[129] В некоторых примерах единица кодирования содержит отсчеты компонентов яркости и цветности. Эти отсчеты компонента цветности могут иметь независимую или раздельную структуру дерева с разделением по сравнению с одним из компонентов яркости. В некоторых примерах отдельная структура дерева кодирования начинается с уровня CTU. Следовательно, возможно, что CU цветности (например, CU, которая содержит только два компонента цветности) может быть больше, чем аналог яркости CU сигнала цветности в соответствующем местоположении отсчета.[129] In some examples, the coding unit contains samples of the luminance and chrominance components. These chrominance component samples may have an independent or separate split tree structure compared to one of the luma components. In some examples, a separate coding tree structure starts at the CTU level. Therefore, it is possible that a chrominance CU (eg, a CU that contains only two chrominance components) may be larger than the luminance counterpart of the chrominance CU at the corresponding sample location.

[130] Согласно некоторым вариантам осуществления, в первом способе, когда используется структура двойного дерева, блоки цветности могут кодироваться в режиме IBC, когда выполняются по меньшей мере следующие условия:[130] According to some embodiments, in the first method, when a binary tree structure is used, chrominance blocks may be encoded in IBC mode when at least the following conditions are met:

1. Для каждой области субблока в CU цветности совмещенная область яркости кодируется в режиме IBC.1. For each sub-block area in the chrominance CU, the combined luminance area is encoded in IBC mode.

2. Все совмещенные отсчеты области яркости для CU цветности имеют один и тот же вектор блока.2. All aligned luma region samples for the chroma CU have the same block vector.

3. Полученный общий вектор блока для всей CU цветности является допустимым BV. Это означает, что этот BV указывает на уже восстановленную область в текущем изображении и в пределах заданной области ограничения для компонентов цветности.3. The resulting common block vector for the entire chroma CU is a valid BV. This means that this BV points to an already reconstructed area in the current image and within the specified clipping area for the chrominance components.

[131] На основе первого способа сторона декодера сможет обрабатывать CU цветности как всю CU, а не как CU на основе субблока. Следовательно, использование единственного полученного BV из совмещенной области яркости (например, обычно верхнего левого угла CU) для декодирования CU является достаточным.[131] Based on the first method, the decoder side will be able to process the chrominance CU as an entire CU rather than as a CU based on a subblock. Therefore, using a single received BV from the aligned luminance region (eg, typically the top left corner of the CU) to decode the CU is sufficient.

[132] Согласно некоторым вариантам осуществления, во втором способе, когда используется структура двойного дерева, могут использоваться различные условия, чтобы разрешить использование режима IBC цветности с структурой двойного дерева. В одном варианте осуществления блоки цветности могут кодироваться в режиме IBC, когда (i) все соответствующие отсчеты яркости всех отсчетов цветности принадлежат одному и тому же блоку кодирования яркости; и (ii) один и тот же блок кодирования яркости кодируется в режиме IBC. Например, это условие проверяется путем оценки двух углов CU цветности. Если соответствие яркости верхнего левого отсчета цветности и соответствие яркости нижнего правого отсчета цветности принадлежат одному и тому же блоку кодирования яркости, то вся соответствующая область яркости CU цветности принадлежит одному и тому же блоку кодирования яркости. В другом варианте осуществления блоки цветности могут кодироваться в режиме IBC при соответствующем кодировании яркости.[132] According to some embodiments, in the second method, when a dual tree structure is used, various conditions may be used to allow the use of the IBC chroma mode with the dual tree structure. In one embodiment, chrominance blocks may be encoded in IBC mode when (i) all corresponding luma samples of all chrominance samples belong to the same luminance coding block; and (ii) the same luminance coding block is encoded in IBC mode. For example, this condition is tested by evaluating two chroma angles CU. If the luminance correspondence of the upper left chrominance sample and the luma correspondence of the lower right chrominance sample belong to the same luminance coding block, then the entire corresponding luminance region CU of the chroma belongs to the same luminance coding block. In another embodiment, chrominance blocks may be encoded in IBC mode with appropriate luma coding.

[133] На основе второго способа сторона декодера сможет обрабатывать CU цветности как всю CU, а не как CU на основе субблока. Следовательно, использование единственного полученного BV из совмещенной области яркости (обычно верхнего левого угла CU) для декодирования CU является достаточным.[133] Based on the second method, the decoder side will be able to process the chrominance CU as an entire CU rather than as a CU based on a subblock. Therefore, using a single received BV from the aligned luminance region (typically the upper left corner of the CU) for decoding the CU is sufficient.

[134] Согласно некоторым вариантам осуществления либо для первого способа, либо для второго способа, относящегося к структуре двойного дерева, следующие раскрытые неограничивающие варианты осуществления показывают, как передавать данные об использовании режима IBC цветности с двойным деревом, когда указанные выше условия встречаются либо в первом способе, либо во втором способе.[134] According to some embodiments of either the first method or the second method related to the dual tree structure, the following disclosed non-limiting embodiments show how to transmit dual tree IBC chroma mode usage data when the above conditions occur either in the first method, or in the second method.

[135] В одном варианте осуществления вышеупомянутые ограничения для использования режима IBC для CU цветности с структурой двойного дерева реализованы таким образом, что флаг использования (например, ibc_flag) передается для каждой CU цветности, когда это применимо. Однако в этом варианте осуществления, только когда выполняются все условия для первого способа или все условия для второго способа, ibc_flag передается как истинный. В противном случае ibc_flag передается как ложный. В некоторых примерах, когда все условия выполняются либо для первого, либо для второго способа, ibc_flag также может передаваться как ложный в зависимости от того, как реализован кодер.[135] In one embodiment, the above restrictions for using the IBC mode for a dual-tree chroma CU are implemented such that a usage flag (eg, ibc_flag) is transmitted for each chroma CU, when applicable. However, in this embodiment, only when all conditions for the first method or all conditions for the second method are met, ibc_flag is transmitted as true. Otherwise, ibc_flag is passed as false. In some examples, when all conditions are met for either the first or the second method, ibc_flag may also be passed as false depending on how the encoder is implemented.

[136] В другом варианте осуществления вышеупомянутые ограничения для использования режима IBC для CU цветности с структурой двойного дерева реализуются так, что флаг использования (например, ibc_flag) вообще не передается. Например, для CU цветности со структурой двойного дерева, когда выполняются все условия для первого способа или второго способа, CU кодируется в режиме IBC, и ibc_flag выводится как истинный. В противном случае ibc_flag не передается и считается ложным.[136] In another embodiment, the above restrictions for using the IBC mode for a chroma CU with a dual tree structure are implemented such that a usage flag (eg, ibc_flag) is not transmitted at all. For example, for a chroma CU with a double tree structure, when all conditions for the first method or the second method are met, the CU is encoded in IBC mode and ibc_flag is output as true. Otherwise, ibc_flag is not passed and is considered false.

[137] Методы, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 14 показана компьютерная система (1400), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.[137] The methods described above may be implemented in computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 14 shows a computer system (1400) suitable for implementing certain embodiments of the disclosed subject matter.

[138] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.[138] Computer software may be coded using any suitable machine code or computer language, which may be the object of assembly, compilation, linking, or similar mechanisms to produce code containing instructions that can be executed directly or through interpretation, execution of microcode, etc. .p., one or more computer central processing units (CPUs), graphics processing units (GPUs), and the like.

[139] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.[139] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, and the like.

[140] Компоненты, показанные на фиг. 14 для компьютерной системы (1400), являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1400).[140] The components shown in FIG. 14 for the computer system (1400) are exemplary in nature and are not intended to suggest any limitation as to the scope of use or functionality of the computer software implementing embodiments of the present disclosure. The configuration of the components is also not to be interpreted as having any dependency or requirement relating to any one or combination of the components illustrated in the exemplary embodiment of the computer system (1400).

[141] Компьютерная система (1400) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).[141] The computer system (1400) may include certain human-machine interface input devices. Such a human-machine interface input device may respond to input by one or more human users through, for example, tactile input (e.g., keystrokes, swipes, movement of a control glove), audio input (e.g., voice, handclaps), visual input (for example: gestures), olfactory input (not shown). HMI devices can also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, ambient sound), images (e.g. scanned images, photographic images taken from a camera for still images), video (eg 2D video, 3D video including stereoscopic video).

[142] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображенного): клавиатура (1401), мышь (1402), трекпад (1403), сенсорный экран (1410), управляющая перчатка (не показана), джойстик (1405)), микрофон (1406), сканер (1407), камера (1408).[142] HMI input devices may include one or more of the following (only one of each depicted): keyboard (1401), mouse (1402), trackpad (1403), touch screen (1410), control glove (not shown), joystick (1405)), microphone (1406), scanner (1407), camera (1408).

[143] Компьютерная система (1400) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1410), управляющей перчатки (не показана) или джойстика (1405), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1409), наушники (не показаны)), устройства вывода изображения (например, экраны (1410), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее – некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).[143] The computer system (1400) may also include certain human-machine interface output devices. Such human interface output devices can stimulate the senses of one or more human users through, for example, tactile output, sound, light, and smell/taste. Such human interface output devices may include tactile output devices (e.g., tactile feedback from a touch screen (1410), operating glove (not shown), or joystick (1405), but there may also be tactile feedback devices that do not serve as input devices), audio output devices (for example: speakers (1409), headphones (not shown)), image output devices (for example, screens (1410), including CRT screens, LCD screens, plasma screens, OLED -screens, each with or without touchscreen input capability, each with or without tactile feedback capability - some of which may be capable of outputting 2D visual output or more than 3D output by means such as stereographic output ; virtual reality goggles (not shown), holographic displays and smoke tanks (not shown)) and printers (not shown).

[144] Компьютерная система (1400) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1420) с CD/DVD или подобными носителями (1421), флэш-накопитель (1422), съемный жесткий диск или твердотельный накопитель (1423), ранее разработанные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не показаны) и т.п.[144] The computer system (1400) may also include human accessible storage devices and associated media such as optical media including CD/DVD ROM/RW (1420) with CD/DVD or similar media (1421), flash drive (1422), removable hard drive or solid state drive (1423), previously developed magnetic media such as tape and floppy disk (not shown), dedicated ROM/ASIC/PLD based devices such as dongles (not shown) and so on.

[145] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.[145] Those skilled in the art should also understand that the term "computer-readable medium" as used in connection with the subject matter disclosed herein does not encompass transmission media, carrier waves, or other time signals.

[146] Компьютерная система (1400) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т. д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т. д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1449) (например, к портам USB компьютерной системы (1400)); другие обычно интегрированы в ядро компьютерной системы (1400) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1400) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.[146] The computer system (1400) may also include an interface to one or more communication networks. Networks can be, for example, wireless, wired, optical. In addition, networks can be LAN, WAN, metropolitan, automotive, industrial, real-time, delay tolerant, etc. Examples of networks include LANs such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., wired TV or wireless wide area digital networks, including cable TV, satellite TV and terrestrial TV, automotive and industrial equipment, including CAN bus, etc. Some networks usually require external network interface adapters that are connected to certain general purpose data ports or peripheral buses (1449) (for example, computer system USB ports (1400)); others are typically integrated into the computer system core (1400) by being attached to a system bus as described below (eg, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (1400) can communicate with other entities. Such communication can be unidirectional, receive-only (for example, broadcast television), unidirectional, send-only (for example, CAN bus to certain CAN-bus devices), or bidirectional, for example, to other computer systems using a local or wide area digital network. . Each of these networks and network interfaces may use specific protocols and protocol stacks as described above.

[147] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1440) компьютерной системы (1400).[147] The above human-machine interface devices, human-accessible storage devices, and network interfaces may be attached to the core (1440) of the computer system (1400).

[148] Ядро (1440) может включать в себя один или более центральных процессоров (ЦП) (1441), графических процессоров (ГП) (1442), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) (1443), аппаратные ускорители для определенных задач (1444) и т. д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1445), оперативным запоминающим устройством (1446), внутренними ЗУ большой емкости, такими как внутренние жесткие диски, недоступные пользователю, твердотельные накопители и т.п. (1447), могут быть подключены через системную шину (1448). В некоторых компьютерных системах системная шина (1448) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1448) ядра, либо через периферийную шину (1449). Архитектура периферийной шины включает PCI, USB и т.п.[148] The core (1440) may include one or more central processing units (CPUs) (1441), graphics processing units (GPUs) (1442), dedicated field programmable gate array processors (FPGAs) (1443), hardware accelerators for specific tasks (1444), etc. These devices, along with Read Only Memory (ROM) (1445), Random Access Memory (1446), high capacity internal storage such as internal hard drives that are not accessible to the user, solid state drives and etc. (1447) can be connected via the system bus (1448). In some computer systems, the system bus (1448) may be available as one or more physical connectors to allow expansion with additional CPUs, GPUs, or the like. Peripherals can be connected either directly to the system bus (1448) of the kernel, or via a peripheral bus (1449). Peripheral bus architecture includes PCI, USB, etc.

[149] ЦП (1441), ГП (1442), ППВМ (1443) и ускорители (1444) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1445) или ОЗУ (1446). Переходные данные также могут храниться в ОЗУ (1446), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1447). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1441), ГП (1442), ЗУ большой емкости (1447), ПЗУ (1445), ОЗУ (1446) и т.п.[149] The CPU (1441), GPU (1442), FPGA (1443), and accelerators (1444) may execute certain instructions, which in combination may constitute the aforementioned computer code. This computer code may be stored in ROM (1445) or RAM (1446). Transient data may also be stored in RAM (1446), while persistent data may be stored in, for example, internal mass storage (1447). Fast storage and retrieval to any of the storage devices can be achieved through the use of cache memory, which can be closely associated with one or more CPU (1441), GPU (1442), mass storage (1447), ROM (1445), RAM (1446), etc.

[150] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.[150] The computer-readable medium may contain computer code for performing various computer-implemented operations. The media and computer code may be specially designed and constructed for the purposes of this disclosure, or they may be well known and available to those skilled in the art of computer software.

[151] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (1400) и, в частности, ядро (1440), может обеспечивать функциональность в результате выполнения процессором(ами) (включая ЦП, ГП, ППВМ, ускорители и т.п.) программного обеспечения, размещенного на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1440), которые имеют невременной характер, например, внутренним ЗУ большой емкости ядра (1447) или ПЗУ (1445). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1440). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро (1440) и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ (1446) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1444)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это уместно. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.[151] By way of example, and not limitation, a computer system having an architecture (1400), and in particular a core (1440), may provide functionality as a result of execution by processor(s) (including CPUs, GPUs, FPGAs, accelerators, etc.). .p.) software placed on one or more tangible, machine-readable media. Such computer-readable media can be media associated with user accessible mass storage as described above, as well as certain kernel storage (1440) that is non-transitory in nature, such as internal kernel mass storage (1447) or ROM (1445). Software implementing various embodiments of the present disclosure may be stored on such devices and executed by the kernel (1440). The computer-readable medium may include one or more memory devices or microchips, as appropriate. The software may cause the core (1440), and in particular the processors within it (including the CPU, GPU, FPGA, etc.) to execute certain processes or certain parts of the specific processes described herein, including the definition of data structures stored in RAM (1446) and changing such data structures in accordance with the processes defined by the software. In addition or alternatively, a computer system may provide functionality as a result of logic embedded in or otherwise embodied in hardware circuitry (e.g., an accelerator (1444)) that may operate in place of or in conjunction with software to perform certain processes or individual parts of the specific processes described in this document. The link to the software may include logic and vice versa where appropriate. A reference to a computer-readable medium may include circuitry (eg, an integrated circuit (IC)) storing software to execute, circuitry embodying logic to execute, or both, where appropriate. The present disclosure includes any suitable combination of hardware and software.

Приложение A: СокращенияAppendix A: Abbreviations

JEM: объединенная исследовательская модельJEM: Joint Research Model

VVC: универсальное кодирование видеоVVC: Universal Video Coding

BMS: набор тестовBMS: test suite

MV: вектор движенияMV: motion vector

HEVC: высокоэффективное видеокодированиеHEVC: High Efficiency Video Coding

SEI: дополнительная расширенная информацияSEI: additional extended information

VUI: информация о свойствах видеоVUI: video property information

GOP: группа изображенийGOP: group of images

TU: единица преобразованияTU: conversion unit

PU: единица предсказанияPU: prediction unit

CTU: единица дерева кодированияCTU: coding tree unit

CTB: блок дерева кодированияCTB: coding tree block

PB: блок предсказанияPB: prediction block

HRD: гипотетический эталонный декодерHRD: Hypothetical Reference Decoder

SNR: соотношение сигнал-шумSNR: signal to noise ratio

CPU (ЦП): центральный процессорCPU (CPU): central processing unit

GPU (ГП): графический процессорGPU (GPU): graphics processing unit

CRT (ЭЛТ): электронно-лучевая трубкаCRT (CRT): cathode ray tube

LCD (ЖКД): жидкокристаллический дисплейLCD (LCD): liquid crystal display

OLED: органический светоизлучающий диодOLED: organic light emitting diode

CD: компакт-дискCD: CD

DVD: Цифровой видеодискDVD: Digital Video Disc

ROM (ПЗУ): постоянное запоминающее устройствоROM (ROM): Read Only Memory

RAM (ОЗУ): оперативное запоминающее устройствоRAM (RAM): Random Access Memory

ASIC: интегральная схема специального назначенияASIC: Application Specific Integrated Circuit

PLD: программируемое логическое устройствоPLD: Programmable Logic Device

LAN: локальная сетьLAN: local area network

GSM: глобальная система мобильной связиGSM: Global System for Mobile Communications

LTE: долгосрочное развитиеLTE: long-term development

CANBus (CAN-шина): шина локальной сети контроллераCANBus (CAN-bus): LAN bus of the controller

USB: универсальная последовательная шинаUSB: Universal Serial Bus

PCI: соединение периферийных компонентовPCI: Peripheral Component Connection

FPGA (ППВМ): программируемые пользователем вентильные матрицыFPGA (FPGA): Field Programmable Gate Arrays

SSD: твердотельный накопительSSD: solid state drive

IC: интегральная схемаIC: integrated circuit

CU: единица кодированияCU: coding unit

[152] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы раскрытия и, таким образом, находятся в пределах его сущности и объема правовой охраны.[152] Although this disclosure describes several exemplary embodiments, there are variations, permutations, and various replacement equivalents that fall within the scope of the disclosure. Thus, it will be appreciated that those skilled in the art will be able to develop numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the disclosure and thus fall within its spirit and scope.

[153] (1) Способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение; определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео; определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов, на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC); построение списка кандидатов с векторными предикторами; извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса; и декодирование текущего блока в соответствии с извлеченным векторным предиктором.[153] (1) A video decoding method includes receiving an encoded video bitstream including a current picture; determining a predetermined condition associated with transmission data included in the encoded video bitstream; determining, based on a predetermined condition, an index size included in transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy (IBC) candidates; building a list of candidates with vector predictors; extracting a vector predictor from the list of candidates according to an index whose value does not exceed a certain index size; and decoding the current block in accordance with the extracted vector predictor.

[154] (2) Способ декодирования видео согласно признаку (1), в котором предварительно определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC.[154] (2) The video decoding method according to the feature (1), wherein the predetermined condition includes determining whether the current block is encoded in IBC mode.

[155] (3) Способ декодирования видео согласно признаку (2), в котором в ответ на определение, что текущий блок закодирован в режиме IBC, устанавливают размер индекса на максимальное количество кандидатов IBC, и в ответ на определение, что текущий блок не закодирован в режиме IBC, устанавливают размер индекса на максимальное количество кандидатов режима слияния.[155] (3) The video decoding method according to feature (2), wherein, in response to determining that the current block is encoded in IBC mode, setting the index size to the maximum number of IBC candidates, and in response to determining that the current block is not encoded in IBC mode, set the index size to the maximum number of merge mode candidates.

[156] (4) Способ декодирования видео согласно любому из признаков (1) – (3), в котором предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC.[156] (4) The video decoding method according to any of (1) to (3), wherein the predetermined condition includes determining whether the maximum number of merge mode candidates exceeds the maximum number of IBC candidates.

[157] (5) Способ декодирования видео согласно признаку (4), в котором в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, устанавливают размер индекса равным максимальному количеству кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, устанавливают размер индекса на максимальное количество кандидатов IBC.[157] (5) The video decoding method according to feature (4), wherein, in response to determining that the maximum number of merge mode candidates is greater than the maximum number of IBC candidates, setting the index size to the maximum number of merge mode candidates, and in response to determining that the maximum number of merge mode candidates is less than the maximum number of IBC candidates, setting the index size to the maximum number of IBC candidates.

[158] (6) Способ декодирования видео включает в себя прием кодированного битового потока видео, включающего в себя текущее изображение; извлечение данных передачи из кодированного битового потока видео для текущего блока; определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока; и установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[158] (6) A video decoding method includes receiving an encoded video bitstream including a current picture; extracting transmission data from the encoded video bitstream for the current block; determining whether a maximum number of merge candidates is included in the extracted transmission data for the current block; and setting a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

[159] (7) Способ декодирования видео согласно признаку (6), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.[159] (7) The video decoding method according to feature (6), in which, in response to determining that the maximum number of fusion candidates is not included in the transmission data, the maximum number of IBC candidates is set to 1 to 6.

[160] (8) Способ декодирования видео согласно признаку (7), в котором в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до максимального количества кандидатов на слияние.[160] (8) The video decoding method according to feature (7), in which, in response to determining that the maximum number of merge candidates are included in transmission data, the maximum number of IBC candidates is set to 1 to the maximum number of merge candidates.

[161] (9) Устройство декодирования видео для декодирования видео включает в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение, определения предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео, определения, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC), построения списка кандидатов с векторными предикторами, извлечения векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса, и декодирования текущего блока в соответствии с извлеченным векторным предиктором.[161] (9) A video decoding apparatus for decoding a video includes a processing circuit configured to receive an encoded video bitstream including a current picture, determine a predetermined condition associated with transmission data included in the encoded video bitstream, determine , based on a predetermined condition, the index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intra-block copy (IBC) candidates, constructing the candidate list with vector predictors, extracting the vector predictor from the candidate list according to an index whose value does not exceed a certain index size, and decoding the current block in accordance with the extracted vector predictor.

[162] (10) Устройство декодирования видео согласно признаку (9), в котором предварительно определенное условие включает в себя схему обработки, конфигурированную для определения, закодирован ли текущий блок в режиме IBC.[162] (10) The video decoding apparatus according to the feature (9), wherein the predetermined condition includes a processing circuit configured to determine whether the current block is encoded in the IBC mode.

[163] (11) Устройство декодирования видео согласно признаку (10), в котором в ответ на определение, что текущий блок закодирован в режиме IBC, схема обработки конфигурирована для установки размера индекса на максимальное количество кандидатов IBC, и в ответ на определение, что текущий блок не закодирован в режиме IBC, схема обработки конфигурирована для установки размера индекса на максимальное количество кандидатов режима слияния.[163] (11) The video decoding apparatus according to feature (10), in which, in response to determining that the current block is encoded in the IBC mode, the processing circuit is configured to set the index size to the maximum number of IBC candidates, and in response to determining that the current block is not encoded in IBC mode, the processing scheme is configured to set the index size to the maximum number of merge mode candidates.

[164] (12) Устройство декодирования видео согласно любому из признаков (9) – (12), в котором предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов IBC.[164] (12) The video decoding apparatus according to any of (9) to (12), wherein the predetermined condition includes determining whether the maximum number of merge mode candidates exceeds the maximum number of IBC candidates.

[165] (13) Устройство декодирования видео согласно признаку (12), в котором в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, схема обработки дополнительно конфигурирована для установки размера индекса на максимальное количество кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, схема обработки дополнительно конфигурирована для установки размера индекса на максимальное количество кандидатов IBC.[165] (13) The video decoding apparatus according to the feature (12), in which, in response to determining that the maximum number of merge mode candidates is larger than the maximum number of IBC candidates, the processing circuit is further configured to set the index size to the maximum number of merge mode candidates , and in response to determining that the maximum number of merge mode candidates is less than the maximum number of IBC candidates, the processing circuit is further configured to set the index size to the maximum number of IBC candidates.

[166] (14) Устройство видеодекодера для декодирования видео, включающее в себя схему обработки, конфигурированную для приема кодированного битового потока видео, включающего в себя текущее изображение, извлечения данных передачи из кодированного битового потока видео для текущего блока, определения, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока и установки максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[166] (14) A video decoder apparatus for decoding video, including a processing circuit configured to receive an encoded video bitstream including a current picture, extract transmission data from the encoded video bitstream for the current block, determine whether the maximum number of merge candidates in the extracted transmission data for the current block, and setting a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

[167] (15) Видеодекодер согласно признаку (14), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.[167] (15) The video decoder according to feature (14), in which, in response to determining that the maximum number of merge candidates is not included in transmission data, the maximum number of IBC candidates is set to 1 to 6.

[168] (16) Видеодекодер согласно признаку (15), в котором в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до максимального количества кандидатов на слияние.[168] (16) The video decoder according to feature (15), in which, in response to determining that the maximum number of merge candidates are included in the transmission data, the maximum number of IBC candidates is set to 1 to the maximum number of merge candidates.

[169] (17) Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, содержащий прием кодированного битового потока видео, включающего в себя текущее изображение; определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео; определение, на основе предварительно определенного условия, размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов на основе количества кандидатов режима слияния и количества кандидатов внутриблочного копирования (IBC); построение списка кандидатов с векторными предикторами; извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса; и декодирование текущего блока в соответствии с извлеченным векторным предиктором.[169] (17) A non-transitory computer-readable storage medium comprising instructions stored thereon that, when executed by a processor in a video decoder, cause the processor to perform a method comprising receiving an encoded video bitstream including a current picture; determining a predetermined condition associated with transmission data included in the encoded video bitstream; determining, based on a predetermined condition, an index size included in the transmission data for the vector predictor candidate list based on the number of merge mode candidates and the number of intrablock copy (IBC) candidates; building a list of candidates with vector predictors; extracting a vector predictor from the list of candidates according to an index whose value does not exceed a certain index size; and decoding the current block in accordance with the extracted vector predictor.

[170] (18) Невременный машиночитаемый носитель информации согласно признаку (17), в котором предварительно определенное условие включает в себя определение, закодирован ли текущий блок в режиме IBC.[170] (18) The non-temporal computer-readable storage medium according to feature (17), wherein the predetermined condition includes determining whether the current block is encoded in IBC mode.

[171] (19) Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ, содержащий: прием кодированного битового потока видео, включающего в себя текущее изображение; извлечение данных передачи из кодированного битового потока видео для текущего блока; определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока; и установку максимального количества кандидатов внутриблочного копирования (IBC) на основе определения, включено ли максимальное количество кандидатов на слияние в данные передачи для текущего блока.[171] (19) A non-transitory computer-readable storage medium containing instructions stored thereon that, when executed by a processor in a video decoder, cause the processor to perform a method comprising: receiving an encoded video bitstream including a current picture; extracting transmission data from the encoded video bitstream for the current block; determining whether a maximum number of merge candidates is included in the extracted transmission data for the current block; and setting a maximum number of intra-block copy candidates (IBC) based on determining whether the maximum number of merge candidates is included in the transmission data for the current block.

[172] (20) Невременный машиночитаемый носитель информации согласно признаку (19), в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают в значение от 1 до 6.[172] (20) The non-transient computer-readable storage medium according to feature (19), in which, in response to determining that the maximum number of merge candidates is not included in the transmission data, the maximum number of IBC candidates is set to 1 to 6.

Claims (27)

1. Способ декодирования видео, содержащий:1. Video decoding method, comprising: - прием кодированного битового потока видео, включающего в себя текущее изображение;- receiving an encoded video bitstream including the current picture; - определение предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео, причем предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов внутриблочного копирования (IBC);determining a predetermined condition associated with transmission data included in the encoded video bitstream, the predetermined condition including determining whether a maximum number of merge mode candidates exceeds a maximum number of intrablock copy (IBC) candidates; - в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, установку размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов, на максимальное количество кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, установку размера индекса на максимальное количество кандидатов IBC;- in response to determining that the maximum number of merge mode candidates is greater than the maximum number of IBC candidates, setting the size of the index included in the transmission data for the vector predictor candidate list to the maximum number of merge mode candidates, and in response to determining that the maximum number merge mode candidates less than the maximum number of IBC candidates, setting the index size to the maximum number of IBC candidates; - построение списка кандидатов с векторными предикторами;- building a list of candidates with vector predictors; - извлечение векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса; и- extracting a vector predictor from the list of candidates in accordance with the index, the value of which does not exceed a certain size of the index; And - декодирование текущего блока в соответствии с извлеченным векторным предиктором.- decoding the current block in accordance with the extracted vector predictor. 2. Способ декодирования видео, содержащий:2. Video decoding method, comprising: - прием кодированного битового потока видео, включающего в себя текущее изображение;- receiving an encoded video bitstream including the current picture; - извлечение данных передачи из кодированного битового потока видео для текущего блока;- extracting transmission data from the encoded video bitstream for the current block; - определение, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока; и- determining whether the maximum number of merge candidates is included in the extracted transmission data for the current block; And - в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, установку максимального количества кандидатов внутриблочного копирования (IBC) на значение от 1 до максимального количества кандидатов на слияние.- in response to determining that the maximum number of merge candidates are included in the transfer data, setting the maximum number of intra-block copy candidates (IBC) to a value from 1 to the maximum number of merge candidates. 3. Способ декодирования видео по п.2, в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают на значение от 1 до 6.3. The video decoding method of claim 2, wherein, in response to determining that the maximum number of merge candidates is not included in the transmission data, the maximum number of IBC candidates is set to a value of 1 to 6. 4. Устройство декодирования видео для декодирования видео, содержащее схему обработки, конфигурированную для:4. A video decoding device for video decoding, comprising a processing circuit configured to: - приема кодированного битового потока видео, включающего в себя текущее изображение,- receiving an encoded video bitstream including the current picture, - определения предварительно определенного условия, связанного с данными передачи, включенными в кодированный битовый поток видео, причем предварительно определенное условие включает в себя определение, превышает ли максимальное количество кандидатов режима слияния максимальное количество кандидатов внутриблочного копирования (IBC),determining a predetermined condition associated with transmission data included in the encoded video bitstream, the predetermined condition including determining whether the maximum number of merge mode candidates exceeds the maximum number of intrablock copy (IBC) candidates, - в ответ на определение, что максимальное количество кандидатов режима слияния больше, чем максимальное количество кандидатов IBC, установки размера индекса, включенного в данные передачи для списка кандидатов векторных предикторов, на максимальное количество кандидатов режима слияния, и в ответ на определение, что максимальное количество кандидатов режима слияния меньше, чем максимальное количество кандидатов IBC, установки размера индекса на максимальное количество кандидатов IBC,- in response to determining that the maximum number of merge mode candidates is greater than the maximum number of IBC candidates, setting the index size included in the transmission data for the vector predictor candidate list to the maximum number of merge mode candidates, and in response to determining that the maximum number merge mode candidates are less than the maximum number of IBC candidates, setting the index size to the maximum number of IBC candidates, - построения списка кандидатов с векторными предикторами,- building a list of candidates with vector predictors, - извлечения векторного предиктора из списка кандидатов в соответствии с индексом, значение которого не превышает определенный размер индекса, и- extracting a vector predictor from the list of candidates according to an index whose value does not exceed a certain index size, and - декодирования текущего блока в соответствии с извлеченным векторным предиктором.- decoding the current block in accordance with the extracted vector predictor. 5. Устройство видеодекодера для декодирования видео, содержащее схему обработки, конфигурированную для:5. A video decoder device for video decoding, comprising a processing circuit configured to: - приема кодированного битового потока видео, включающего в себя текущее изображение,- receiving an encoded video bitstream including the current picture, - извлечения данных передачи из кодированного битового потока видео для текущего блока,- extracting transmission data from the encoded video bitstream for the current block, - определения, включено ли максимальное количество кандидатов на слияние в извлеченные данные передачи для текущего блока, и- determining whether the maximum number of merge candidates is included in the extracted transfer data for the current block, and - в ответ на определение, что максимальное количество кандидатов на слияние включено в данные передачи, установки максимального количества кандидатов внутриблочного копирования (IBC) на значение от 1 до максимального количества кандидатов на слияние.- in response to determining that the maximum number of merge candidates are included in the transfer data, setting the maximum number of intra-block copy candidates (IBC) to a value from 1 to the maximum number of merge candidates. 6. Устройство видеодекодера для декодирования видео по п.5, в котором в ответ на определение, что максимальное количество кандидатов на слияние не включено в данные передачи, максимальное количество кандидатов IBC устанавливают на значение от 1 до 6.6. The video decoder apparatus for decoding video according to claim 5, wherein in response to determining that the maximum number of merging candidates is not included in the transmission data, the maximum number of IBC candidates is set to a value of 1 to 6. 7. Невременный машиночитаемый носитель информации, содержащий хранящиеся на нем инструкции, которые при выполнении процессором в видеодекодере побуждают процессор выполнять способ по любому из пп.1-3.7. A non-transitory computer-readable storage medium containing instructions stored thereon which, when executed by a processor in a video decoder, cause the processor to perform the method of any one of claims 1-3.
RU2021122958A 2019-07-11 2020-06-10 Method and device for transmitting predictor candidate list size for intra-frame block compensation RU2793708C1 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US62/873,044 2019-07-11
US62/904,307 2019-09-23
US16/863,661 2020-04-30

Publications (1)

Publication Number Publication Date
RU2793708C1 true RU2793708C1 (en) 2023-04-04

Family

ID=

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
YAO-JEN CHANG еt al, Non-CE8: On IBC merge mode, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-O0455r2, 15th Meeting: Gothenburg, 3-12 July 2019, last upload 2019.07.05 10:07:48 на https://jvet-experts.org. HUANBANG CHEN and HAITAO YANG, Non-CE8: On IBC motion vector list construction, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG11, JVET-O0162-v1, 15th Meeting: Gothenburg, 3-12 July 2019, last upload 2019.07.05 16:15:31 на https://jvet-experts.org. US 2016105670 A1 - 2016.04.14. WO 2017058633 A1 - 2017.04.06. US 2017054996 A1 - 2017.02.23. RU 2632158 С2 - 2017.10.02. RU 2629359 С1 - 2017.08.29. 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. *

Similar Documents

Publication Publication Date Title
KR102458843B1 (en) Merge List Construction in Triangular Prediction
JP7358487B2 (en) Transformation of decoded block vectors for intra image block compensation
AU2023201023B2 (en) Method and apparatus for predictor candidate list size signaling for intra picture block compensation
KR20200116524A (en) Method and apparatus for video coding
KR102592192B1 (en) Method and apparatus for signaling predictor candidate list size
KR20210049930A (en) Method and apparatus for video decoding
EP3831071A1 (en) Method and apparatus for motion vector prediction using spatial and temporal combination
KR20210068512A (en) Method and apparatus for video coding
KR20200128590A (en) Method and apparatus for video coding
KR20200139215A (en) Method and apparatus for sub-block based temporal motion vector prediction
US20230087298A1 (en) Decoding based on string copy
EP3831051A1 (en) Method and apparatus for improvement on decoder side motion derivation and refinement
JP2023158110A (en) Video decoding method, video decoding device, computer program, and video encoding method
US11025904B2 (en) Method and apparatus for temporal motion vector prediction
KR20210080525A (en) Method and apparatus for video coding
US11496729B2 (en) Method and apparatus for video coding
KR20230058479A (en) Geometric partitioning mode using intra-block copies
RU2793708C1 (en) Method and device for transmitting predictor candidate list size for intra-frame block compensation
RU2779931C1 (en) Method and apparatus for transmitting information on the size of a predictor candidate list
RU2777498C1 (en) Method and device for video encoding
RU2801586C1 (en) Method and device for signalling flag of pass mode
RU2799066C1 (en) Method and device for video coding
RU2804382C1 (en) Method and device for video coding
RU2777377C1 (en) Unified block vector prediction to compensate for blocks inside the image
RU2780424C1 (en) Method and apparatus for video encoding