RU2777278C1 - Video encoding method and apparatus - Google Patents

Video encoding method and apparatus Download PDF

Info

Publication number
RU2777278C1
RU2777278C1 RU2021127809A RU2021127809A RU2777278C1 RU 2777278 C1 RU2777278 C1 RU 2777278C1 RU 2021127809 A RU2021127809 A RU 2021127809A RU 2021127809 A RU2021127809 A RU 2021127809A RU 2777278 C1 RU2777278 C1 RU 2777278C1
Authority
RU
Russia
Prior art keywords
block
hbvp
vector
video
current block
Prior art date
Application number
RU2021127809A
Other languages
Russian (ru)
Inventor
Сяочжун СЮЙ
Шань ЛЮ
Original Assignee
Тенсент Америка Ллс
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Тенсент Америка Ллс filed Critical Тенсент Америка Ллс
Application granted granted Critical
Publication of RU2777278C1 publication Critical patent/RU2777278C1/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: invention relates to the field of video encoding. A device for video decoding is proposed, which includes a processing circuit. The processing circuitry may be configured to receive data of the current block, encoded in intra-block copy (IBC) mode, in the bitstream. The block vector for the current block may be determined based on a historical block vector prediction (HBVP) table that includes one or more entries, each corresponding to a previously decoded block. Each entry may include a block vector of a corresponding previously decoded block and a location of the corresponding previously decoded block. The current block may be reconstructed based on the determined block vector for the current block.
EFFECT: improving the efficiency of video decoding.
15 cl, 12 dwg

Description

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

[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/911,256, "Method and Apparatus for Video Coding", поданной 24 июня 2020 г., которая испрашивает приоритет предварительной заявки США №62/867,658, "History Based Block Vector Prediction for Intra Picture Block Compensation", поданной 27 июня 2019 г. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.[0001] The present invention claims priority of U.S. Patent Application No. 16/911,256, "Method and Apparatus for Video Coding", filed June 24, 2020, which claims priority of U.S. Provisional Application No. 62/867,658, "History Based Block Vector Prediction for Intra Picture Block Compensation, filed June 27, 2019. The contents of previous applications are hereby incorporated by reference in their entirety.

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

[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.[0002] This application describes embodiments generally related to video coding.

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

[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.[0003] The description of the prior art is provided herein for the purpose of presenting the overall context of the invention. The work of the authors of the invention, to the extent that it is described in this section, as well as aspects of the description that cannot be qualified as state of the art at the time of filing, neither expressly nor impliedly recognized as the state of the art underlying the present invention.

[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с.Час такого видео требует объема памяти более 600 ГБ.[0004] Encoding and decoding of the video signal may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of images, each of which has a spatial size of, for example, 1920×1080 luma samples and associated chrominance samples. The image sequence may have a fixed or variable image rate (informally also referred to 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 with 8 bits per sample (resolution of 1920x1080 luminance samples at 60Hz frame rate) requires about 1.5 Gbps bandwidth. An hour of such video requires more than 600 GB of memory.

[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.[0005] One goal of video encoding and decoding may be to reduce redundancy in the input video signal by compressing. Compression can help to alleviate the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. You can use both lossless and lossy compression, as well as a combination of both. Lossless compression refers to techniques for reconstructing an exact copy of the original signal from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the discrepancy between the original and reconstructed signals is small enough that the reconstructed signal can be used for the intended application. Lossy compression is widely used for video. The amount of distortion allowed depends on the application; for example, users of some custom streaming applications may tolerate higher distortion than users of broadcast TV applications. The achievable compression ratio may reflect that a higher allowed/allowable distortion may result in a higher compression ratio.

[0006] Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).[0006] Motion compensation may be a lossy compression method and may refer to methods where a block of sample data from a previously reconstructed image or part of it (reference image) is spatially shifted in the direction indicated by the motion vector (hereinafter MV, motion vector) , is used to predict a newly reconstructed image or part of an image. In some cases, the reference image may be identical to the image currently being reconstructed. MVs may have two X and Y dimensions, or three dimensions, with the third indicating the reference picture used (the latter, indirectly, may be a temporal dimension).

[0007] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседствующих с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь сигнала (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.[0007] In some video compression techniques, the MV applicable to a certain region of sample data can be predicted from other MVs, such as those associated with another region of sample data, spatially adjacent to the reconstructed region and preceding that MV in decoding order. This can significantly reduce the amount of data required for MV encoding, thereby eliminating redundancy and increasing the compression ratio. MV prediction can work efficiently, for example, because when encoding the input video signal received from the 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 similar direction, and therefore in some cases can be predicted using a similar motion vector obtained from the MV of the neighboring area. As a result, the MV found for a given region is similar or identical to the MV predicted from the surrounding MVs, which in turn can be represented, after entropy encoding, in fewer bits than would be used when encoding the MV directly. In some cases, MV prediction can serve as an example of lossless compression of a signal (namely, MV) obtained 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.

[0008] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016 г.). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением" (spatial merge).[0008] 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 offered in H.265, a method hereinafter referred to as "spatial merge" is described.

[0009] Согласно фиг. 1, текущий блок (101) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который был пространственно сдвинут. Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (102-106, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.[0009] Referring to FIG. 1, the current block (101) contains samples found by the encoder in the motion search process for prediction from a previous block of the same size that has been 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 any 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.

СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION

[0010] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема обработки может быть выполнена с возможностью приема данных текущего блока, кодированного в режиме интра-блочного копирования (IBC, intra block сору) в битовом потоке. Вектор блока для текущего блока может определяться на основании таблицы предсказания вектора блока на исторической основе (HBVP, history-based block vector prediction), которая включает в себя одну или более записей, каждая из которых соответствует ранее декодированному блоку. Каждая запись может включать в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока. Текущий блок может реконструироваться на основании определенного вектора блока для текущего блока. Согласно варианту осуществления, вектор блока, положение, ширина и высота текущего блока хранятся в таблице HBVP.[0010] Aspects of the invention provide methods and apparatus for encoding/decoding a video signal. In some examples, the video decoding apparatus includes a processing circuit. The processing circuitry may be configured to receive current block data encoded in intra block copy (IBC) mode in the bitstream. The block vector for the current block may be determined based on a history-based block vector prediction (HBVP) table that includes one or more entries, each corresponding to a previously decoded block. Each entry may include a block vector of a corresponding previously decoded block and a location of the corresponding previously decoded block. The current block may be reconstructed based on the determined block vector for the current block. According to an embodiment, the block vector, position, width, and height of the current block are stored in an HBVP table.

[0011] Дополнительно, каждая запись может включать в себя координату х и координату у угла соответствующего ранее декодированного блока. В дополнительном варианте осуществления, каждая запись может включать в себя одну из позиций угла соответствующего ранее декодированного блока и ширину и высоту соответствующего ранее декодированного блока.[0011] Additionally, each entry may include an x-coordinate and a y-coordinate of a corner of a corresponding previously decoded block. In a further embodiment, each entry may include one of the corner positions of the corresponding previously decoded block and the width and height of the corresponding previously decoded block.

[0012] Согласно варианту осуществления, схема может быть выполнена с возможностью построения списка кандидатов для предсказания вектора блока (BVP, block vector prediction) на основании таблицы HBVP. Список кандидатов для BVP может включать в себя один или более из первого кандидата и второго кандидата. Первый кандидат может включать в себя первый вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок первого вектора блока расположен слева от текущего блока. Второй кандидат может включать в себя второй вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок второго вектора блока имеет положение сверху от текущего блока.[0012] According to an embodiment, the circuit may be configured to construct a candidate list for block vector prediction (BVP) based on the HBVP table. The list of candidates for the BVP may include one or more of the first candidate and the second candidate. The first candidate may include the first block vector of the block vectors in the HBVP table. The corresponding previously decoded block of the first block vector is located to the left of the current block. The second candidate may include a second block vector of the block vectors in the HBVP table. The corresponding previously decoded block of the second block vector has a position above the current block.

[0013] Схема выполнена с возможностью классификации записей в таблице HBVP в разные группы, каждая из которых хранится в классификационной таблице HBVP. В примере, одна из записей таблицы HBVP сохраняется в одной из классификационных таблиц HBVP, когда размер соответствующего ранее декодированного блока одной из записей таблицы HBVP удовлетворяет условию размера блока. Условие размера блока может состоять в том, что количество отсчетов яркости соответствующего ранее декодированного блока одной из записей таблицы HBVP больше или равно порогу.[0013] The schema is configured to classify the entries in the HBVP table into different groups, each of which is stored in the HBVP classification table. In the example, one of the HBVP table entries is stored in one of the HBVP classification tables when the corresponding previously decoded block size of one of the HBVP table entries satisfies the block size condition. The block size condition may be that the number of luma samples of the corresponding previously decoded block of one of the HBVP table entries is greater than or equal to a threshold.

[0014] В дополнительном примере, записи в таблице HBVP классифицируются в классификационные таблицы HBVP на основании координаты х, координаты у или комбинации координат х и у каждого из соответствующих ранее декодированных блоков, хранящихся в таблице HBVP.[0014] In an additional example, entries in the HBVP table are classified into HBVP classification tables based on the x-coordinate, y-coordinate, or combination of x-coordinate and y-coordinate of each of the respective previously decoded blocks stored in the HBVP table.

[0015] Согласно варианту осуществления, принимается индекс, указывающий одну из классификационных таблиц HBVP. Одна запись выбирается из указанных классификационных таблиц HBVP, которые соответствуют самому последнему декодированному блоку из ранее декодированных блоков одной или более записей в указанных классификационных таблицах HBVP. Вектор блока выбранной одной записи используется как предсказатель вектора блока для вектора блока для текущего блока.[0015] According to an embodiment, an index indicating one of the HBVP classification tables is received. One entry is selected from the specified HBVP classification tables that correspond to the most recent decoded block from previously decoded blocks of one or more entries in the specified HBVP classification tables. The block vector of the selected single record is used as the block vector predictor for the block vector for the current block.

[0016] Согласно варианту осуществления, строится список кандидатов для BVP. Список кандидатов для BVP включает в себя один или более кандидатов BVP, каждый из которых включает в себя вектор блока, выбранный из классификационных таблиц HBVP. кандидат BVP можно выбирать из списка кандидатов для BVP в качестве предсказателя вектора блока для вектора блока для текущего блока на основании индекса, принятого от битового потока. В различных вариантах осуществления, текущий блок может кодироваться в одном из режима пропуска, режима объединения и режима усовершенствованного предсказания вектора движения (AMVP, advanced motion vector prediction).[0016] According to an embodiment, a list of BVP candidates is built. The BVP candidate list includes one or more BVP candidates, each including a block vector selected from the HBVP classification tables. a BVP candidate may be selected from a BVP candidate list as a block vector predictor of the block vector for the current block based on an index received from the bitstream. In various embodiments, the current block may be encoded in one of skip mode, merge mode, and advanced motion vector prediction (AMVP) mode.

[0017] Аспекты изобретения также предусматривают компьютерно-считываемый носитель, где хранятся инструкции, которые, при выполнении компьютером для видеодекодирования, предписывают компьютеру осуществлять описанный способ видеодекодирования.[0017] Aspects of the invention also provide a computer-readable medium that stores instructions that, when executed by a video decoding computer, cause the computer to perform the described video decoding method.

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

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

[0019] фиг. 1 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере;[0019] FIG. 1 is a diagram of the current block and its surrounding space-merge candidates in one example;

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

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

[0022] фиг. 4 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;[0022] FIG. 4 is a simplified block diagram of a decoder according to an embodiment;

[0023] фиг. 5 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;[0023] FIG. 5 is a simplified block diagram of an encoder according to an embodiment;

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

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

[0026] фиг. 8 - пример компенсации внутри блока изображения;[0026] FIG. 8 is an example of compensation within an image block;

[0027] фиг. 9A-9D - пример компенсации внутри блока изображения с памятью размером в одну CTU для хранения реконструированных отсчетов;[0027] FIG. 9A-9D show an example of compensation within an image block with one CTU memory for storing reconstructed samples;

[0028] фиг. 10 - пример кандидатов на пространственное объединение текущего блока (1010);[0028] FIG. 10 shows an example of candidates for the spatial union of the current block (1010);

[0029] фиг. 11 - блок-схема операций процесса (1100) согласно некоторым вариантам осуществления изобретения;[0029] FIG. 11 is a block diagram of the operations of a process (1100) according to some embodiments of the invention;

[0030] фиг. 12 - схема компьютерной системы в соответствии с вариантом осуществления.[0030] FIG. 12 is a diagram of a computer system in accordance with an embodiment.

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

[0031] I. Кодер и декодер для видео кодирования[0031] I. Encoder and decoder for video coding

[0032] На фиг. 2 показана упрощенная блок-схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)), для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.[0032] FIG. 2 shows a simplified block diagram of a communication system (200) according to an embodiment of the present invention. 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 shown in FIG. 2, the first pair of terminals (210) and (220) performs a unidirectional data transfer. For example, a terminal device (210) may encode video data (eg, a video stream captured by a terminal device (210)) for transmission to another terminal device (220) via a 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 according to the recovered video data. One-way communication may be inherent in media service applications and the like.

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

[0034] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.[0034] In the example shown in FIG. 2, terminal devices (210), (220), (230), and (240) can be illustrated as servers, personal computers, and smartphones, but this does not limit the principles of the present invention. Embodiments of the present invention find application in laptop computers, tablet computers, media players and/or dedicated video conferencing equipment. Network (250) represents any number of networks that carry encoded video data between terminals (210), (220), (230) and (240), including, for example, wired and/or wireless communication networks. The communication network (250) allows data to be exchanged in a circuit-switched and/or packet-switched mode. Exemplary 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 relevant to the present invention unless specifically noted below.

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

[0036] Система потоковой передачи может включать в себя подсистему (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-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, Versatile Video Coding). Раскрытое изобретение может использоваться в контексте VVC.[0036] The streaming system may include a capture subsystem (313), which may include a video source (301), such as a digital camera, producing, for example, an uncompressed video stream (302). For example, the video stream (302) includes samples taken by a digital camera. The video stream (302), shown in bold to highlight 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 source (301) of the video signal. The video encoder (303) may include hardware, software, or a combination thereof for providing or implementing aspects of the disclosed invention, as described in more detail below. The 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), may 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 may access the streaming server (305) to retrieve 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 video stream (311) that can be rendered on a display (312) (eg, a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (eg, video bitstreams) may be encoded according to one or another video coding/compression standard. Examples of these standards include ITU-T Recommendation H.265. For example, a video coding standard is being developed under the official name "universal video coding" (VVC, Versatile Video Coding). The disclosed invention may be used in the context of VVC.

[0037] Заметим, что электронные устройства (320) и (330) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (320) может включать в себя видеодекодер (не показан), и электронное устройство (330) также может включать в себя видеокодер (не показан).[0037] Note 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).

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

[0039] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиггером сети, буферная память (415) может быть подключена между приемником (431) и энтропийным декодером / анализатором (420) (далее "анализатором (420)"). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (410), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления хронированием доигрывания. Когда приемник (431) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (415) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).[0039] The receiver (431) may receive one or more encoded video sequences for decoding by the video decoder (410); in the same or another embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of other coded video sequences. The encoded video sequence may be received from a channel (401), which may be a hardware/software link to a storage device where the encoded video data is stored. The receiver (431) may receive encoded video data with other data, such as encoded audio data and/or auxiliary data streams, which may be relayed to appropriate users and entities (not shown). The receiver (431) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (415) may be connected between the receiver (431) and the entropy decoder/analyzer (420) (hereinafter "analyzer (420)"). In some applications, the buffer memory (415) is included in the video decoder (410). In others, it may not be part of the video decoder (410) (not shown). In other embodiments, there may be a buffer memory (not shown) outside the video decoder (410), for example, to combat network jitter, in addition to another buffer memory (415) within the video decoder (410), for example, to control the timing of the playout. When the receiver (431) receives data from a storage/relay device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use in best effort packet networks, such as the Internet, buffer memory (415) may be required, may be relatively large, and may have a predominantly adaptive size, and may at least partially be implemented in an operating system or similar elements (not shown) outside video decoder (410).

[0040] Видеодекодер (410) может включать в себя анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (410), и возможно информацию для управления устройством визуализации, например, устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.[0040] The video decoder (410) may include an analyzer (420) for reconstructing 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 possibly information to control a visualization device, such as a visualization device (412) (for example, 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 Supplemental Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The analyzer (420) may analyze/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 run length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The analyzer (420) can 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 (GOP, Groups of Pictures), images, tiles, slices, macroblocks, coding units (CU, Coding Units), blocks, transformation units (TU, Transform Units), prediction units (PU, Prediction Units ) etc. The analyzer (420) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.

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

[0042] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и множественными модулями для простоты в дальнейшем не показан.[0042] Several different modules may be used for symbol reconstruction (421) depending on the type of encoded video image or parts thereof (eg: inter- and intra-pictures, inter- and intra-block) and other factors. Which modules are used, and how, may be determined by the subgroup management information extracted from the encoded video sequence by the analyzer (420). The flow of such subgroup management information between the analyzer (420) and multiple modules is not shown hereinafter for simplicity.

[0043] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально подразделяться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное подразделение на нижеперечисленные функциональные модули.[0043] In addition to the previously mentioned functional blocks, the video decoder (410) can be fundamentally divided into several functional modules, as described below. In a practical implementation operating under commercial constraints, many of these modules interact closely with one another and can, at least partially, be nested within one another. However, for the purposes of describing the disclosed invention, a fundamental subdivision into the following functional modules is appropriate.

[0044] Первым модулем является модуль (451) масштабирования / обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).[0044] 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 the transform used, block size, quantization factor, quantization scaling matrices, and so on. as character(s) (421) from the analyzer (420). The scaling/inverse transform module (451) can output blocks containing sample values that can be input to the aggregator (455).

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

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

[0047] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (456) контурного фильтра в качестве символов (421) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.[0047] Various loop filtering techniques can be applied to the aggregator (455) output samples in the loop filter module (456). The video compression technologies may include deblocking filter technologies driven by parameters included in the encoded video sequence (also referred to as the encoded video bitstream) and made available to the loop filter module (456) as symbols (421) from the analyzer (520), but may also respond to metainformation obtained during decoding of the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as respond to previously reconstructed and contour filtered sample values.

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

[0049] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.[0049] Some encoded pictures, when fully reconstructed, can be used as reference pictures for future prediction. For example, when the encoded picture corresponding to the current picture is completely reconstructed and the encoded picture is identified as a reference picture (e.g., by the analyzer (420)), the current picture buffer (458) may become part of the reference picture memory (457), and a fresh current picture buffer may be re-allocated before the next encoded picture is reconstructed.

[0050] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.[0050] The video decoder (410) may perform decoding operations according to a predetermined video compression technology, such as the ITU-T Rec. H.265. The encoded video sequence may conform to the syntax specified by the used video compression technology or standard, in the sense that the encoded video sequence may adhere 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 tools available for use only under that profile, from among all the tools available in a video compression technology or standard. It may also be necessary for consistency that the complexity of the encoded video sequence remains within the boundaries given by the level of video compression technology or standard. In some cases, the levels limit the maximum image size, the maximum frame rate, the maximum sampling rate for reconstruction (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the levels, in some cases, may be further limited by the specifications of the hypothetical reference decoder (HRD, Hypothetical Reference Decoder) and metadata for managing the HRD buffer signaled in the encoded video sequence.

[0051] Согласно варианту осуществления, приемник (431) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.[0051] According to 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 properly decode the data and/or more accurately reconstruct the original video data. The additional data may be, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, and so on.

[0052] На фиг. 5 показана блок-схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) включает в себя передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.[0052] FIG. 5 shows a block diagram of a video encoder (503) according to an embodiment of the present invention. 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 shown in FIG. 3.

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

[0054] Источник (501) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (501) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание посвящено отсчетам.[0054] The video source (501) may provide the source video sequence to be encoded by the video encoder (503) in the form of a digital video sample stream of any suitable bit depth (eg: 8 bit, 10 bit, 12 bit, ...), any color space (eg, BT.601 Y CrCB, RGB, ...) and any suitable sampling structure (eg Y CrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the video source (501) may be a storage device where previously prepared video is stored. 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 give a sense of movement when viewed in sequence. The images themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sampling structure, color space, etc. used. It is not difficult for a person skilled in the art to understand the relationship between pixels and samples. The following description is about readings.

[0055] Согласно варианту осуществления, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизация скорости-искажения, …), размер изображения, схему групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для той или иной конструкции системы.[0055] According to an embodiment, the video encoder (503) may encode and compress images of the original video sequence into the encoded video sequence (543) in real time or subject to any other time constraints imposed by the application. Establishing a proper 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 connected to other functional modules. The connection is not shown for simplicity. The parameters set by the controller (550) may include parameters related to frequency adjustment (picture skip, quantizer, lambda value applied in rate-distortion optimization, ...), picture size, group of pictures scheme (GOP, group of pictures), maximum motion vector search area, etc. The controller (550) may be configured to have other suitable functions related to the video encoder (503) optimized for a given system design.

[0056] В некоторых вариантах осуществления видеокодер (503) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (530) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер (533) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.[0056] In some embodiments, the video encoder (503) is configured to operate in a coding loop. As a very simplified description, by way of example, an encoding loop may include a source encoder (530) (e.g., responsible for generating symbols, e.g., a stream of symbols, based on the input image to be encoded and the reference image(s) )) and a (local) decoder (533) built into the video encoder (503). The decoder (533) reconstructs the symbols to produce sample data, in a similar manner as a (remote) decoder would (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies of the disclosed invention). The reconstructed sample stream (sample data) is entered into the reference picture memory (534). Since the decoding of the symbol stream produces bit-accurate results independent of the position of the decoder (local or remote), the contents of the reference picture memory (534) will also be the same bit-accuracy for the local encoder and the remote encoder. In other words, the predicted portion of the encoder "sees" as reference picture samples exactly the same sample values as the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and eventually drift if synchronism cannot be maintained due to, for example, channel errors) is also used in some related fields of technology.

[0057] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие в себя буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).[0057] A "local" decoder (533) may operate in the same manner as a "remote" decoder, such as the video decoder (410) detailed above with reference to FIG. 5. However, again, referring to FIG. 4, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (545) and analyzer (420) can be lossless, the entropy decoding parts of the video decoder (410) including the buffer memory (415) and the analyzer (420) , may not be fully implemented in the local decoder (533).

[0058] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа/энтропийного декодирования, также обязательно должна присутствовать, по в существу идентичной функциональной форме в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.[0058] In doing so, it can be concluded that any decoding technology present in a decoder, with the exception of analysis/entropy decoding, must also be present in essentially identical functional form in the corresponding encoder. For this reason, the disclosed invention is focused on the operation of the decoder. The description of encoding technologies can be abbreviated as they are the inverse of the decoded technologies described in detail. Only in some areas a more detailed description is required, which is given below.

[0059] Согласно некоторым примерам, в ходе работы исходный кодер (530) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (532) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.[0059] According to some examples, in operation, source encoder (530) may perform motion-compensated predictive coding, in which an input picture is predictively encoded based on one or more previously encoded pictures from a video sequence, referred to as "reference pictures". Thus, the encoding 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 predicted reference(s) to the input image.

[0060] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (530). Операции машины (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).[0060] The local video decoder (533) may decode the encoded video data of pictures that can be specified as reference pictures based on the symbols generated by the source encoder (530). The operations of the encoding engine (532) may be predominantly 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) duplicates the decoding processes that may be performed by the video decoder on the reference pictures and may cause the reconstructed 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 having the same content as the reconstructed reference pictures to be received by the video decoder at the receiver side (in the absence of transmission errors).

[0061] Предсказатель (535) может осуществлять поиски предсказания для машины (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов × пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.[0061] The predictor (535) may perform prediction searches for the encoding engine (532). Thus, for a new picture to be encoded, the predictor (535) can search the reference picture memory (534) for sample data (as candidates for the role of reference pixel blocks) or some metadata, for example, motion vectors of the reference picture, block shapes etc., which can serve as a proper reference for predicting new images. The predictor (535) may operate on a sample block × pixel block basis to find appropriate references for prediction. In some cases, according to the search results obtained by the predictor (535), the input picture may have prediction references extracted from the plurality of reference pictures stored in the reference picture memory (534).

[0062] Контроллер (550) может управлять операциями кодирования исходного кодера (530), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.[0062] 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.

[0063] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.[0063] The output signal 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 run length coding, arithmetic coding, and so on.

[0064] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).[0064] The transmitter (540) may buffer the encoded video sequence(s) created by the entropy encoder (545) in preparation for transmission over a communication channel (560), which may be a hardware/software link to a storage device where 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 auxiliary data streams (sources not shown).

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

[0066] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.[0066] An intra-picture (I-picture) that can be encoded and decoded without using any other picture in the sequence as a prediction source. Some video codecs allow different types of intra-pictures, including, for example, pictures in the Independent Decoder Refresh ("IDR") format. The person skilled in the art will be aware of the varieties of I-images and their respective applications and features.

[0067] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[0067] A predicted picture (P-picture) 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.

[0068] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.[0068] A bi-directionally predicted picture (B picture) 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. Likewise, multi-predicted pictures may use more than two reference pictures and associated metadata to reconstruct a single block.

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

[0070] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.[0070] The video encoder (503) may perform encoding operations according to 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 redundancies in the input video sequence. Therefore, the encoded video data may conform to the syntax given by the video coding technology or standard being used.

[0071] Согласно варианту осуществления, передатчик (540) может передавать дополнительные данные с кодированным видео. Исходный кодер (530) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.[0071] According to an embodiment, the 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 include 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.

[0072] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.[0072] The video may be captured as a plurality of source images (video images) in time sequence. Intra-image prediction (often abbreviated as intra-image prediction) uses spatial correlation within a given image, and inter-image prediction uses (temporal or otherwise) correlation between images. For example, a specific image to be encoded/decoded, which is called 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, which is referred to as 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 in case multiple reference pictures are used.

[0073] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.[0073] 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, for example, a first reference picture and a second reference picture, both of which 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 by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. The block may be predicted by a combination of the first reference block and the second reference block.

[0074] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.[0074] Additionally, a merging mode technique may be used in inter-picture prediction to improve coding efficiency.

[0075] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree units) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree blocks), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[0075] According to some embodiments of the invention, predictions, such as inter-picture predictions and intra-picture predictions, are performed block by block. For example, according to the HEVC standard, an image in a video sequence is divided into coding tree units (CTUs) for compression, CTUs in an image are the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, the CTU includes three coding tree blocks (CTBs), namely one luma CTB and two chrominance CTBs. Each CTU may recursively divide the quadtree into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU, or 4 32x32 pixel CUs, or 16 16x16 pixel CUs. For example, each CU is analyzed 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 (PU) depending on temporal and/or spatial predictability. In general, each PU includes a Luma Prediction Unit (PB) and two Chroma PBs. According to an embodiment, the 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, e.g., 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc. P.

[0076] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.[0076] FIG. 6 shows a diagram of a video encoder (603) according to another embodiment of the invention. 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. For example, video encoder (603) is used instead of video encoder (303) in the example shown in FIG. 3.

[0077] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интер-режиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.[0077] In the HEVC example, video encoder (603) receives a matrix of sample values for a processing block, eg, an 8x8 sample prediction block, or the like. The video encoder (603) determines whether the processing block is best encoded in intra mode, inter mode, or dual prediction mode using, for example, rate-distortion optimization. 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 the processing unit is to be encoded in inter mode or dual prediction mode, the video encoder (603) may use an inter prediction or dual prediction technique, respectively, to encode the processing unit into an encoded picture. In some video coding technologies, the combining mode may be a sub-mode of inter-picture prediction where the motion vector is derived from one or more motion vector predictors without involving the encoded motion vector component outside of the predictors. In some other video coding technologies, there may be a motion vector component applicable to a given block. By way of example, the video encoder (603) includes other components, such as a mode determination module (not shown) for determining the mode of the processing units.

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

[0079] Интер-кодер (630) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.[0079] The inter-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 reference pictures (e.g., blocks in previous pictures and later pictures), generate external prediction (eg, describing redundant information according to the intra coding method, motion vectors, combining mode information), and calculating inter prediction results (eg, prediction block) based on the inter prediction information using any suitable method. In some examples, reference pictures are decoded reference pictures that are decoded based on encoded video information.

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

[0081] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является интра-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата интра-режима для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка, и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.[0081] The common controller (621) is configured to determine common control data and control other components of the video encoder (603) based on the common control data. For example, the common controller (621) determines the block mode and outputs a control signal to the switch (626) based on the mode. For example, when the mode is the 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 the bit flow.

[0082] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (622) или интер-кодера (630). Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (603) также включает в себя декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (622) и интер-кодером (630). Например, интеркодер (630) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (622) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.[0082] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and the prediction results selected from the intra-coder (622) or inter-coder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data to generate transform coefficients. For example, the residual encoder (624) is configured to transform residual data from the spatial domain to the frequency domain and generate transform coefficients. Then, the transform coefficients are subjected to quantization processing to obtain quantized transform coefficients. In various embodiments, the 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 intra-coder (622) and the inter-coder (630). For example, the intercoder (630) may generate decoded blocks based on the decoded residual data and inter prediction information, and the intra encoder (622) may generate decoded blocks based on the decoded residual data and intra prediction information. The decoded blocks are properly processed to generate decoded pictures, and the decoded pictures can be buffered in a memory circuit (not shown) and used as reference pictures in some examples.

[0083] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.[0083] The entropy encoder (625) is configured to format the bitstream so that it includes a coded block. The entropy encoder (625) is configured to include various information according to a suitable standard, such as the HEVC standard. For example, the 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 appropriate information in the bitstream. Note that, according to the disclosed invention, when encoding a block in the combining sub-mode of any of the inter-mode and the dual-prediction mode, there is no residual information.

[0084] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной[0084] FIG. 7 shows a diagram of a video decoder (710) according to another embodiment of the invention. The video decoder (710) is configured to receive encoded pictures constituting part of the encoded

видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.video sequence, and decoding the encoded pictures to generate reconstructed pictures. For example, video decoder (710) is used instead of video decoder (310) in the example shown in FIG. 3.

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

[0086] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (772) или интер-декодером (780), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (780); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (772). Информация остатка может подвергаться обратному квантованию и поступать в декодер (773) остатка.[0086] The entropy decoder (771) may be configured to reconstruct, from the encoded image, some symbols that represent the syntax elements that form the encoded image. Such symbols may include, for example, a block coding mode (e.g., intra mode, inter mode, dual prediction mode, the latter two being in a pooling submode or other submode), prediction information (e.g., intra prediction information, or inter prediction information ) that can identify a specific sample or metadata used for prediction by the intra-decoder (772) or inter-decoder (780), respectively, residual information in the form of, for example, quantized transform coefficients, and the like. For example, when the prediction mode is an intra or dual prediction mode, the inter prediction information is input to the inter decoder (780); and when the prediction type is an intra prediction type, the intra prediction information is input to the intra decoder (772). The residual information may be inverse quantized and fed to the residual decoder (773).

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

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

[0089] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).[0089] 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 some control information (include a quantizer parameter (QP, Quantizer Parameter)), and this information may be provided by the entropy decoder (771) (the data path is not shown since this may only be small volume control information).

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

[0091] Заметим, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.[0091] Note that video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using any suitable technique. According to 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.

[0092] II. Интра-блочное копирование[0092] II. Intra-block copy

[0093] В гибридном блочном видеокодировании хорошо известна компенсация движения из другого изображения (компенсация движения между изображениями). Аналогично, компенсация движения также может осуществляться из ранее реконструированной области в том же изображении. Это именуется блочной компенсацией внутри изображения, с опорой на текущее изображение (CPR, current picture referencing), или интра-блочным копированием (IBC). В IBC, вектор перемещения, который указывает смещение между текущим блоком и опорным блоком именуется вектором блока (BV, block vector). В отличие от вектора движения при компенсации движения из другого изображения, который может принимать любое значение (положительное или отрицательное, в направлении х или у), вектор блока имеет ряд ограничений, и это позволяет гарантировать, что указанный опорный блок доступен и уже реконструирован. Также, для параллельной обработки исключена некоторая опорная область, которая является границей тайла или граница в форме волнового фронта ступенчатой формы также исключена для IBC.[0093] In hybrid block video coding, motion compensation from another picture (inter-picture motion compensation) is well known. Likewise, motion compensation can also be performed from a previously reconstructed area in the same image. This is called current picture referencing (CPR) or intra-block copying (IBC). In IBC, a translation vector that specifies the offset between the current block and the reference block is called a block vector (BV). Unlike the motion vector when compensating motion from another image, which can take on any value (positive or negative, in the x or y direction), the block vector has a number of restrictions, and this allows you to ensure that the specified reference block is available and has already been reconstructed. Also, for parallel processing, some reference area that is a tile boundary or a stepped wavefront boundary is also excluded for IBC.

[0094] Кодирование вектора блока может быть либо явным, либо неявным. В явном режиме (также именуемом режим усовершенствованного предсказания векторов движения (AMVP) во внешнем кодировании) сигнализируется разностный BV между вектором блока и его предсказателем; в неявном режиме вектор блока восстанавливается только из его предсказателя, аналогичным образом, как вектор движения, полученный в режиме объединения. Разрешение вектора блока, в некоторых реализациях, ограничивается целочисленными позициями; в других системах, ему может быть разрешено указывать дробные позиции.[0094] The block vector encoding can be either explicit or implicit. In explicit mode (also referred to as Enhanced Motion Vector Prediction (AMVP) mode in outer coding), the difference BV between a block vector and its predictor is signaled; in implicit mode, the block vector is reconstructed only from its predictor, in the same way as the motion vector obtained in pool mode. Block vector resolution, in some implementations, is limited to integer positions; on other systems, it may be allowed to indicate fractional positions.

[0095] Согласно варианту осуществления, использование IBC на уровне блоков может сигнализироваться с использованием флага уровня блоков, именуемого флагом IBC. В примере, флаг IBC сигнализируется, когда текущий блок не кодирован в режиме объединения. В другом примере, использование IBC может сигнализироваться согласно подходу опорного индекса, и текущее декодированное изображение обрабатывается как опорное изображение. Например, при кодировании содержимого экрана HEVC (SCC, Screen Content Coding), такое опорное изображение помещается в последнюю позицию списка опорных изображений. Это особое опорное изображение также управляется совместно с другими временными опорными изображениями в буфере изображений декодера (DPB, decoded picture buffer).[0095] According to an embodiment, the use of IBC at the block level may be signaled using a block level flag referred to as the IBC flag. In the example, the IBC flag is signaled when the current block is not encoded in merge mode. In another example, the use of IBC may be signaled according to the reference index approach and the current decoded picture is processed as a reference picture. For example, when encoding the content of the HEVC screen (SCC, Screen Content Coding), such a reference image is placed in the last position of the list of reference images. This particular reference picture is also managed in conjunction with other temporary reference pictures in a decoded picture buffer (DPB).

[0096] Существуют также некоторые вариации для IBC, например, обработка IBC в качестве третьего режима, который отличается от режима внутреннего или внешнего предсказания. Таким образом, режим объединения для предсказания вектора блока и режим AMVP для IBC отделены от обычного интер-режима. Например, для режима IBC задается отдельный список кандидатов на объединение, где все записи являются векторами блока. Аналогично, список предсказаний вектора блока в режиме AMVP IBC состоит из векторов блока. К обоим спискам применяются общие правила: правила могут следовать той же логике, что и список кандидатов на внешнее объединение или список предсказателей AMVP в отношении процесса вывода кандидатов. Например, 5 соседствующих в пространстве положений (показанные на фиг. 10) HEVC или режим внешнего объединения VVC достигаются для вывода списка кандидатов на объединение для IBC.[0096] There are also some variations for IBC, such as treating IBC as a third mode that is different from the intra or inter prediction mode. Thus, the combining mode for block vector prediction and the AMVP mode for IBC are separated from the normal inter mode. For example, for IBC mode, a separate merge candidate list is specified, where all entries are block vectors. Similarly, the list of block vector predictions in AMVP IBC mode consists of block vectors. General rules apply to both lists: the rules can follow the same logic as an outer join candidate list or an AMVP predictor list with respect to the candidate inference process. For example, 5 space-adjacent positions (shown in FIG. 10) of HEVC or VVC outer join mode are achieved to output a list of join candidates for IBC.

[0097] На фиг. 8 показан пример компенсации внутри блока изображения. Изображение (810), подвергающееся обработке (именуемое текущим изображением), разбивается на CTU (811-825). CTU (811-822) декодируются. Текущая CTU (823) подвергается обработке. Для декодирования IBC-кодированного текущего блока (801) в текущей CTU (823), сначала может определяться вектор (803) блока. На основании вектора (803) блока, можно определить положение опорного блока (802) (также именуемого блоком предсказания или блоком предсказателя) в CTU (817). Соответственно, текущий блок (801) может реконструироваться путем объединения опорного блока (802) с остатком текущего блока (801). Как показано, опорный блок (802) и текущий блок (801) располагаются в одном и том же текущем изображении (810).[0097] FIG. 8 shows an example of compensation within an image block. The image (810) being processed (referred to as the current image) is divided into CTUs (811-825). CTUs (811-822) are decoded. The current CTU (823) is being processed. To decode the IBC-coded current block (801) in the current CTU (823), a block vector (803) may be determined first. Based on the block vector (803), the position of the reference block (802) (also referred to as a prediction block or predictor block) in the CTU (817) can be determined. Accordingly, the current block (801) may be reconstructed by combining the reference block (802) with the remainder of the current block (801). As shown, the reference block (802) and the current block (801) are located in the same current picture (810).

[0098] На фиг. 9A-9D показан пример компенсации внутри блока изображения с памятью размером в одну CTU для хранения реконструированных отсчетов. В первом примере зона поиска режима IBC может ограничиваться текущей CTU. Таким образом, требование к эффективной памяти для хранения опорных отсчетов для режима IBC составляет размер одного CTU отсчетов. В порядке примера, текущую CTU 128×128 можно разбить на четыре области 64×64. С учетом существующей памяти опорных отсчетов для хранения реконструированных отсчетов в текущей области 64×64, требуется 3 дополнительных блока памятки опорных отсчетов размером 64×64. На основании этого факта, во втором примере, эффективную зону поиска режима IBC можно расширить на некоторую часть левой CTU, тогда как требование к полной памяти для хранения опорных пикселей остается неизменным (1 размер CTU, суммарно 4 блока 64×64 памяти опорных отсчетов).[0098] FIG. 9A-9D show an example of compensation within an image block with one CTU memory for storing reconstructed samples. In the first example, the IBC mode search area may be limited to the current CTU. Thus, the effective memory requirement for storing reference samples for the IBC mode is one CTU of samples. By way of example, the current 128x128 CTU can be partitioned into four 64x64 regions. Given the existing reference sample memory, to store reconstructed samples in the current 64×64 area, 3 additional 64×64 reference sample memory blocks are required. Based on this fact, in the second example, the effective search area of the IBC mode can be extended to some part of the left CTU, while the total memory requirement for storing the reference pixels remains unchanged (1 CTU size, total 4 64x64 reference sample memories).

[0099] На фиг. 9A-9D показано, как память размером в одну CTU повторно используется для поиска левой CTU. На каждой из фиг. 9A-9D показаны левая CTU и правая CTU, имеющие размер 128×128 отсчетов. Каждая CTU разбивается на четыре области 64×64. На фиг. 9А, реконструированные области (901-903) в левой CTU и текущая область 904, подвергающаяся обработке, могут сохраняться в памяти размером в одну CTU. На фиг. 9В, две реконструированные области (911-912) в левой CTU, одна реконструированная область (913) в текущей CTU и текущая область (914) могут сохраняться в памяти размером в одну CTU. На фиг. 9С, реконструированная область (921) в левой CTU, две реконструированные области (922-923) в текущей CTU, и текущая область 924 могут сохраняться в памяти размером в одну CTU. На фиг. 9D, три реконструированные области (931-933) в текущей CTU, и текущая область 934 могут сохраняться в памяти размером в одну CTU.[0099] FIG. 9A-9D show how one CTU size memory is reused to search for the left CTU. On each of the FIGS. 9A-9D show a left CTU and a right CTU having a size of 128×128 samples. Each CTU is divided into four 64x64 regions. In FIG. 9A, the reconstructed regions (901-903) in the left CTU and the current processing region 904 may be stored in a single CTU memory. In FIG. 9B, two reconstructed areas (911-912) in the left CTU, one reconstructed area (913) in the current CTU, and the current area (914) may be stored in one CTU memory. In FIG. 9C, the reconstructed region (921) in the left CTU, two reconstructed regions (922-923) in the current CTU, and the current region 924 may be stored in a single CTU memory. In FIG. 9D, three reconstructed areas (931-933) in the current CTU and the current area 934 may be stored in one CTU size memory.

[0100] В некоторых вариантах осуществления необходимо, чтобы векторы блока, сигнализируемые в битовом потоке, подчинялись набору условий согласования битового потока. В порядке примера, пригодный вектор блока яркости, обозначенный mvL и с разрешением 1/16 пикселя должен удовлетворять следующим условиям согласования битового потока:[0100] In some embodiments, it is necessary that the block vectors signaled in the bitstream obey a set of conditions for matching the bitstream. By way of example, a suitable luma block vector, denoted mvL and with a resolution of 1/16 pixel, must satisfy the following bitstream matching conditions:

[0101] А1: Когда процесс вывода для доступности блока вызывается с текущим положением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседним положением яркости (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) в качестве вводов, выход должен быть равен TRUE (в смысле уже построен и, таким образом, доступен). Процесс вывода для доступности блока также именуется процессом проверки доступности соседних блоков. Условие А1 проверяет, что отсчет верхнего левого угла опорного блока в положении (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) доступен (уже реконструирован).[0101] A1: When the inference process for block availability is called with the current brightness position (xCurr, yCurr) set to (xCb, yCb) and the adjacent brightness position (xCb+(mvL[0]>>4), yCb+(mvL[1 ]>>4)) as inputs, the output must be TRUE (meaning already built and thus available). The inference process for block availability is also referred to as the neighbor block availability check process. Condition A1 checks that the upper left corner reference of the reference block at position (xCb+(mvL[0]>>4), yCb+(mvL[1]>>4)) is available (already reconstructed).

[0102] А2: Когда процесс вывода для доступности блока вызывается с текущим положением яркости (xCurr, yCurr), установленным равным (xCb, yCb) и соседним положением яркости (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) в качестве вводов, выход должен быть равен TRUE. Условие А2 проверяет, что отсчет нижнего правого угла опорного блока в положении (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) доступен.[0102] A2: When the inference process for block availability is called with the current brightness position (xCurr, yCurr) set to (xCb, yCb) and the adjacent brightness position (xCb+(mvL[0]>>4)+cbWidth-1, yCb+ (mvL[1]>>4)+cbHeight-1) as inputs, the output must be TRUE. Condition A2 checks that the bottom right corner of the reference block at position (xCb+(mvL[0]>>4)+cbWidth-1, yCb+(mvL[1]>>4)+cbHeight-1) is available.

[0103] В1: Должны выполняться одно или оба следующих условия: значение (mvL[0]>>4)+cbWidth меньше или равно 0; и значение (mvL[1]>>4)+cbHeight меньше или равно 0. Условие В1 проверяет, что опорный блок не перекрывается с текущим блоком.[0103] B1: One or both of the following conditions must be met: the value (mvL[0]>>4)+cbWidth is less than or equal to 0; and (mvL[1]>>4)+cbHeight is less than or equal to 0. Condition B1 checks that the reference block does not overlap with the current block.

[0104] С1: Должны выполняться следующие условия:[0104] C1: The following conditions must be met:

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

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

(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1; и(xCb+(mvL[0]>>4))>>CtbLog2SizeY>=(xCb>>CtbLog2SizeY)-1; and

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

Условие C1 проверяет, находится ли опорный блок в текущей CTU или левой CTU относительно текущей CTU.Condition C1 checks if the reference block is in the current CTU or the left CTU relative to the current CTU.

[0105] С2: Когда (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)) в качестве вводов, выход должен быть равен FALSE (еще не построен). Условие С2 проверяет, соответствует ли опорная область (например, область (921) на фиг. 9С) в левой CTU области в текущей CTU, которая еще не построена.[0105] C2: When (xCb+(mvL[0]>>4))>>CtbLog2SizeY is equal to (xCb>>CtbLog2SizeY)-1, the inference process for block availability is invoked with the current brightness position (xCurr, yCurr) set to ( xCb, yCb) and adjacent brightness position (((xCb+(mvL[0]>>4)+CtbSizeY)>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1), ((yCb+(mvL[1]>> 4))>>(CtbLog2SizeY-1))<<(CtbLog2SizeY-1)) as inputs, the output should be FALSE (not built yet). Condition C2 checks if a reference area (eg, area (921) in FIG. 9C) in the left CTU corresponds to an area in the current CTU that has not yet been built.

[0106] III. Кандидаты на пространственное объединение текущего блока[0106] III. Candidates for the spatial union of the current block

[0107] На фиг. 10 показано пять кандидатов на пространственное объединение текущего блока (1010). Кандидаты на пространственное объединение могут использоваться для построения списка предсказателей для предсказания вектора блока для текущего блока (1010). Например, текущий блок (1010) строится в режиме пропуска, режиме объединения или режиме AMVP. Можно построить список кандидатов. Кандидаты в списке кандидатов могут выбираться из пространственных позиций А1, А0, В2, В0 и В1 кандидатов. В одном примере, доступность пространственных позиций кандидатов проверяется в следующем порядке, А0, В0, B1, А1 и В2. Когда доступна, информацию движения в позиции кандидата можно добавлять в список кандидатов в качестве кандидата. Индекс списка кандидатов может приниматься в битовом потоке. Кандидат, соответствующий индексу, может использоваться как предсказание (или предсказатель) вектора движения для определения вектора движения текущего блока 1010.[0107] In FIG. 10 shows five candidates for the spatial union of the current block (1010). The spatial union candidates may be used to construct a list of predictors for predicting the block vector for the current block (1010). For example, the current block (1010) is built in skip mode, merge mode, or AMVP mode. You can build a list of candidates. Candidates in the list of candidates may be selected from the spatial positions A1, A0, B2, B0 and B1 of the candidates. In one example, the availability of candidate spatial positions is checked in the following order, A0, B0, B1, A1, and B2. When available, the movement information in the position of the candidate can be added to the list of candidates as a candidate. The candidate list index may be received in a bitstream. The candidate corresponding to the index may be used as a motion vector predictor (or predictor) to determine the motion vector of the current block 1010.

[0108] IV. Предсказание вектора движения на исторической основе (HMVP)[0108] IV. Historical Motion Vector Prediction (HMVP)

[0109] В ряде случаев, схема предсказания вектора движения на исторической основе (HMVP, History Based Motion Vector Prediction) используется для кодирования блока. Например, кандидаты на объединение HMVP добавляются в список объединения после кандидатов на пространственное предсказание вектора движения (SMVP, spatial motion vector prediction) и временное предсказание вектора движения (TMVP, temporal motion vector prediction). Согласно этому способу, информация движения ранее кодированного блока хранится в таблице (именуемой таблицей HMVP) и используется в качестве предсказателя вектора движения (MVP, motion vector predictor) для текущей CU. Таблица HMVP с множественными кандидатами HMVP поддерживается в ходе процесса кодирования или декодирования. Таблица HMVP сбрасывается (опустошается), когда в некоторых примерах встречается новая строка CTU. Всякий раз, когда существует CU, полученная без интер-кодирования подблоков, соответствующая информация движения добавляется в последнюю запись таблицы HMVP в качестве нового кандидата HMVP в некоторых примерах.[0109] In some cases, a History Based Motion Vector Prediction (HMVP) scheme is used to encode a block. For example, HMVP merge candidates are added to the merge list after spatial motion vector prediction (SMVP) and temporal motion vector prediction (TMVP) candidates. According to this method, motion information of a previously encoded block is stored in a table (referred to as an HMVP table) and used as a motion vector predictor (MVP) for the current CU. An HMVP table with multiple HMVP candidates is maintained during the encoding or decoding process. The HMVP table is reset (emptied) when a new CTU row is encountered in some examples. Whenever there is a CU obtained without sub-block intercoding, the corresponding motion information is added to the last entry of the HMVP table as a new HMVP candidate in some examples.

[0110] Согласно варианту осуществления, размер S таблицы HMVP задается равным 6, и это указывает, что в таблицу HMVP может добавляться до 6 кандидатов HMVP. При вставке нового кандидата движения в таблицу HMVP используется правило ограничения "первым вошел, первым вышел" (FIFO, first-in-first-out). Сначала применяется проверка избыточности, чтобы определить, существует ли в таблице HMVP идентичный HMVP. При наличии, идентичный HMVP удаляется из таблицы, и затем все кандидаты HMVP перемещаются вперед.[0110] According to an embodiment, the size S of the HMVP table is set to 6, which indicates that up to 6 HMVP candidates can be added to the HMVP table. When inserting a new motion candidate into the HMVP table, the first-in-first-out (FIFO, first-in-first-out) constraint rule is used. First, a redundancy check is applied to determine if an identical HMVP exists in the HMVP table. If present, the identical HMVP is removed from the table and then all HMVP candidates are moved forward.

[0111] Кандидаты HMVP могут использоваться в процессе построения списка кандидатов на объединение. В примере, последние несколько кандидатов HMVP в таблице HMVP проверяются по порядку и вставляются в список кандидатов после кандидатов TMVP. Проверка избыточности применяется к кандидатам HMVP по сравнению с кандидатами на пространственное или временное объединение.[0111] The HMVP candidates may be used in the process of constructing a pool candidate list. In the example, the last few HMVP candidates in the HMVP table are checked in order and inserted into the list of candidates after the TMVP candidates. A redundancy check is applied to HMVP candidates as compared to candidates for spatial or temporal aggregation.

[0112] Согласно варианту осуществления, для уменьшения количества операций проверки избыточности, вводятся следующие упрощения: (1) количество кандидатов HMVP, используемых для генерации списка объединения, устанавливается равным (N<=4) ? М: (8 - N), где N указывает количество существующих кандидатов в списке объединения, и М указывает количество доступных кандидатов HMVP в таблице HMVP. (2) Когда суммарное количество доступных кандидатов на объединение достигает максимально разрешенного числа минус 1, процесс построения списка кандидатов на объединение из HMVP заканчивается в примере.[0112] According to an embodiment, in order to reduce the number of redundancy check operations, the following simplifications are introduced: (1) the number of HMVP candidates used to generate the merge list is set to (N<=4) ? M: (8 - N) where N indicates the number of existing candidates in the merge list and M indicates the number of available HMVP candidates in the HMVP table. (2) When the total number of available merge candidates reaches the maximum number allowed minus 1, the process of constructing the merge candidate list from the HMVP ends in the example.

[0113] V. Интра-блочное копирование (IBC) на основе таблицы HBVP[0113] V. Intra-Block Copy (IBC) Based on HBVP Table

[0114] В различных вариантах осуществления, режим IBC действует как режим, отдельный от интер-режима (компенсации движения из изображения, отличного от текущего изображения). Отдельный буфер истории, именуемый буфером предсказания вектора блока на исторической основе (HBVP), используется для хранения ранее обработанных (закодированных на стороне кодера/декодированных на стороне декодера) векторов блока IBC. При обработке текущего блока, кодированного в режиме IBC, на стороне кодера либо на стороне декодера, вектор блока для текущего блока может определяться на основании буфера HBVP. Буфер HBVP также может именоваться таблицей HBVP или списком HBVP. В этом подробном описании, буфер HBVP, таблица HBVP и список HBVP используются взаимозаменяемо.[0114] In various embodiments, the IBC mode operates as a mode separate from the inter mode (motion compensation from an image other than the current image). A separate history buffer, referred to as the Historical Block Vector Prediction (HBVP) buffer, is used to store previously processed (encoder side encoded/decoder side decoded) IBC block vectors. When processing the current block encoded in IBC mode at the encoder side or the decoder side, a block vector for the current block may be determined based on the HBVP buffer. An HBVP buffer may also be referred to as an HBVP table or an HBVP list. In this detailed description, the HBVP buffer, HBVP table, and HBVP list are used interchangeably.

[0115] Описанные здесь варианты осуществления могут использоваться по отдельности или объединенными в любом порядке. Дополнительно, каждый из способов (или вариантов осуществления), кодер и декодер могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере, один или более процессоров выполняют программу, которая хранится на компьютерно-считываемом носителе. В подробном описании термин "блок" можно интерпретировать как блок предсказания, блок кодирования или единица кодирования (CU).[0115] The embodiments described herein may be used individually or combined in any order. Additionally, each of the methods (or embodiments), encoder, and decoder 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 computer-readable medium. In the detailed description, the term "block" can be interpreted as a prediction block, a coding block, or a coding unit (CU).

[0116] Вариант осуществления А[0116] Embodiment A

[0117] При добавлении вектора блока уже обработанного блока в таблицу HBVP, информация позиции (или положения) уже обработанного блока может записываться в таблицу HBVP. Другими словами, для каждой записи в таблице HBVP, помимо информации вектора блока, также хранится положение кодированного блока (ранее закодированного или декодированного блока) с которым связан вектор блока.[0117] When a block vector of an already processed block is added to the HBVP table, position information (or position) of the already processed block may be recorded in the HBVP table. In other words, for each entry in the HBVP table, in addition to the block vector information, the position of the encoded block (previously encoded or decoded block) with which the block vector is associated is also stored.

[0118] В примере, проверка избыточности не осуществляется при добавлении нового вектора блока и соответствующей информации положения в таблицу HBVP, поскольку позиции всех кодированных блоков отличаются. В другом примере, проверка избыточности осуществляется при добавлении нового вектора блока и соответствующей информации положения в таблицу HBVP. Например, новый вектор блока сравнивается с векторами блока, ранее сохраненными в таблице HBVP. Если найден аналогичный или идентичный старый вектор блока, старую запись, включающую в себя старый вектор блока, можно удалить, и запись, включающую в себя новый вектор блока и соответствующую информацию положения, можно добавлять в таблицу HBVP как самый последний кандидат.[0118] In the example, no redundancy check is performed when adding a new block vector and corresponding position information to the HBVP table because the positions of all coded blocks are different. In another example, a redundancy check is performed when a new block vector and corresponding position information is added to the HBVP table. For example, the new block vector is compared with the block vectors previously stored in the HBVP table. If a similar or identical old block vector is found, the old entry including the old block vector may be deleted, and the entry including the new block vector and corresponding position information may be added to the HBVP table as the latest candidate.

[0119] Положение кодированного блока может быть представлено одним из четырех углов кодированного блока в различных примерах. Например, координаты х и у угла кодового блока может использоваться для указания положения. В примере, положение кодированного блока представлено позицией нижнего правого угла кодированного блока. В другом примере, положение кодированного блока может быть представлено позицией нижнего левого угла кодированного блока.[0119] The position of the encoded block may be represented by one of the four corners of the encoded block in various examples. For example, the x and y coordinates of a corner of a code block can be used to indicate a position. In the example, the position of an encoded block is represented by the position of the lower right corner of the encoded block. In another example, the position of an encoded block may be represented by the position of the lower left corner of the encoded block.

[0120] В примере, положение кодированного блока может быть представлено позицией одного из четырех углов кодированного блока плюс информация размера (например, ширина и высота) кодированного блока.[0120] In an example, the position of an encoded block may be represented by the position of one of the four corners of the encoded block plus size information (eg, width and height) of the encoded block.

[0121] В примере, таблица HBVP сбрасывается (например, опустошается) в начале каждой строки CTU. В такой конфигурации, информация положения каждой из записей в таблице HBVP может записываться с использованием относительного смещения у от соответствующего верхнего края CTU для координаты у каждого соответствующего кодированного блока. В другом варианте осуществления, таблица HBVP сбрасывается в начале каждой CTU. Соответственно, информация положения каждой из записей в HBVP может записываться с использованием относительных смещений х и у от соответствующего начала отсчета CTU для координат х и у каждого соответствующего кодированного блока. В дополнительном примере, при занесении координат х и у записи в таблице HBVP, смещения от соответствующего начала отсчета CTU соответствующего кодированного блока записываются независимо от операций сброса таблицы HBVP.[0121] In the example, the HBVP table is reset (eg, emptied) at the beginning of each CTU row. In such a configuration, the position information of each of the entries in the HBVP table may be recorded using a relative offset y from the corresponding top edge of the CTU for the y coordinate of each corresponding coded block. In another embodiment, the HBVP table is reset at the beginning of each CTU. Accordingly, the position information of each of the entries in the HBVP may be recorded using the relative x and y offsets from the respective CTU reference point for the x and y coordinates of each respective coded block. In a further example, when the x and y coordinates of an entry in the HBVP table are entered, the offsets from the corresponding CTU origin of the corresponding coded block are recorded regardless of HBVP table reset operations.

[0122] Вариант осуществления В[0122] Embodiment B

[0123] В некоторых примерах список кандидатов для предсказания вектора блока (BVP) строится на основании таблицы HBVP. При выборе записей из HBVP в качестве кандидатов BVP в списке кандидатов для BVP, рассматриваются положения (или позиции) записей (связанные с позициями кодированных блоков, соответствующих соответствующим записям).[0123] In some examples, a block vector prediction (BVP) candidate list is built based on the HBVP table. When selecting entries from the HBVP as BVP candidates in the BVP candidate list, the positions (or positions) of the entries (associated with the positions of the coded blocks corresponding to the corresponding entries) are considered.

[0124] В примере позиция текущего блока сравнивается с позицией записи. Информация положения записи регулируется, если позиция записи является нижней правой позицией текущего блока. На основании отрегулированной информацией положения может определяться соотношение положений между кодированным блоком и текущим блоком.[0124] In the example, the position of the current block is compared with the position of the record. The recording position information is adjusted if the recording position is the lower right position of the current block. Based on the adjusted position information, a position relationship between a coded block and a current block can be determined.

[0125] Например, при вычислении позиции текущего блока относительно одной записи в таблице HBVP, если обе координаты х и у текущего блока меньше координат х и у записи, соответственно (в том смысле, что ранее кодированный блок является нижней правой позицией относительно текущего блока, что невозможно), смещение (-ширина CTU, 0) прибавляется к координатам записи при осуществлении вычисления. В результате, такая запись перемещается слева от текущего блока (в том смысле, что соответствующий вектор блока теперь смещен влево от текущей CTU на ширину CTU).[0125] For example, when calculating the position of the current block relative to one entry in the HBVP table, if both the x and y coordinates of the current block are less than the x and y coordinates of the entry, respectively (in the sense that the previously encoded block is the lower right position relative to the current block, which is not possible), the offset (-CTU width, 0) is added to the record coordinates when the calculation is performed. As a result, such an entry is moved to the left of the current block (in the sense that the corresponding block vector is now shifted to the left of the current CTU by the width of the CTU).

[0126] В примере, запись, находящаяся слева от текущего блока, может выбираться из таблицы HBVP и использоваться как предсказатель вектора блока (например, добавляться в список кандидатов для BVP). Например, запись в таблице HBVP, включающая в себя координату х, соответствующую верхнему левому углу кодированного блока. Если координата х меньше, чем у верхнего левого угла текущего блока, можно определить, что запись (или соответствующий кодированный блок) находится слева от текущего блока.[0126] In an example, the entry to the left of the current block may be selected from the HBVP table and used as a block vector predictor (eg, added to the candidate list for the BVP). For example, an entry in the HBVP table including the x-coordinate corresponding to the upper left corner of the encoded block. If the x-coordinate is less than the y-coordinate of the top left corner of the current block, it can be determined that the entry (or corresponding coded block) is to the left of the current block.

[0127] Аналогично, из таблицы HBVP можно выбрать вектор блока, который находится над текущим блоком. Например, запись в таблице HBVP, включающая в себя координату у, соответствующую верхнему левому углу кодированного блока. Если координата у меньше, чем у верхнего левого угла текущего блока, можно определить, что запись (или соответствующий кодированный блок) находится сверху от текущего блока.[0127] Similarly, from the HBVP table, you can select a block vector that is above the current block. For example, an entry in the HBVP table including the y-coordinate corresponding to the upper left corner of the encoded block. If the y-coordinate is less than the upper left corner of the current block, it can be determined that the record (or corresponding coded block) is above the current block.

[0128] Соответственно, в некоторых примерах, список кандидатов для BVP можно построить на основании записей, выбранных из таблицы HBVP, которые располагаются слева или сверху от текущего блока.[0128] Accordingly, in some examples, a BVP candidate list may be built based on entries selected from the HBVP table that are located to the left or top of the current block.

[0129] В некоторых примерах, максимальное количество 2*N предсказателей применяются для предсказания вектора блока для текущего блока (например, который добавляется в список кандидатов для BVP). В одном примере, если N=1, то один из 2*N предсказателей входит в состав расположенных слева записей (то есть записей, находящихся слева от текущего блока) в таблице HBVP, и другой из 2*N предсказателей входит в состав расположенных сверху записей (то есть записей, находящихся сверху от текущего блока) в таблице HBVP. В другом примере, если N=2, то порядок предсказателей в списке кандидатов для BVP может быть 1-й влево → 1-й вверх → 2-й влево → 2-й вверх, предполагая, что в таблице HBVP достаточно записей. В отсутствие достаточного количества записей, соответствующий элемент в списке предсказателей (списке кандидатов для BVP) может быть пустым и заполняться следующим элементом.[0129] In some examples, a maximum number of 2*N predictors are applied to predict the block vector for the current block (eg, which is added to the candidate list for BVP). In one example, if N=1, then one of the 2*N predictors is in the leftmost entries (i.e., the entries to the left of the current block) in the HBVP table, and the other of the 2*N predictors is in the topmost entries. (i.e. the records above the current block) in the HBVP table. In another example, if N=2, then the order of predictors in the BVP candidate list could be 1st left → 1st up → 2nd left → 2nd up, assuming there are enough entries in the HBVP table. In the absence of a sufficient number of entries, the corresponding element in the list of predictors (list of candidates for BVP) may be empty and filled with the next element.

[0130] В некоторых примерах, начиная с самой последней кодированной записи в таблице HBVP, первая запись, которая располагается слева от текущего блока, выбирается в качестве левого предсказателя. Следующая запись, которая располагается слева от текущего блока, выбирается в качестве второго слева предсказателя. Таким образом, можно последовательно выбирать левые предсказатели.[0130] In some examples, starting from the most recent encoded entry in the HBVP table, the first entry that is located to the left of the current block is selected as the left predictor. The next entry to the left of the current block is selected as the second predictor from the left. Thus, it is possible to consistently select the left predictors.

[0131] В некоторых примерах, начиная с самой последней кодированной записи в таблице HBVP, первую запись, которая находится над текущим блоком, можно выбирать в качестве первого вверх предсказателя. Следующую запись, которая находится над текущим блоком, можно выбирать в качестве второго вверх предсказателя. Таким образом, можно последовательно выбирать верхние предсказатели.[0131] In some examples, starting from the most recent encoded entry in the HBVP table, the first entry that is above the current block may be selected as the first up predictor. The next entry above the current block can be selected as the second predictor up. Thus, the top predictors can be sequentially selected.

[0132] В примере, двухкандидатный список предсказателей (список кандидатов для BVP) строится путем сканирования первых N записей HBVP в таблице HBVP. Первые N записей могут быть самыми последними кодированными N записями или могут быть самыми первыми кодированными N записями в разных примерах. Например, N может быть меньше размера S таблицы HBVP. Первая запись слева от текущего блока может рассматриваться в качестве первого кандидата в списке предсказателей. Первая запись сверху от текущего блока может рассматриваться в качестве 2-го кандидата в списке предсказателей. При наличии только верхних или только левых кандидатов в таблице HBVP, в качестве предсказателей можно выбрать первые две доступные записи.[0132] In the example, a two-candidate predictor list (BVP candidate list) is constructed by scanning the first N HBVP entries in the HBVP table. The first N entries may be the most recent N encoded entries or may be the very first N encoded entries in various examples. For example, N may be less than the size S of the HBVP table. The first entry to the left of the current block can be considered as the first candidate in the list of predictors. The first entry from the top of the current block can be considered as the 2nd candidate in the list of predictors. If there are only top or only left candidates in the HBVP table, the first two available entries can be chosen as predictors.

[0133] Вариант осуществления С[0133] Embodiment C

[0134] В некоторых вариантах осуществления список кандидатов для BVP (список предсказателей) может строиться следующим образом. Вектор блока в таблице HBVP выводится как предсказатель, если вектор блока имеет соответствующее положение вблизи текущего блока. Например, записи в таблице HBVP могут сканироваться по порядку, например, от самой новой к самой старой. Если запись находится вблизи текущего блока (запись включает в себя положение вблизи текущего блока), вектор блока этой записи помещается в список предсказателей. Этот процесс может продолжаться, пока не будет достигнуто максимальное количество кандидатов в списке предсказателей. Например, на фиг. 10, 5 соседствующих в пространстве позиций считаются находящимися вблизи текущего блока (1010). Можно рассматривать записи в таблице HBV, положения которых соответствует пяти позициям на фиг. 10, и выбирать их в качестве кандидатов в списке предсказателей в определенном порядке (например, А0, В0, B1, А1 и В2).[0134] In some embodiments, a BVP candidate list (predictor list) may be constructed as follows. A block vector in the HBVP table is output as a predictor if the block vector has a corresponding position near the current block. For example, entries in an HBVP table may be scanned in order, such as newest to oldest. If an entry is near the current block (the entry includes a position near the current block), the block vector of that entry is placed in the list of predictors. This process can continue until the maximum number of candidates in the list of predictors is reached. For example, in FIG. 10, 5 adjacent positions in space are considered to be near the current block (1010). One can consider the entries in the HBV table whose positions correspond to the five positions in FIG. 10 and select them as candidates in the list of predictors in a specific order (eg, A0, B0, B1, A1, and B2).

[0135] В примере, если вектор блока в буфере HBVP не находится вблизи текущего блока, его можно помещать в более поздние позиции в списке предсказателей после соседствующих в пространстве записей. В другом примере, если вектор блока в буфере HBVP не находится вблизи текущего блока, его можно не использовать в списке предсказателей.[0135] In the example, if the block vector in the HBVP buffer is not near the current block, it can be placed in later positions in the list of predictors after neighboring entries in space. In another example, if the block vector in the HBVP buffer is not near the current block, it may not be used in the predictor list.

[0136] Вариант осуществления D[0136] Embodiment D

[0137] В некоторых примерах, при помещении вектора блока в список предсказателей, можно осуществлять проверку избыточности, чтобы убедиться, что новый предсказатель отличается от других предсказателей, присутствующих в списке предсказателей.[0137] In some examples, when placing a block vector in the list of predictors, a redundancy check can be performed to ensure that the new predictor is different from other predictors present in the list of predictors.

[0138] Вариант осуществления Е[0138] Embodiment E

[0139] В различных примерах, список предсказателей может строиться на основании таблицы HBVP и использоваться в режиме объединения, режиме пропуска или режиме AMVP (векторного предсказания с разностным кодированием) для кодирования вектора блока (предсказания вектора блока) текущего блока.[0139] In various examples, a list of predictors may be built based on the HBVP table and used in merge mode, skip mode, or AMVP (delta-coded vector prediction) mode to encode the block vector (block vector prediction) of the current block.

[0140] Вариант осуществления F[0140] Embodiment F

[0141] Согласно варианту осуществления, в процессе декодирования могут поддерживаться множественные таблицы HBVP. Каждая таблица HBVP может быть связана с отдельным критерием для взятия нового кодированного вектора блока (вектора блока ранее декодированного блока). Таким образом, векторы блока кодированных блоков можно категоризовать по разным группам и сохранять в соответствующих таблицах HBVP. При кодировании текущего IBC-кодированного блока, один или более векторов блока можно выбирать из этих отдельных таблиц HBVP и использовать в качестве предсказателей для кодирования вектора блока для текущего блока. Аналогично, каждая из записей в этих таблицах HBVP может включать в себя вектор блока кодированного блока, положение (координаты х и у) кодового блока, размер (ширину и высоту) кодированного блока и другую сопутствующую информацию.[0141] According to an embodiment, multiple HBVP tables may be supported in the decoding process. Each HBVP table may be associated with a separate criterion for taking a new encoded block vector (the block vector of a previously decoded block). Thus, block vectors of coded blocks can be categorized into different groups and stored in respective HBVP tables. When encoding the current IBC-coded block, one or more block vectors may be selected from these separate HBVP tables and used as predictors to encode the block vector for the current block. Likewise, each of the entries in these HBVP tables may include a block vector of a coded block, a position (x and y coordinates) of a code block, a size (width and height) of a coded block, and other related information.

[0142] В первом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что кодированный блок удовлетворяет условию размера блока. Размер блока для кодированного блока может измеряться измеренный по-разному. Например, размер блока может быть количеством отсчетов яркости в кодированном блоке, вычисленным умножением ширины на высоту кодированного блока. В примере, условие размера блока состоит в том, что размер блока больше или равен порогу T_sizel и меньше другого порога T_size2. В примере, условие размера блока состоит в том, что размер блока больше или равен порогу.[0142] In the first example, the criterion for taking a new block vector for one of the encoded block HBVP tables is that the encoded block satisfies the block size condition. The block size for an encoded block can be measured differently. For example, the block size may be the number of luminance samples in a coded block, calculated by multiplying the width by the height of the coded block. In the example, the block size condition is that the block size is greater than or equal to a threshold T_sizel and less than another threshold T_size2. In the example, the block size condition is that the block size is greater than or equal to the threshold.

[0143] Во втором примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата х верхнего левого угла кодированного блока хс удовлетворяет следующему условию: xc%ctuSizeY больше или равна порогу Т_х0 и меньше другого порога Т_х1. Символ % обозначает операцию по модулю, и ctuSizeY выражает размер CTU.[0143] In the second example, the criterion for taking a new block vector for one of the HBVP tables of the encoded block is that the x-coordinate of the upper left corner of the encoded block xc satisfies the following condition: xc%ctuSizeY is greater than or equal to a threshold T_x0 and less than another threshold T_x1. The % symbol stands for modulo operation, and ctuSizeY expresses the size of the CTU.

[0144] В третьем варианте осуществления, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата у верхнего левого угла кодированного блока ус удовлетворяет следующему условию: yc%ctuSizeY больше или равна порогу Т_у0 и меньше другого порога Т_y1.[0144] In the third embodiment, the criterion for taking a new block vector for one of the HBVP tables of the encoded block is that the y-coordinate of the upper left corner of the encoded block y satisfies the following condition: yc%ctuSizeY is greater than or equal to a threshold T_y0 and less than another threshold T_y1 .

[0145] В четвертом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодового блока состоит в том, что координата х нижнего правого угла кодированного блока хс удовлетворяет следующему условию: xc%ctuSizeY больше или равна порогу Т_х0 и меньше другого порога Т_х1.[0145] In the fourth example, the criterion for taking a new block vector for one of the HBVP tables of the code block is that the x-coordinate of the lower right corner of the encoded block xc satisfies the following condition: xc%ctuSizeY is greater than or equal to a threshold T_x0 and less than another threshold T_x1.

[0146] В пятом примере, критерий взятия нового вектора блока для одной из таблиц HBVP кодированного блока состоит в том, что координата у нижнего правого угла кодированного блока ус удовлетворяет следующему условию: yc%ctuSizeY больше или равна порогу Т_у0 и меньше другого порога Т_у1.[0146] In the fifth example, the criterion for taking a new block vector for one of the HBVP tables of the coded block is that the y-coordinate of the lower right corner of the coded block y satisfies the following condition: yc%ctuSizeY is greater than or equal to a threshold T_y0 and less than another threshold T_y1.

[0147] В вышеприведенных примерах, при помещении нового вектора блока в таблицу HBVP может применяться процесс отсечения. Например, в случае обнаружения в таблице HBVP записи с тем же значением вектора блока, что и у нового вектора блока, запись можно удалить. Новую запись, включающую в себя новый вектор блока, можно поместить в позицию для хранения записи, включающей в себя вектор блока самого последнего кодированного блока.[0147] In the above examples, when a new block vector is placed in the HBVP table, a pruning process may be applied. For example, if an entry is found in the HBVP table with the same block vector value as the new block vector, the entry can be deleted. A new entry including the new block vector may be placed in a position to store the entry including the block vector of the latest encoded block.

[0148] Вариант осуществления G[0148] Embodiment G

[0149] Согласно варианту осуществления, одна или более таблицы HBVP поддерживаются для предсказания вектора блока IBC-кодированных блоков. Каждая таблица HBVP связана с конкретным критерием для взятия нового вектора блока. Предположим, что создается и поддерживается всего N таблиц HBVP. N является положительным целым числом, большим или равным 1.[0149] According to an embodiment, one or more HBVP tables are maintained for block vector prediction of IBC-coded blocks. Each HBVP table is associated with a specific criterion for taking a new block vector. Let's assume that a total of N HBVP tables are created and maintained. N is a positive integer greater than or equal to 1.

[0150] В первом примере, для каждой таблицы HBVP, где не хранится ни одной записи, для заполнения таблицы HBVP используется набор предсказателей вектора блока по умолчанию. Например, предсказателем вектора блока по умолчанию может быть нулевой вектор блока (координаты х и у равны нулю).[0150] In the first example, for each HBVP table where no records are stored, a set of default block vector predictors is used to populate the HBVP table. For example, the default block vector predictor could be a block vector of zero (x and y coordinates are zero).

[0151] Во втором примере, индекс, указывающий на одну из N таблиц HBVP, может приниматься из битового потока в декодере. В ответ, запись в таблице HBVP, указанной индексом, можно выбирать для предсказания вектора блока для текущего блока. Например, самую последнюю запись (добавленную последней) в таблице HBVP, указанной индексом, можно выбирать как предсказатель вектора блока текущего IBC-кодированного блока. В порядке другого примера, самая старая запись (кодированная самой первой) в таблице HBVP, указанной индексом, выбирается как предсказатель вектора блока текущего IBC-кодированного блока.[0151] In the second example, an index pointing to one of the N HBVP tables may be received from the bitstream at the decoder. In response, the entry in the HBVP table indicated by the index may be selected to predict the block vector for the current block. For example, the most recent entry (last added) in the HBVP table indicated by the index may be chosen as the block vector predictor of the current IBC coded block. By way of another example, the oldest entry (encoded by the very first) in the HBVP table indicated by the index is chosen as the block vector predictor of the current IBC-coded block.

[0152] Вариант осуществления Н[0152] Embodiment H

[0153] Согласно варианту осуществления, в процессе декодирования в декодере поддерживается единственная таблица HBVP, HBVP0. В ходе декодирования текущего IBC-кодированного блока, для определения предсказателя вектора блока для текущего блока, записи в HBVP0 категоризуются по группам. Каждая группа сохраняется в отдельной таблице HBVP, которая именуется классификационной таблицей HBVP. Каждой классификационной таблице HBVP может назначаться конкретный критерий для взятия записи из HBVP0. Таким образом, операции категоризации могут опираться на эти критерии.[0153] According to an embodiment, a single HBVP table, HBVP0, is maintained in the decoder during decoding. During decoding of the current IBC-coded block, to determine the block vector predictor for the current block, entries in HBVP0 are categorized into groups. Each group is stored in a separate HBVP table, which is called the HBVP classification table. Each HBVP classification table can be assigned a specific criterion for taking an entry from HBVP0. Thus, categorization operations can be based on these criteria.

[0154] Например, HBVP0 может иметь размер М. Количество N классификационных таблиц HBVP может быть меньше или равно М. Классификационные таблицы HBVP могут обозначаться от HBVP1 до HBVPN.[0154] For example, HBVP0 may have a size of M. The number N of HBVP classification tables may be less than or equal to M. HBVP classification tables may be designated HBVP1 to HBVPN.

[0155] Например, критерии для категоризации вновь кодированных векторов блока, согласно варианту осуществления F могут использоваться для категоризации записей HBVP0 в таблицы от HBVP1 по HBVPN. Критерии, отличные от критериев, отвечающих варианту осуществления F, можно использовать в других примерах. Процесс отсечения может применяться при помещении новой записи в таблицу HBVPx (х = 0, 1, …, N). Например, при наличии в HBVPx старой записи с тем же значением вектора блока, что и у новой записи, старую запись можно удалить и новую поместить в позицию для хранения информации самого последнего кодированного блока.[0155] For example, criteria for categorizing newly encoded block vectors, according to embodiment F, can be used to categorize HBVP0 entries in tables from HBVP1 to HBVPN. Criteria other than those of Embodiment F may be used in other examples. A pruning process may be applied when a new entry is placed in the HBVPx table (x = 0, 1, ..., N). For example, if there is an old entry in the HBVPx with the same block vector value as the new entry, the old entry can be deleted and the new entry placed in a position to store the latest encoded block information.

[0156] В примере, после генерации таблиц HBVP1 - HBVPN, запись может выбираться из одной из таблиц HBVP1 - HBVPN согласно индексу, принятому от битового потока. Вектор блока в выбранной записи может использоваться как предсказатель вектора блока для текущего блока.[0156] In the example, after generating the HBVP1-HBVPN tables, an entry may be selected from one of the HBVP1-HBVPN tables according to an index received from the bitstream. The block vector in the selected entry can be used as a predictor of the block vector for the current block.

[0157] В первой случае индекс может указывать одну из таблиц HBVP1 - HBVPN. В ответ на прием индекса, самая поздняя запись (самая последняя запись) может выбираться из таблицы HBVP, указанной индексом.[0157] In the first case, the index may indicate one of the tables HBVP1 - HBVPN. In response to receiving an index, the latest entry (most recent entry) may be fetched from the HBVP table indicated by the index.

[0158] Во втором случае, сначала список предсказателей может строиться путем выбора записей из таблиц HBVP1 - HBVPN согласно некоторым правилам (например, как описано в варианте осуществления С). Индекс может указывать кандидата в списке предсказателей. В ответ на прием индекса, кандидат в списке предсказателей может использоваться как предсказатель вектора блока для текущего блока.[0158] In the second case, first the predictor list may be built by selecting entries from the HBVP1 - HBVPN tables according to some rules (eg, as described in Embodiment C). The index may indicate a candidate in the list of predictors. In response to receiving an index, a candidate in the predictor list may be used as a block vector predictor for the current block.

[0159] VI. Примеры процесса декодирования в режиме IBC на основе таблицы HBVP[0159] VI. Examples of IBC decoding process based on HBVP table

[0160] На фиг. 11 показана блок-схема операций процесса (1100) согласно некоторым вариантам осуществления изобретения. Процесс (1100) может использоваться в реконструкции IBC-кодированного блока, для генерации блока предсказания для реконструируемого блока. В различных вариантах осуществления, процесс (1100) выполняется схемой обработки, например, схемой обработки в оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), и т.п.В некоторых вариантах осуществления процесс (1100) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (1100). Процесс начинается на этапе (S1101) и переходит к (S1110).[0160] In FIG. 11 shows a flowchart of the operations of a process (1100) according to some embodiments of the invention. Process (1100) may be used in reconstructing an IBC coded block to generate a prediction block for the reconstructed block. In various embodiments, the process (1100) is performed by a processing circuit, for example, a processing circuit in terminal devices (210), (220), (230) and (240), a processing circuit that performs the functions of a video decoder (310), a processing circuit, which performs the functions of a video decoder (410); The process starts at step (S1101) and proceeds to (S1110).

[0161] На этапе (S1110) таблица HBVP может поддерживаться в процессе декодирования изображения в декодере. Например, таблица HBVP может включать в себя одну или более записей, каждая из которых соответствует ранее декодированному IBC-кодированному блоку. Каждая запись может включать в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока. Местоположением может быть координата х и координата у одного из четырех углов ранее кодированного блока. В примере, каждая запись может дополнительно включать в себя информацию размера (например, ширину и высоту) соответствующего ранее декодированного блока.[0161] In step (S1110), the HBVP table may be maintained during image decoding at the decoder. For example, the HBVP table may include one or more entries, each corresponding to a previously decoded IBC coded block. Each entry may include a block vector of a corresponding previously decoded block and a location of the corresponding previously decoded block. The location may be the x-coordinate and y-coordinate of one of the four corners of the previously encoded block. In an example, each entry may further include size information (eg, width and height) of the corresponding previously decoded block.

[0162] На этапе (S1120), данные текущего блока, кодированного в режиме IBC, могут приниматься в битовом потоке. Например, данные могут включать в себя набор синтаксических элементов блочного уровня, соответствующих текущему блоку. Один из синтаксических элементов может указывать текущий блок кодируется в режиме IBC.[0162] In step (S1120), data of the current block encoded in the IBC mode may be received in the bitstream. For example, the data may include a set of block-level syntax elements corresponding to the current block. One of the syntax elements may indicate the current block is encoded in IBC mode.

[0163] На этапе (S1130), вектор блока для текущего блока может определяться на основании таблицы HBVP. Для определения вектора блока для текущего блока, сначала может определяться предсказатель вектора блока для вектора блока для текущего блока.[0163] In step (S1130), a block vector for the current block may be determined based on the HBVP table. To determine the block vector for the current block, a block vector predictor for the block vector for the current block may first be determined.

[0164] В примере, список кандидатов для BVP можно построить на основании таблицы HBVP. Затем кандидат выбирается из списка кандидатов для BVP, например, на основании индекса кандидата в списке кандидатов для BVP, принятом в битовом потоке. Выбранный кандидат может включать в себя вектор блока, используемый в качестве предсказателя вектора блока. Список кандидатов для BVP может включать в себя один или более из первого кандидата и второго кандидата. Первый кандидат может включать в себя первый вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок первого вектора блока расположен слева от текущего блока. Второй кандидат может включать в себя второй вектор блока из векторов блока в таблице HBVP. Соответствующий ранее декодированный блок второго вектора блока может располагаться сверху от текущего блока.[0164] In an example, a BVP candidate list may be built based on the HBVP table. A candidate is then selected from the BVP candidate list, eg, based on the index of the candidate in the BVP candidate list received in the bitstream. The selected candidate may include a block vector used as a block vector predictor. The list of candidates for the BVP may include one or more of the first candidate and the second candidate. The first candidate may include the first block vector of the block vectors in the HBVP table. The corresponding previously decoded block of the first block vector is located to the left of the current block. The second candidate may include a second block vector of the block vectors in the HBVP table. The corresponding previously decoded block of the second block vector may be located above the current block.

[0165] В некоторых примерах, для определения предсказателя вектора блока, записи в таблице HBVP сначала классифицируются в разные группы, каждая из которых хранится в классификационной таблице HBVP. Каждая классификационная таблица HBVP может быть связана с критерием для взятия новой записи. Например, одна из записей таблицы HBVP сохраняется в одной из классификационных таблиц HBVP, когда размер соответствующего ранее декодированного блока одной из записей таблицы HBVP удовлетворяет условию размера блока. Например, условие размера блока может состоять в том, что количество отсчетов яркости соответствующего ранее декодированного блока одной из записей таблицы HBVP больше или равно порогу.[0165] In some examples, to determine the block vector predictor, entries in the HBVP table are first classified into different groups, each of which is stored in the HBVP classification table. Each HBVP classification table can be associated with a criterion for taking a new entry. For example, one of the HBVP table entries is stored in one of the HBVP classification tables when the corresponding previously decoded block size of one of the HBVP table entries satisfies the block size condition. For example, the block size condition may be that the number of luma samples of the corresponding previously decoded block of one of the HBVP table entries is greater than or equal to a threshold.

[0166] В порядке другого примера, записи в таблице HBVP можно классифицировать в классификационные таблицы HBVP на основании координаты х, координаты у или комбинации координат х и у каждого из соответствующих ранее декодированных блоков, хранящихся в таблице HBVP. Соответственно, записи кодированных блоков, находящиеся в разных позициях относительно текущего блока, могут сохраняться в разных классификационных таблицах.[0166] As another example, entries in the HBVP table may be classified into HBVP classification tables based on an x-coordinate, a y-coordinate, or a combination of x-coordinates and y-coordinates of each of the respective previously decoded blocks stored in the HBVP table. Accordingly, coded block entries at different positions relative to the current block may be stored in different classification tables.

[0167] На основании классификационных таблиц HBVP можно определять предсказатель вектора блока. В примере, индекс, указывающий одну из классификационных таблиц HBVP, может приниматься в битовом потоке. Соответственно, одна запись может выбираться из указанных классификационных таблиц HBVP. Выбранная запись может соответствовать самому последнему декодированному блоку из декодированных блоков записей в указанных классификационных таблицах HBVP. Вектор блока выбранной записи может использоваться в качестве предсказателя вектора блока для вектора блока для текущего блока.[0167] Based on the HBVP classification tables, a block vector predictor can be determined. In an example, an index indicating one of the HBVP classification tables may be received in a bitstream. Accordingly, one entry may be selected from said HBVP classification tables. The selected entry may correspond to the most recent decoded block of the decoded blocks of entries in the specified HBVP classification tables. The block vector of the selected entry may be used as a block vector predictor for the block vector for the current block.

[0168] В другом примере, список кандидатов для BVP можно построить на основании классификационных таблиц HBVP. Список кандидатов для BVP может включать в себя один или более кандидатов BVP, каждый из которых включает в себя вектор блока, выбранный из классификационных таблиц HBVP. Затем кандидата BVP можно выбирать из списка кандидатов для BVP в качестве предсказателя вектора блока для вектора блока для текущего блока на основании индекса, принятого от битового потока.[0168] In another example, a BVP candidate list can be built based on the HBVP classification tables. The BVP candidate list may include one or more BVP candidates, each including a block vector selected from the HBVP classification tables. The BVP candidate may then be selected from the BVP candidate list as a block vector predictor of the block vector for the current block based on the index received from the bitstream.

[0169] Определив предсказатель вектора блока, можно соответственно определить вектор блока для текущего блока. Например, текущий блок может кодироваться в режиме IBC в одном из режима пропуска, режима объединения и режима AMVP. Для режима пропуска и режима объединения, предсказатель вектора блока может использоваться как вектор блока для текущего блока. Для режима AMVP, разность векторов может приниматься в битовом потоке и добавляться к предсказателю вектора блока для формирования вектора блока для текущего блока.[0169] By determining the block vector predictor, the block vector for the current block can be determined accordingly. For example, the current block may be encoded in IBC mode in one of skip mode, merge mode, and AMVP mode. For skip mode and merge mode, the block vector predictor can be used as the block vector for the current block. For the AMVP mode, the vector difference may be received in the bitstream and added to the block vector predictor to generate a block vector for the current block.

[0170] На этапе (S1140), текущий блок может реконструироваться на основании определенного вектора блока для текущего блока. Например, опорный блок может определяться в уже декодированной области изображения на основании вектора блока и объединяться с остатком текущего блока для формирования реконструированного блока.[0170] In step (S1140), the current block may be reconstructed based on the determined block vector for the current block. For example, a reference block may be determined in an already decoded region of an image based on a block vector and combined with the remainder of the current block to form a reconstructed block.

[0171] На этапе (S1150), таблица HBVP может обновляться вектором блока для текущего блока. Например, вектор блока для текущего блока, положение, ширина и высота текущего блока могут сохраняться в таблице HBVP. При обновлении таблицы HBVP может осуществляться проверка избыточности. Затем процесс (1100) может переходить к (S1199), и завершаться на этапе (S1199).[0171] In step (S1150), the HBVP table may be updated with a block vector for the current block. For example, the block vector for the current block, the position, width, and height of the current block may be stored in an HBVP table. When updating the HBVP table, a redundancy check may be performed. Then, the process (1100) may proceed to (S1199), and end at step (S1199).

[0172] VII. Компьютерная система[0172] VII. computer system

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

[0174] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.[0174] Computer software may be coded using any suitable machine code or computer language that may be assembled, compiled, linked, or similarly processed to create code containing instructions that can be executed directly, or through interpretation, execution of microcode, etc. .p., one or more computer central processing units (CPU, central processing unit), graphic processors (GPU, Graphics Processing Unit), etc.

[0175] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.[0175] 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.

[0176] Компоненты компьютерной системы (1200), показанные на фиг. 12, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (1200).[0176] The computer system components (1200) shown in FIG. 12 are illustrative in nature and are not intended to impose any limitation on the scope of application or functionality of computer software implementing embodiments of the present invention. The configuration of the components should also not be interpreted as having any dependency or requirement in connection with any one or combination of the components shown in the illustrative embodiment of the computer system (1200).

[0177] Компьютерная система (1200) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).[0177] The computer system (1200) may include some human interface input devices. Such an input device may be responsible for input by one or more users through, for example, tactile input (e.g., keystrokes, waving, glove movements), audio input (e.g., voice, claps), visual input (e.g., gestures), olfactory input (not shown). Interface devices may also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, external sound), images (e.g. scanned images, photographic images received from a still camera), video (eg, 2D video, 3D video including stereoscopic video).

[0178] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (1201), мыши (1202), сенсорной панели (1203), сенсорного экрана (1210), информационной перчатки (не показана), джойстика (1205), микрофона (1206), сканера (1207), камеры (1208).[0178] The human interface input devices may include one or more of (one each depicted): a keyboard (1201), a mouse (1202), a touch pad (1203), a touch screen (1210), an information glove (not shown). ), joystick (1205), microphone (1206), scanner (1207), camera (1208).

[0179] Компьютерная система (1200) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (1210), информационной перчатки (не показана) или джойстика (1205), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (1209), наушники (не показаны)), устройства визуального вывода (например, экраны (1210), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).[0179] The computer system (1200) may also include some human interface output devices. Such output devices may stimulate the senses of one or more users through, for example, tactile output, sound, light, and smell/taste. Such output devices may include tactile output devices (e.g., haptic feedback via touch screen (1210), data glove (not shown) or joystick (1205), but may also be tactile feedback devices that do not serve as input devices) , audio output devices (for example: speakers (1209), headphones (not shown)), visual output devices (for example, screens (1210), including CRT screens, LCD screens, plasma screens, OLED screens, each with touch screen input capabilities, each with or without tactile feedback capabilities, some of which are capable of 2D visual output or more than 3D output through, for example, stereographic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)) and printers (not shown).

[0180] Компьютерная система (1200) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (1220) с носителями (1221) CD/DVD и т.п., карты (1222) флэш-памяти, сменный жесткий диск или твердотельный диск (1223), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.[0180] The computer system (1200) may also include human accessible storage devices and associated media, such as optical media including CD/DVD ROM/RW (1220) with CD/DVD media (1221), etc. .p., flash memory cards (1222), removable hard drive or solid state drive (1223), conventional magnetic media such as tape and floppy disk (not shown), dedicated ROM/ASIC/PLD based devices such as security hardware keys (not shown) and the like.

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

[0182] Компьютерная система (1200) также может включать в себя интерфейс (1254) к одной или более сетям (1255) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (1249) (например, USB-порты компьютерной системы (1200)); другие обычно встраиваются в ядро компьютерной системы (1200) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1200) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.[0182] The computer system (1200) may also include an interface (1254) to one or more communication networks (1255). Networks can be, for example, wireless, wired, optical. Networks may additionally be local, wide area, metropolitan, transport and industrial, real-time, latency, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., digital wide area networks for wired or wireless television, including cable television, satellite TV and terrestrial TV, transport and industrial include CANBus, etc. Some networks typically require external network interface adapters that are connected to some general purpose data ports or peripheral buses (1249) (for example, computer system USB ports (1200)); others are typically built into the core of the computer system (1200) by connecting 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 (1200) can communicate with other entities. Such communication may be unidirectional with receive-only capability (eg broadcast), unidirectional with transmit-only capability (eg CANbus to some CANbus devices), or bidirectional, eg to other computer systems using a local area network or a wide area digital network. Several protocols and protocol stacks may be used on each of these networks and the network interfaces described above.

[0183] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (1240) компьютерной системы (1200).[0183] The aforementioned human interface devices, human accessible storage devices, and network interfaces can be connected to the core (1240) of the computer system (1200).

[0184] Ядро (1240) может включать в себя один или более центральных процессоров (CPU) (1241), графические процессоры (GPU) (1242), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (1243), аппаратные ускорители (1244) для некоторых задач, графический адаптер (1250) и т.д. Эти устройства, совместно с постоянной памятью (ROM) (1245), оперативной памятью (1246), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (1247), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (1248). В некоторых компьютерных системах системная шина (1248) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (1248) ядра, либо через периферийную шину (1249). Согласно фиг. 12, экран (1210) подключен к графическому адаптеру (1250). Архитектуры периферийной шины включают в себя PCI, USB и т.п.[0184] The core (1240) may include one or more central processing units (CPUs) (1241), graphics processing units (GPUs) (1242), specialized programmable processing modules in the form of Field Programmable Gate Arrays (FPGAs). ) (1243), hardware accelerators (1244) for some tasks, graphics adapter (1250), etc. These devices, together with read-only memory (ROM) (1245), random access memory (1246), high-capacity internal storage, such as internal hard drives (1247) that are not accessible to the user, SSD, etc., can be connected via the system bus (1248). In some computer systems, the system bus (1248) may be available in the form of one or more physical connectors to allow for expansions with additional CPUs, GPUs, and the like. Peripherals can be connected either directly to the system bus (1248) of the kernel, or via a peripheral bus (1249). According to FIG. 12, the screen (1210) is connected to the graphics adapter (1250). Peripheral bus architectures include PCI, USB, and the like.

[0185] CPU (1241), GPU (1242), FPGA (1243) и ускорители (1244) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1245) или RAM (1246). Переходные данные также могут храниться в RAM (1246), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (1247) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (1241), GPU (1242), хранилищем (1247) данных большой емкости, ROM (1245), RAM (1246) и т.п.[0185] CPUs (1241), GPUs (1242), FPGAs (1243), and accelerators (1244) may execute some of the instructions that together may constitute the aforementioned computer code. This computer code may be stored in ROM (1245) or RAM (1246). Transient data may also be stored in RAM (1246), while persistent data may be stored, for example, in an internal mass storage (1247). Fast storage and retrieval from any storage device can be achieved through the use of cache memory, which can be closely associated with one or more CPU (1241), GPU (1242), mass storage (1247), ROM (1245), RAM (1246) etc.

[0186] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.[0186] Computer-readable media may store computer code for performing various computer-implemented operations. The media and computer code may be specially created for the purposes of the present invention or may be well known and available to those skilled in the art of computer software.

[0187] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (1200), и, в частности, ядро (1240) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (1240), носящим долговременный характер, например, внутренним хранилищем (1247) данных большой емкости или ROM (1245). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (1240). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (1240) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (1246), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (1244)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (IC, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.[0187] By way of example, and not limitation, a computer system having an architecture (1200), and in particular a core (1240), can provide functionality through execution by processor(s) (including(and) CPU, GPU, FPGAs, accelerators, etc.) software embodied in one or more tangible computer-readable media. Such computer-readable media can be media associated with the user-accessible mass storage described above, as well as some persistent storage in the kernel (1240), such as internal mass storage (1247) or ROM (1245). Software implementing various embodiments of the present invention may be stored on such devices and executed by the core (1240). The computer-readable medium may include one or more memory devices or microcircuits, in accordance with particular needs. The software may direct the core (1240) and, in particular, its processors (including CPUs, GPUs, FPGAs, etc.) to execute specific processes or specific parts of the specific processes described herein, including setting data structures stored in RAM (1246) , and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system may provide functionality through logic hardwired or otherwise embodied in circuitry (e.g., an accelerator (1244)) that may operate in place of or in conjunction with software to perform specific processes or specific portions of the specific processes described herein. A reference to software may cover logic, and vice versa when appropriate. Reference to computer-readable media may encompass a circuit (eg, an integrated circuit (IC)) where software is stored for execution, a circuit embodying logic for execution, or both, as appropriate. The present invention encompasses any suitable combination of hardware and software.

Приложение А: аббревиатурыAppendix A: Abbreviations

AMVP: усовершенствованное предсказание векторов движенияAMVP: Advanced Motion Vector Prediction

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

MS: набор эталоновMS: set of standards

BV: вектор блокаBV: block vector

CANBus: шина контроллерной сетиCANBus: controller network bus

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

CPR: опора на текущее изображениеCPR: Current Image Reliance

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

CRT: кинескопCRT: kinescope

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

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

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

DPB: буфер изображений декодераDPB: decoder picture buffer

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

FIFO: первым вошел, первым вышелFIFO: first in, first out

FPGA: вентильная матрица, программируемая пользователемFPGA: Field Programmable Gate Array

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

GPU: графический процессорGPU: GPU

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

HBVP: предсказание вектора блока на исторической основеHBVP: Historical Block Vector Prediction

HEVC SCC: кодирование содержимого экрана HEVCHEVC SCC: HEVC screen content encoding

HEVC: высокопроизводительное видеокодированиеHEVC: High Performance Video Coding

HMVP: предсказание векторов движения на исторической основеHMVP: motion vector prediction based on history

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

IBC: интра-блочное копированиеIBC: intra-block copy

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

JEM: модель совместного исследованияJEM: collaborative research model

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

LCD: жидкокристаллический дисплейLCD: liquid crystal display

LTE: проект долгосрочного развития систем связиLTE: a project for the long-term development of communication systems

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

MVP: предсказатель вектора движенияMVP: motion vector predictor

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

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

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

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

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

RAM: оперативная памятьRAM: random access memory

ROM: постоянная памятьROM: Read Only Memory

SEI: информация дополнительного улучшенияSEI: Additional Improvement Information

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

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

TMVP: временное предсказание вектора движенияTMVP: Temporal Motion Vector Prediction

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

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

VTM: испытательная модель VVCVTM: VVC test model

VUI: информация пригодности видеоVUI: video suitability information

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

[0188] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые укладываются в объем изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.[0188] Although several illustrative embodiments are described here, changes, permutations, and various replacement equivalents are possible that fall within the scope of the invention. Thus, those skilled in the art can provide numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the invention and thus fall within its spirit and scope.

Claims (32)

1. Способ видеодекодирования в видеодекодере, в котором: 1. A video decoding method in a video decoder, wherein: принимают данные текущего блока, кодированного в режиме интра-блочного копирования (IBC), в битовом потоке; receiving current block data encoded in intra-block copy (IBC) mode in a bitstream; определяют вектор блока для текущего блока на основании таблицы предсказания вектора блока на исторической основе (HBVP), которая включает в себя одну или более записей, каждая из которых соответствует ранее декодированному блоку, причем каждая запись включает в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока, при этом при определении вектора блока для текущего блока на основании таблицы HBVP дополнительно строят список кандидатов для предсказания вектора блока (BVP) на основании таблицы HBVP, причем список кандидатов для BVP включает в себя один или более из: determining a block vector for the current block based on a historical block vector prediction (HBVP) table that includes one or more entries each corresponding to a previously decoded block, each entry including a block vector of the corresponding previously decoded block and a location of the corresponding previously decoded block, while determining the block vector for the current block based on the HBVP table, additionally constructing a block vector prediction (BVP) candidate list based on the HBVP table, the BVP candidate list including one or more of: первого кандидата, который включает в себя первый вектор блока из векторов блока в таблице HBVP, причем соответствующий ранее декодированный блок для первого вектора блока расположен слева от текущего блока, и a first candidate that includes a first block vector of the block vectors in the HBVP table, wherein the corresponding previously decoded block for the first block vector is located to the left of the current block, and второго кандидата, который включает в себя второй вектор блока из векторов блока в таблице HBVP, причем соответствующий ранее декодированный блок для второго вектора блока расположен сверху от текущего блока; и a second candidate that includes a second block vector of the block vectors in the HBVP table, wherein the corresponding previously decoded block for the second block vector is upstream of the current block; and реконструируют текущий блок на основании определенного вектора блока для текущего блока. reconstructing the current block based on the determined block vector for the current block. 2. Способ по п. 1, в котором дополнительно: 2. The method according to p. 1, in which additionally: сохраняют вектор блока, местоположение, ширину и высоту текущего блока в таблице HBVP. store the block vector, location, width, and height of the current block in an HBVP table. 3. Способ по п. 1 или 2, в котором каждая запись включает в себя координату "x" и координату "y" угла соответствующего ранее декодированного блока. 3. The method of claim 1 or 2, wherein each entry includes an "x" coordinate and a "y" coordinate of a corner of the corresponding previously decoded block. 4. Способ по п. 1 или 2, в котором каждая запись включает в себя одну из позиций угла соответствующего ранее декодированного блока, а также ширину и высоту соответствующего ранее декодированного блока. 4. The method of claim 1 or 2, wherein each entry includes one of the corner positions of the corresponding previously decoded block and the width and height of the corresponding previously decoded block. 5. Способ по п. 1 или 2, в котором текущий блок кодирован в одном из режима пропуска, режима объединения и режима усовершенствованного предсказания векторов движения (AMVP). 5. The method of claim 1 or 2, wherein the current block is encoded in one of skip mode, merge mode, and advanced motion vector prediction (AMVP) mode. 6. Способ по п. 1 или 2, в котором при определении вектора блока для текущего блока на основании таблицы HBVP дополнительно: 6. The method according to claim 1 or 2, wherein when determining the block vector for the current block based on the HBVP table, additionally: сканируют записи в таблице HBVP по порядку, и scan the entries in the HBVP table in order, and добавляют вектор блока одной из записей в таблице HBVP в список кандидатов для BVP всякий раз, когда достигается соответствующая запись, включающая местоположение вблизи текущего блока, пока не достигается максимальное количество списка кандидатов для BVP. adding a block vector of one of the entries in the HBVP table to the BVP candidate list whenever a corresponding entry including a location near the current block is reached until the maximum number of the BVP candidate list is reached. 7. Способ по п. 1, в котором местоположение представляют координатой "x" и координатой "y" того же угла соответствующего ранее декодированного блока, и вектор блока в таблице HBVP выбирают для включения в список кандидатов для BVP согласно по меньшей мере одной из координаты "x" и координаты "y" ранее декодированного блока, соответствующего выбранному вектору блока, и при этом способ также включает 7. The method of claim 1, wherein a location is represented by an "x" coordinate and a "y" coordinate of the same corner of the corresponding previously decoded block, and a block vector in the HBVP table is selected for inclusion in the BVP candidate list according to at least one of the coordinates "x" and "y" coordinates of the previously decoded block corresponding to the selected block vector, and wherein the method also includes определение вектора блока для текущего блока согласно списку кандидатов для BVP для декодирования текущего блока. determining a block vector for the current block according to the BVP candidate list for decoding the current block. 8. Устройство видеодекодирования, содержащее схему, выполненную с возможностью: 8. A video decoding device, containing a circuit configured to: принимать данные текущего блока, кодированного в режиме интра-блочного копирования (IBC), в битовом потоке; receive current block data encoded in intra-block copy (IBC) mode in a bitstream; определять вектор блока для текущего блока на основании таблицы предсказания вектора блока на исторической основе (HBVP), которая включает в себя одну или более записей, каждая из которых соответствует ранее декодированному блоку, причем каждая запись включает в себя вектор блока соответствующего ранее декодированного блока и местоположение соответствующего ранее декодированного блока, при этом схема дополнительно выполнена с возможностью строить список кандидатов для предсказания вектора блока (BVP) на основании таблицы HBVP, причем список кандидатов для BVP включает в себя один или более из: determine a block vector for the current block based on a historical block vector prediction (HBVP) table that includes one or more entries, each corresponding to a previously decoded block, each entry including a block vector of the corresponding previously decoded block and a location of the corresponding previously decoded block, wherein the circuit is further configured to construct a block vector prediction (BVP) candidate list based on the HBVP table, the BVP candidate list including one or more of: первого кандидата, который включает в себя первый вектор блока из векторов блока в таблице HBVP, причем соответствующий ранее декодированный блок для первого вектора блока расположен слева от текущего блока, и a first candidate that includes a first block vector of the block vectors in the HBVP table, wherein the corresponding previously decoded block for the first block vector is located to the left of the current block, and второго кандидата, который включает в себя второй вектор блока из векторов блока в таблице HBVP, причем соответствующий ранее декодированный блок для второго вектора блока расположен сверху от текущего блока; и a second candidate that includes a second block vector of the block vectors in the HBVP table, wherein the corresponding previously decoded block for the second block vector is upstream of the current block; and реконструировать текущий блок на основании определенного вектора блока для текущего блока. reconstruct the current block based on the specific block vector for the current block. 9. Устройство по п. 8, в котором схема дополнительно выполнена с возможностью: 9. The device according to claim 8, in which the circuit is further configured to: сохранять вектор блока, местоположение, ширину и высоту текущего блока в таблице HBVP. save the block vector, location, width and height of the current block in the HBVP table. 10. Устройство по п. 8 или 9, в котором каждая запись включает в себя координату "x" и координату "y" угла соответствующего ранее декодированного блока. 10. The apparatus of claim 8 or 9, wherein each entry includes an "x" coordinate and a "y" coordinate of a corner of the corresponding previously decoded block. 11. Устройство по п. 8 или 9, в котором каждая запись включает в себя одну из позиций угла соответствующего ранее декодированного блока, а также ширину и высоту соответствующего ранее декодированного блока. 11. The apparatus of claim 8 or 9, wherein each entry includes one of the corner positions of the corresponding previously decoded block and the width and height of the corresponding previously decoded block. 12. Устройство по п. 8 или 9, в котором текущий блок кодирован в одном из режима пропуска, режима объединения и режима усовершенствованного предсказания векторов движения (AMVP). 12. The apparatus of claim 8 or 9, wherein the current block is encoded in one of skip mode, merge mode, and advanced motion vector prediction (AMVP) mode. 13. Устройство по п. 8 или 9, в котором схема дополнительно выполнена с возможностью: 13. The device according to claim 8 or 9, in which the circuit is additionally configured to: сканировать записи в таблице HBVP по порядку, и scan the entries in the HBVP table in order, and добавлять вектор блока одной из записей в таблице HBVP в список кандидатов для BVP всякий раз, когда достигается соответствующая запись, включающая местоположение вблизи текущего блока, пока не достигается максимальное количество списка кандидатов для BVP. add a block vector of one of the entries in the HBVP table to the BVP candidate list whenever a corresponding entry including a location near the current block is reached until the maximum number of the BVP candidate list is reached. 14. Устройство по п. 8, в котором местоположение представляется координатой "x" и координатой "y" того же угла соответствующего ранее декодированного блока, и вектор блока в таблице HBVP выбирается для включения в список кандидатов для BVP согласно по меньшей мере одной из координаты "x" и координаты "y" ранее декодированного блока, соответствующего выбранному вектору блока, и при этом схема также выполнена с возможностью определять вектор блока для текущего блока согласно списку кандидатов для BVP для декодирования текущего блока. 14. The apparatus of claim 8, wherein the location is represented by an "x" coordinate and a "y" coordinate of the same corner of the corresponding previously decoded block, and a block vector in the HBVP table is selected for inclusion in the BVP candidate list according to at least one of the coordinates "x" and "y" coordinates of a previously decoded block corresponding to the selected block vector, and wherein the circuitry is also configured to determine the block vector for the current block according to the BVP candidate list for decoding the current block. 15. Компьютерно-считываемый носитель, на котором хранятся инструкции, которые, при выполнении процессором, предписывают процессору осуществлять способ по любому из пп. 1-7.15. A computer-readable medium that stores instructions that, when executed by the processor, instruct the processor to carry out the method according to any one of paragraphs. 1-7.
RU2021127809A 2019-06-27 2020-06-25 Video encoding method and apparatus RU2777278C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/867,658 2019-06-27
US16/911,256 2020-06-24

Publications (1)

Publication Number Publication Date
RU2777278C1 true RU2777278C1 (en) 2022-08-02

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2017058633A1 (en) * 2015-10-02 2017-04-06 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable ibc reference region
RU2630888C1 (en) * 2013-11-14 2017-09-13 ЭйджЭфАй Инновэйшн Инк. Method of video coding using the prediction on the basis of the copy of the intra-cycle block
RU2654129C2 (en) * 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Features of intra block copy prediction mode for video and image coding and decoding

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2654129C2 (en) * 2013-10-14 2018-05-16 МАЙКРОСОФТ ТЕКНОЛОДЖИ ЛАЙСЕНСИНГ, ЭлЭлСи Features of intra block copy prediction mode for video and image coding and decoding
RU2630888C1 (en) * 2013-11-14 2017-09-13 ЭйджЭфАй Инновэйшн Инк. Method of video coding using the prediction on the basis of the copy of the intra-cycle block
WO2017058633A1 (en) * 2015-10-02 2017-04-06 Qualcomm Incorporated Intra block copy merge mode and padding of unavailable ibc reference region

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
SUN YU-CHEN et al., Improvements of HEVC SCC Palette Mode and Intra Block Copy, IEEE Journal on Emerging and Selected Topics in Circuits and Systems, vol.6, no.4, December 2016. *
XIAOYU XIU et al., CE8-related: Encoder improvements on IBC search, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG11, JVET-N0329, 14 Meeting: Geneva, 19-27 March 2019. *
Zhang Li et al., History-Based Motion Vector Prediction in Versatile Video Coding, 2019 Data Compression Conference (DCC), IEEE, 26 March 2019. *

Similar Documents

Publication Publication Date Title
KR102647830B1 (en) Method and apparatus for video coding
KR102616681B1 (en) Method and apparatus for history-based motion vector prediction with parallel processing
JP7358487B2 (en) Transformation of decoded block vectors for intra image block compensation
CN112753218A (en) Method and apparatus for video encoding
KR102592192B1 (en) Method and apparatus for signaling predictor candidate list size
CN116016914A (en) Video encoding and decoding method, video encoder and decoder, and computer readable medium
CN113424536A (en) Method and apparatus for video encoding
KR20200125733A (en) Method and apparatus for video coding
KR102630200B1 (en) Method and apparatus for sub-block based temporal motion vector prediction
EP4042701A1 (en) Method and apparatus for video coding
US11956461B2 (en) Method and apparatus for video coding
RU2777278C1 (en) Video encoding method and apparatus
RU2779931C1 (en) Method and apparatus for transmitting information on the size of a predictor candidate list
KR102658415B1 (en) Method and apparatus for video coding
RU2777394C1 (en) Method and device for video encoding
RU2777377C1 (en) Unified block vector prediction to compensate for blocks inside the image
RU2793708C1 (en) Method and device for transmitting predictor candidate list size for intra-frame block compensation
RU2787810C1 (en) Method and apparatus for colour conversion in versatile video coding (vvc)
CN116686290B (en) Method for video decoding, method for video encoding, apparatus and storage medium
CN116686290A (en) Intra block copy with adaptive local reference range
CN116762335A (en) Adjustment-based local illumination compensation