RU2801430C1 - Method and device for coding mode based on palette under local dual tree structure - Google Patents

Method and device for coding mode based on palette under local dual tree structure Download PDF

Info

Publication number
RU2801430C1
RU2801430C1 RU2021129828A RU2021129828A RU2801430C1 RU 2801430 C1 RU2801430 C1 RU 2801430C1 RU 2021129828 A RU2021129828 A RU 2021129828A RU 2021129828 A RU2021129828 A RU 2021129828A RU 2801430 C1 RU2801430 C1 RU 2801430C1
Authority
RU
Russia
Prior art keywords
block
palette
tree structure
coding mode
dual tree
Prior art date
Application number
RU2021129828A
Other languages
Russian (ru)
Inventor
Сяочжун СЮЙ
Шань ЛЮ
Original Assignee
TEНСЕНТ АМЕРИКА ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TEНСЕНТ АМЕРИКА ЭлЭлСи filed Critical TEНСЕНТ АМЕРИКА ЭлЭлСи
Application granted granted Critical
Publication of RU2801430C1 publication Critical patent/RU2801430C1/en

Links

Images

Abstract

FIELD: video encoding and decoding.
SUBSTANCE: video decoding apparatus is provided that includes a receiving circuit and a processing circuit that decodes block prediction information from an encoded video bitstream, determines whether to enable a palette-based coding mode for the block, based on comparing the block size with a threshold value, and, based on the prediction information, determines whether the block is under the local dual tree structure. In addition, the processing circuit decodes the block based on determining whether to enable the palette-based coding mode for the block and determining whether the block is under a local dual tree structure.
EFFECT: increased efficiency of image/video encoding.
41 cl, 12 dwg

Description

Включение посредством ссылкиInclusion by reference

[1] Настоящая заявка испрашивает приоритет по патентной заявке США №17/097 415 «СПОСОБ И УСТРОЙСТВО ДЛЯ РЕЖИМА КОДИРОВАНИЯ НА ОСНОВЕ ПАЛИТРЫ ПОД ЛОКАЛЬНОЙ ДВОЙСТВЕННОЙ СТРУКТУРОЙ ДЕРЕВА», поданной 13 ноября 2020 г., в которой испрашивался приоритет по предварительной заявке США №62/963,216, "УПРОЩЕННОЕ КОДИРОВАНИЕ ПАЛИТРЫ С ЛОКАЛЬНОЙ СТРУКТУРОЙ КОДИРОВАНИЯ ДВОЙСТВЕННОГО ДЕРЕВА" поданной 20 января 2020. Полное раскрытие предшествующих заявок полностью включено в настоящее описание посредством ссылки.[1] This application claims priority over US Patent Application No. 17/097 415 "METHOD AND APPARATUS FOR PALETTE-BASED CODING MODE UNDER LOCAL DUAL WOOD STRUCTURE", filed November 13, 2020, which claimed priority over US Provisional Application No. 62 /963,216, "SIMPLIED PALETTE ENCODING WITH A LOCAL DUAL-TREE ENCODING STRUCTURE" filed January 20, 2020. The entire disclosure of prior applications is hereby incorporated by reference in its entirety.

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

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

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

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

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

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

[6] Видеокодер и видеодекодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.[6] The video encoder and video decoder may use techniques from several broad categories including, for example, motion compensation, transform, quantization, and entropy coding.

[7] Технологии видеокодеков могут включать в себя методы, известные как интра-кодирование. При интра-кодировании значения отсчетов представлены без ссылки на отсчеты или другие данные из ранее восстановленных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, это изображение может быть интра-изображением. Интра-изображения и их производные, такие как изображения обновления независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном потоке битов видео и сеанса видео или как неподвижное изображение. Осчеты интра-блока могут подвергаться преобразованию, а коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Интра-предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.[7] Video codec technologies may include techniques known as intra-coding. In intra-coding, sample values are presented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, the image is spatially divided into blocks of samples. When all blocks of samples are encoded in intra mode, this picture may be an intra picture. Intra-pictures and their derivatives, such as independent decoder update pictures, can be used to reset the decoder state and therefore can be used as the first picture in the encoded video bitstream and video session, or as a still picture. The intra-block counts may be transformed and the transform coefficients may be quantized before entropy encoding. Intra-prediction may be a technique that minimizes sample values in a region prior to transformation. In some cases, the smaller the DC value after the transform and the smaller the AC coefficients, the fewer bits are required for a given quantization step size to represent a block after entropy coding.

[8] Традиционное интра-кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует интра-предсказание. Однако некоторые новые технологии сжатия видео включают в себя методы, которые пытаются, например, из окружающих данных отсчетов и/или метаданных, полученных во время кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами «интра-предсказания». Следует обратить внимание, что по меньшей мере в некоторых случаях интра-предсказание использует опорные данные только из текущего восстанавливаемого изображения, а не из опорных изображений.[8] Conventional intra coding known from, for example, MPEG-2 generation coding technologies does not use intra prediction. However, some new video compression techniques include techniques that attempt, for example, from surrounding sample data and/or metadata obtained during encoding/decoding of spatially adjacent and preceding data blocks in decoding order. Such methods are hereinafter referred to as "intra-prediction" methods. Note that, in at least some cases, intra-prediction only uses reference data from the current image being reconstructed, and not from reference images.

[9] Может быть много разных форм интра-предсказания. Когда в данной технологии кодирования видео можно использовать более одного из таких методов, используемый метод может быть закодирован в режиме интра-предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, и они могут быть закодированы индивидуально или включены в кодовое слово режима. Выбор, какое кодовое слово использовать для данной комбинации режима/подрежима/параметра, может повлиять на повышение эффективности кодирования за счет интра-предсказания, как и технология энтропийного кодирования, используемая для преобразования кодовых слов в поток битов.[9] There can be many different forms of intra-prediction. When more than one of such methods can be used in a given video coding technology, the method used can be encoded in intra-prediction mode. In some cases, modes may have sub-modes and/or parameters, and these may be encoded individually or included in the mode codeword. The choice of which codeword to use for a given mode/submode/parameter combination can affect the improvement in coding efficiency due to intra-prediction, as can the entropy coding technology used to convert the codewords into a bit stream.

[10] Определенный режим интра-предсказания был введен в Н.264, усовершенствован в Н.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM), универсальное кодирование видео (VVC) и набор тестов (BMS). Блок предиктора может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения отсчетов соседних отсчетов копируются в блок предсказания в соответствии с направлением. Ссылка на используемое направление может быть закодирована в потоке битов или сама может быть предсказана.[10] A specific intra-prediction mode was introduced in H.264, enhanced in H.265, and further enhanced in new coding technologies such as Joint Exploration Model (JEM), Versatile Video Coding (VVC), and Test Suite (BMS). The predictor block can be formed using the values of neighboring samples belonging to already available samples. The sample values of neighboring samples are copied into the prediction block according to the direction. A reference to the direction to be used may be encoded in the bitstream, or may itself be predicted.

[11] На фиг. 1 в правом нижнем углу изображено подмножество девяти направлений предсказания, известных из 33 возможных направлений предсказания Н.265 (соответствующих 33 угловым режимам из 35 интра-режимов). Точка, где сходятся стрелки (101), представляет собой предсказываемый отсчет. Стрелки указывают направление, в котором предсказывается отсчет. Например, стрелка (102) указывает, что отсчет (101) предсказывается на основе отсчета или отсчетов в правом верхнем углу под углом 45 градусов от горизонтали. Аналогично, стрелка (103) указывает, что отсчет (101) предсказывается из отсчета или отсчетов в нижнем левом углу отсчета (101) под углом 22,5 градуса от горизонтали.[11] FIG. 1, a subset of the nine prediction directions known from the 33 possible H.265 prediction directions (corresponding to 33 angle modes out of 35 intra modes) is depicted in the lower right corner. The point where the arrows (101) converge is the predicted reading. The arrows indicate the direction in which the reading is predicted. For example, an arrow (102) indicates that the reading (101) is predicted based on the reading or readings in the upper right corner at 45 degrees from the horizontal. Similarly, the arrow (103) indicates that the reading (101) is predicted from the reading or readings in the lower left corner of the reading (101) at an angle of 22.5 degrees from the horizontal.

[12] В верхнем левом углу фиг. 1 изображен квадратный блок (104) из 4x4 отсчетов (обозначен пунктирной жирной линией). Квадратный блок (104) включает в себя 16 отсчетов, каждый из которых помечен буквой «S», его положение в измерении Y (например, индекс строки) и его положение в измерении X (например, индекс столбца). Например, отсчет S21 - это второй отсчет в измерении Y (сверху) и первый (слева) отсчет в измерении X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) как по Y, так и по X измерениям. Поскольку размер блока 4x4 отсчета, S44 находится внизу справа. Далее показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет помечается буквой R, его положением Y (например, индекс строки) и положением X (индекс столбца) относительно блока (104). И в Н.264, и в Н.265 отсчеты предсказания соседствуют с восстанавливаемым блоком; поэтому нет необходимости использовать отрицательные значения.[12] In the upper left corner of FIG. 1 shows a square block (104) of 4x4 samples (denoted by a dotted thick line). The square block (104) includes 16 samples, each labeled with an "S", its position in the Y dimension (eg, row index) and its position in the X dimension (eg, column index). For example, sample S21 is the second sample in the Y dimension (top) and the first (left) sample in the X dimension. Similarly, sample S44 is the fourth sample in block (104) in both the Y and X dimensions. Since the block size is 4x4 samples, S44 is at the bottom right. The following shows reference readings that follow a similar numbering scheme. The reference sample is labeled with the letter R, its Y position (eg row index) and X position (column index) relative to the block (104). In both H.264 and H.265, prediction samples are adjacent to the block being reconstructed; so there is no need to use negative values.

[13] Интра-предсказание изображения может работать путем копирования значений опорных отсчетов из соседних отсчетов в соответствии с сигнальным направлением предсказания. Например, предположим, что кодированный поток битов видео включает в себя сигнализацию, которая для этого блока указывает направление предсказания, соответствующее стрелке (102), то есть отсчеты предсказываются из отсчета предсказания или отсчетов в правом верхнем углу под углом 45 градусов от горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются на основе одного и того же опорного отсчета R05. Отсчет S44 затем предсказывается на основе опорного отсчета R08.[13] Image intra-prediction can work by copying reference sample values from adjacent samples according to the prediction signal direction. For example, suppose the encoded video bitstream includes signaling that for this block indicates a prediction direction corresponding to arrow (102), i.e., samples are predicted from the prediction sample or samples in the upper right corner at 45 degrees from the horizontal. In this case, samples S41, S32, S23 and S14 are predicted based on the same reference sample R05. Sample S44 is then predicted based on reference sample R08.

[14] В некоторых случаях значения нескольких опорных отсчетов могут быть объединены, например, посредством интерполяции, чтобы вычислить опорный отсчет; особенно когда направления не делятся на 45 градусов без остатка.[14] In some cases, the values of several reference samples may be combined, for example, by interpolation, to calculate the reference sample; especially when the directions are not divisible by 45 degrees without a remainder.

[15] Количество возможных направлений увеличивалось по мере развития технологии кодирования видео. В Н.264 (2003 год) может быть представлено девять различных направлений. Это число увеличилось до 33 в Н.265 (2013 год), а JEM/VVC/BMS на момент данного раскрытия может поддерживать до 65 направлений. Были проведены эксперименты для определения наиболее вероятных направлений, и определенные методы энтропийного кодирования используются для представления этих вероятных направлений в небольшом количестве битов, принимая определенный штраф за менее вероятные направления. Кроме того, сами направления иногда могут быть предсказаны из соседних направлений, используемых в соседних, уже декодированных блоках.[15] The number of possible destinations has increased as video coding technology has evolved. H.264 (2003) can present nine different directions. This number has increased to 33 in H.265 (2013) and JEM/VVC/BMS can support up to 65 destinations at the time of this disclosure. Experiments have been made to determine the most likely directions, and certain entropy encoding techniques are used to represent these likely directions in a small number of bits, while taking a certain penalty for the less likely directions. In addition, the directions themselves can sometimes be predicted from adjacent directions used in adjacent, already decoded blocks.

[16] Фиг. 2 иллюстрирует схему (201), которая изображает 65 направлений интра-предсказания согласно JEM, чтобы проиллюстрировать увеличивающееся количество направлений предсказания с течением времени.[16] FIG. 2 illustrates a diagram (201) that depicts 65 intra-prediction directions according to JEM to illustrate an increasing number of prediction directions over time.

[17] Отображение битов направлений интра-предсказания в кодированном битовом потоке видео, которые представляют направление, может отличаться от технологии кодирования видео к технологии кодирования видео; и может варьироваться, например, от простых прямых отображений направления предсказания в режим интра-предсказания, в кодовые слова, в сложные адаптивные схемы, включающие наиболее вероятные режимы, и аналогичные методы. Однако во всех случаях могут быть определенные направления, которые статистически менее вероятны в видеоконтенте, чем некоторые другие направления. Поскольку целью сжатия видео является уменьшение избыточности, эти менее вероятные направления в хорошо работающей технологии кодирования видео будут представлены большим числом битов, чем более вероятные направления.[17] The mapping of intra-prediction direction bits in the encoded video bitstream that represent the direction may differ from video coding technology to video coding technology; and may vary, for example, from simple direct prediction direction mappings to intra-prediction mode, to codewords, to complex adaptive circuits including most likely modes, and similar techniques. However, in all cases, there may be certain directions that are statistically less likely in video content than some other directions. Because the goal of video compression is to reduce redundancy, these less likely directions in a well-performing video coding technology will be represented by more bits than the more likely directions.

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

[18] Аспекты раскрытия относятся к способам и устройствам для кодирования/декодирования видео. В некоторых примерах устройство для декодирования видео включает в себя схему приема и схему обработки. Например, схема обработки декодирует информацию предсказания блока из кодированного битового потока видео, определяет, разрешить ли режим кодирования на основе палитры для блока, на основе сравнения размера блока с пороговым значением, и определяет, находится ли блок под структурой локального двойственного дерева на основе информации предсказания. Кроме того, схема обработки декодирует блок на основе определения, разрешить ли режим кодирования на основе палитры для блока, и определения, находится ли блок под структурой локального двойственного дерева.[18] Aspects of the disclosure relate to methods and apparatus for encoding/decoding video. In some examples, a video decoding apparatus includes a receiving circuit and a processing circuit. For example, the processing circuit decodes block prediction information from the encoded video bitstream, determines whether to enable the paletted coding mode for the block based on comparing the block size with a threshold value, and determines whether the block is under the local dual tree structure based on the prediction information. . In addition, the processing circuit decodes the block based on determining whether to enable the palette-based coding mode for the block and determining whether the block is under a local dual tree structure.

[19] В некоторых вариантах осуществления схема обработки запрещает режим кодирования на основе палитры для блока в ответ на то, что размер блока меньше порогового значения. В некоторых примерах пороговое значение определяется так, чтобы запретить структуру локального двойственного дерева в ответ на блок, превышающий пороговое значение. В одном примере схема обработки запрещает режим кодирования на основе палитры для блока в ответ на то, что блок является блоком цветности и размер блока цветности меньше порогового значения. В некоторых примерах схема обработки запрещает режим кодирования на основе палитры для блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева.[19] In some embodiments, the processing scheme disables the paletted coding mode for a block in response to the block size being less than a threshold. In some examples, the threshold value is defined to disable the local dual tree structure in response to a block exceeding the threshold value. In one example, the processing scheme disables the paletted coding mode for the block in response to the block being a chrominance block and the chroma block size being less than a threshold. In some examples, the processing scheme disables the paletted coding mode for a block based on a combination of mode type and block tree type that indicates that the block is a chrominance block under a local dual tree structure.

[20] В некоторых вариантах осуществления, в ответ на разрешение режима кодирования на основе палитры, схема обработки декодирует из кодированного битового потока видео флаг, указывающий, используется ли в блоке режим кодирования на основе палитры, и декодирует блок с использованием режима кодирования на основе палитры в ответ на флаг, указывающий на использование в блоке режима кодирования на основе палитры. Кроме того, в некоторых примерах, в ответ на то, что блок находится под структурой локального двойственного дерева, схема обработки пропускает обновление списка предикторов палитры. В одном примере схема обработки обновляет, в ответ на отсутствие инициирования структуры локального двойственного дерева, список предикторов палитры на основе палитры, используемой в декодировании блока.[20] In some embodiments, in response to enabling the palette-based coding mode, the processing circuit decodes from the encoded video bitstream a flag indicating whether the block uses the palette-based coding mode, and decodes the block using the palette-based coding mode in response to a flag indicating the use of a palette-based coding mode in the block. In addition, in some examples, in response to the block being under the local dual tree structure, the processing scheme skips updating the list of palette predictors. In one example, the processing circuit updates, in response to the lack of triggering a local dual tree structure, a list of palette predictors based on the palette used in decoding the block.

[21] В некоторых других вариантах осуществления, в ответ на разрешение режима кодирования на основе палитры, схема обработки декодирует из кодированного битового потока видео флаг, указывающий, используется ли в блоке режим кодирования на основе палитры, и декодирует блок на основе палитры, имеющий уменьшенный максимальный размер, в ответ на флаг, указывающий на использование режима кодирования на основе палитры для блока и на то, что блок находится под структурой локального двойственного дерева. Кроме того, схема обработки может обновлять список предикторов палитры на основе палитры, используемой в декодировании блока, и размер списка предикторов палитры ограничивается уменьшенным максимальным размером.[21] In some other embodiments, in response to enabling the palette-based coding mode, the processing circuit decodes from the encoded video bitstream a flag indicating whether the block uses the palette-based coding mode, and decodes the palette-based block having a reduced the maximum size, in response to a flag indicating the use of the palette-based encoding mode for the block and that the block is under the local dual tree structure. In addition, the processing circuit may update the palette predictor list based on the palette used in block decoding, and the size of the palette predictor list is limited to a reduced maximum size.

[22] Аспекты раскрытия также относятся к невременному машиночитаемому носителю, на котором хранятся инструкции, которые при исполнении компьютером для декодирования видео побуждают компьютер выполнять способ декодирования видео. [22] Aspects of the disclosure also relate to a non-transitory computer-readable medium that stores instructions that, when executed by a video decoding computer, cause the computer to perform a video decoding method.

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

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

[24] На фиг. 1 показана схематическая иллюстрация примерного подмножества режимов интра-предсказания.[24] FIG. 1 is a schematic illustration of an exemplary subset of intra-prediction modes.

[25] На фиг. 2 показана иллюстрация примерных направлений интра-предсказания.[25] FIG. 2 is an illustration of exemplary intra-prediction directions.

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

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

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

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

[30] На фиг. 7 показана блок-схема кодера в соответствии с другим вариантом осуществления.[30] FIG. 7 shows a block diagram of an encoder in accordance with another embodiment.

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

[32] На фиг. 9 показан пример синтаксиса для обновления списка предсказаний палитры в некоторых примерах.[32] FIG. 9 shows an example syntax for updating a list of palette predictions in some examples.

[33] На фиг. 10 показан пример синтаксиса для определения в битовом потоке существования флага режима палитры в некоторых примерах.[33] FIG. 10 shows an example syntax for determining the existence of a palette mode flag in a bitstream in some examples.

[34] На фиг. 11 показана блок-схема, описывающая пример процесса согласно некоторым вариантам осуществления раскрытия.[34] FIG. 11 is a flow diagram describing an example of a process according to some embodiments of the disclosure.

[35] На фиг. 12 показана схематическая иллюстрация компьютерной системы в соответствии с одним вариантом осуществления. Осуществление изобретения[35] FIG. 12 is a schematic illustration of a computer system in accordance with one embodiment. Implementation of the invention

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

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

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

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

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

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

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

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

[44] Видеодекодер (510) может включать в себя парсер (520) для восстановления символов (521) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510), и потенциально информацию для управления устройством визуализации, таким как устройство визуализации (512) (например, экран дисплея), которое не является неотъемлемой частью электронного устройство (530), но может быть подключено к электронному устройству (530), как показано на фиг. 5. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной расширенной информации (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Синтаксический анализатор (520) может анализировать/энтропийно декодировать полученную кодированную видеопоследовательность. Кодирование закодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видео кодирования и может следовать различным принципам, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Синтаксический анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Субгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Синтаксический анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.[44] The video decoder (510) may include a parser (520) for recovering symbols (521) from the encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (510) and potentially information to control a visualization device such as a visualization device (512) (e.g., a display screen) that is not an integral part of the electronic device (530), but may be connected to an electronic device (530) as shown in FIG. 5. The control information for the rendering device(s) may be in the form of additional extended information (SEI messages) or video usability information (VUI) parameter set fragments (not shown). A parser (520) may parse/entropy decode the received encoded video sequence. Encoding of the encoded video sequence may be in accordance with a video coding technology or standard, and may follow various principles including variable length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The parser (520) 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 (GOPs), pictures, tiles, slices, macroblocks, coding units (CUs), blocks, transform units (TUs), prediction units (PUs), and so on. The parser (520) may also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.

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

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

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

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

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

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

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

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

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

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

[55] В варианте осуществления приемник (531) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (510) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.[55] In an embodiment, the receiver (531) 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 (510) to correctly decode the data and/or to more accurately reconstruct the original video data. The additional data may be in the form of, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, and so on.

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

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

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

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

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

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

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

[63] Во время работы в некоторых примерах исходный кодер (630) может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входное изображение с предсказанием со ссылкой на одно или более ранее кодированных изображений из видеопоследовательности, которые были обозначены как «опорные изображения». Таким образом, механизм (632) кодирования кодирует различия между блоками пикселей входного изображения и блоками пикселей опорного изображения (изображений), которые могут быть выбраны в качестве эталона(ов) предсказанием для входного изображения.[63] During operation, in some examples, source encoder (630) may perform motion-compensated predictive encoding that predictively encodes an input picture with reference to one or more previously encoded pictures from a video sequence that have been designated "reference pictures". Thus, the encoding engine (632) 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 prediction reference(s) for the input image.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[82] На примере с фиг. 7 видеокодер (703) включает в себя интер-кодер (730), интра-кодер (722), вычислитель (723) остатка, переключатель (726), кодер (724) остатка, общий контроллер (721) и энтропийный кодер (725), соединенные вместе, как показано на фиг. 7.[82] In the example of FIG. 7, the video encoder (703) includes an inter encoder (730), an intra encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a common controller (721), and an entropy encoder (725). connected together as shown in Fig. 7.

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

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

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

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

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

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

[89] В примере с фиг. 8 видеодекодер (810) включает в себя энтропийный декодер (871), интердекодер (880), декодер (873) остатка, модуль (874) восстановления и интрадекодер (872), соединенные вместе, как показано на фиг. 8.[89] In the example of FIG. 8, the video decoder (810) includes an entropy decoder (871), an interdecoder (880), a residual decoder (873), a reconstruction unit (874), and an intradecoder (872) connected together as shown in FIG. 8.

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

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

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

[93] Декодер (873) остатка конфигурирован для выполнения обратного квантования для извлечения деквантованных коэффициентов преобразования, и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (873) остатка может также потребовать определенную управляющую информацию (чтобы включить параметр квантователя (QP)), и эта информация может быть предоставлена энтропийным декодером (871) (путь данных не показан, поскольку это может быть только управляющая информация малого объема).[93] The residual decoder (873) 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 (873) may also require certain control information (to include a quantizer parameter (QP)), and this information may be provided by the entropy decoder (871) (data path not shown as this may only be small control information).

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

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

[96] Согласно некоторым аспектам раскрытия, режим кодирования, который называется режимом кодирования на основе палитры, может использоваться в дополнение к режиму интер-предсказания и режиму интра-предсказания. Настоящее раскрытие предоставляет методы для упрощения режима кодирования на основе палитры со структурой кодирования локального двойственного дерева.[96] According to some aspects of the disclosure, an encoding mode, which is called a palette-based encoding mode, can be used in addition to the inter-prediction mode and the intra-prediction mode. The present disclosure provides methods for simplifying a palette-based encoding mode with a local dual tree encoding structure.

[97] В некоторых примерах содержимое экрана имеет определенные характеристики, и для кодирования экрана могут быть разработаны инструменты кодирования. Инструменты кодирования для кодирования экрана могут значительно повысить эффективность кодирования. Режим кодирования на основе палитры может представлять блок пикселей с использованием индексов палитры, которая включает основные цвета блока. Палитру и индексы можно кодировать, используя пространственную избыточность.[97] In some examples, screen content has certain characteristics, and encoding tools may be developed to encode the screen. Screen coding coding tools can greatly improve coding efficiency. A palette-based coding mode may represent a block of pixels using palette indices that include the base colors of the block. The palette and indices can be encoded using spatial redundancy.

[98] В частности, в некоторых вариантах осуществления палитра определяется как справочная таблица записей, которая может ассоциировать индексы со значениями пикселей. В некоторых примерах значение пикселя включает в себя одно или более значений, соответствующих компонентам цвета. В одном примере значение пикселя может включать в себя три значения, соответственно представляющих три цветовых компонента. В другом примере для монохромной палитры значение пикселя включает в себя значение, представляющее один компонент цвета.[98] In particular, in some embodiments, a palette is defined as a lookup table of entries that can associate indices with pixel values. In some examples, a pixel value includes one or more values corresponding to color components. In one example, a pixel value may include three values, respectively representing three color components. In another example, for a monochrome palette, a pixel value includes a value representing one color component.

[99] В некоторых вариантах осуществления блок пикселей может кодироваться на основе палитры, и режим кодирования с использованием палитры называется режимом кодирования на основе палитры. Режим кодирования на основе палитры принят в некоторых стандартах кодирования видео, таких как VVC и т.п.[99] In some embodiments, a block of pixels may be palette-based, and the encoding mode using the palette is referred to as the palette-based encoding mode. The palette-based coding mode is adopted in some video coding standards such as VVC and the like.

[100] Согласно некоторым вариантам осуществления режим кодирования на основе палитры является отдельным режимом кодирования. В варианте осуществления режим кодирования на основе палитры реализован как модуль кодирования (например, кодер на основе палитры, декодер на основе палитры и т.п.), который является отдельным от интра-кодера (722), интер-кодера (730), интра-декодера (872), интер-декодера (870). В одном примере режим кодирования на основе палитры реализован как аппаратная схема отдельная от интра-кодера (722), интер-кодера (730), интра-декодера (872), интер-декодера (870). В другом примере режим кодирования на основе палитры реализован как программный модуль отдельный от программных модулей для интра-кодера (722), интер-кодера (730), интра-декодера (872), интер-декодера (870). Программный модуль для режима кодирования на основе палитры и другие программные модули могут выполняться одним и тем же процессором или разными процессорами.[100] According to some embodiments, the palette-based coding mode is a separate coding mode. In an embodiment, the palette-based coding mode is implemented as an encoding unit (e.g., palette-based encoder, palette-based decoder, etc.) that is separate from the intra encoder (722), inter encoder (730), intra -decoder (872), inter-decoder (870). In one example, the palette-based coding mode is implemented as a hardware circuit separate from the intra encoder (722), inter encoder (730), intra decoder (872), inter decoder (870). In another example, the palette-based coding mode is implemented as a software module separate from the software modules for intra-encoder (722), inter-encoder (730), intra-decoder (872), inter-decoder (870). The software module for the palette-based coding mode and the other software modules may be executed by the same processor or by different processors.

[101] Согласно некоторым аспектам раскрытия, режим кодирования на основе палитры обычно включает в себя две части: первую часть способов кодирования для палитры и вторую часть способов кодирования для отсчетов, использующих палитру. Первая часть может включать в себя выбор основного цвета и кодирование палитры. Вторая часть может включать в себя кодирование индекса палитры, кодирование длины серии и кодирование выпадающих пикселей.[101] According to some aspects of the disclosure, a palette-based coding mode typically includes two parts: a first part of encoding methods for the palette and a second part of encoding methods for samples using the palette. The first part may include selecting a primary color and coding the palette. The second part may include palette index coding, run length coding, and outlier pixel coding.

[102] В некоторых примерах кодер на основе палитры может кодировать блок видеоданных, определяя палитру для блока (например, явно кодируя палитру, предсказывая палитру, комбинация сигнализирования и предсказания и т.п.), размещая запись в палитре для представления одного или более значений пикселей и кодирование блока с помощью значений индексов, которые указывают записи в палитре, используемой для представления значений пикселей блока. В некоторых примерах кодер на основе палитры может сигнализировать палитру и/или значения индексов в кодированном битовом потоке. В свою очередь, декодер на основе палитры может получать из кодированного битового потока палитру для блока, и значения индексов для отдельных пикселей блока. В некоторых других примерах палитра может предсказываться, и кодер на основе палитры может сигнализировать значения индексов в кодированном битовом потоке, без сигнализирования палитры, и кодер на основе палитры может предсказывать палитру и получать значения индексов в кодированном битовом потоке. Затем декодер на основе палитры может связать значения индексов пикселей с записями палитры, которые предоставляют значения пикселей. Декодер на основе палитры может восстанавливать различные пиксели блока на основе значений пикселей, ассоциированных со значениями индексов.[102] In some examples, a palette-based encoder may encode a block of video data by specifying a palette for the block (e.g., explicitly encoding a palette, predicting a palette, a combination of signaling and prediction, etc.), placing an entry in the palette to represent one or more values. pixels, and encoding the block with index values that specify entries in the palette used to represent the block's pixel values. In some examples, a palette-based encoder may signal the palette and/or index values in the encoded bitstream. In turn, the palette-based decoder can derive from the encoded bitstream the palette for the block, and the index values for the individual pixels of the block. In some other examples, palette may be predicted and a palette-based encoder may signal index values in the encoded bitstream, without palette signaling, and the palette-based encoder may predict palette and obtain index values in the encoded bitstream. The palette-based decoder can then associate pixel index values with palette entries that provide pixel values. The palette-based decoder may reconstruct the various pixels of the block based on the pixel values associated with the index values.

[103] Согласно некоторым вариантам осуществления палитра может включать в себя наиболее доминирующие значения пикселей в данном блоке. Например, наиболее доминирующие значения пикселей могут включать в себя одно или более значений пикселей, которые наиболее часто встречаются в данном блоке. Кроме того, в некоторых примерах пороговое значение (например, количества пикселей, имеющих указанное значение пикселя) может использоваться для определения, следует ли значение пикселя включить в качестве одного из наиболее доминирующих значений пикселя в блоке.[103] In some embodiments, the palette may include the most dominant pixel values in a given block. For example, the most dominant pixel values may include one or more pixel values that occur most frequently in a given block. In addition, in some examples, a threshold value (eg, the number of pixels having a specified pixel value) may be used to determine whether the pixel value should be included as one of the most dominant pixel values in the block.

[104] В некоторых вариантах осуществления алгоритм на основе гистограммы используется для классификации значений пикселей для пикселей в блоке с целью формирования палитры. В некоторых примерах L наиболее значительных пиковые значений на гистограмме могут быть выбраны в качестве основных цветов (L - положительное целое число). В примере значения пикселей, близкие к основному цвету, можно квантовать до основного цвета. В некоторых примерах пиксели, которые не принадлежат ни к одному из основных цветов, называются выпадающими пикселями. Выпадающие пиксели перехода можно квантовать перед кодированием. В некоторых вариантах осуществления для кодирования без потерь процессы квантования не выполняются.[104] In some embodiments, a histogram-based algorithm is used to classify pixel values for pixels in a block to generate a palette. In some examples, the L most significant peaks in the histogram may be chosen as the primary colors (L is a positive integer). In the example, pixel values close to the base color can be quantized to the base color. In some examples, pixels that do not belong to any of the primary colors are called dropout pixels. Drop-down transition pixels can be quantized before encoding. In some embodiments, no quantization processes are performed for lossless coding.

[105] Кроме того, в некоторых вариантах осуществления для каждого пикселя назначается индекс цвета, чтобы указать, какому цвету принадлежит пиксель. В некоторых примерах, если используются L основных цветов, от 0 до (L-1) можно использовать как индексы цвета для основных цветов, и от 0 до (L-1) можно называть основным набором цветов. Для тех пикселей, чьи основные цветовые индексы не существуют, им присваивается специальный индекс (например, индекс N, отличный от 0 до (L-1)), и эти пиксели называются «выпавшими пикселями».[105] In addition, in some embodiments, a color index is assigned to each pixel to indicate which color the pixel belongs to. In some examples, if L primaries are used, 0 to (L-1) may be used as color indices for the primaries, and 0 to (L-1) may be referred to as the primary color set. For those pixels whose primary color indexes do not exist, they are assigned a special index (for example, an N index other than 0 to (L-1)), and these pixels are called “outliers”.

[106] В целом, палитра реализована в виде справочной таблицы цветов. Справочная таблица цветов включает в себя множество записей. Каждая запись ассоциирует индекс цвета с цветом (например, основным цветом). В некоторых примерах для кодирования компонентов яркости и цветности используется одна палитра. Каждая запись может представлять определенный цвет RGB (YUV) с использованием трех цветовых компонентов. Например, палитра может иметь запись 1 с (R, G, В) = (0, 0, 0), которая представляет чистый черный цвет, и может иметь запись 0 с (R, G, В) = (2, 10, 200), который представляет собой голубоватый цвет. Следует отметить, что, когда видеоформат соответствует 420, плоскость цветности подвергается повышающей дискретизации для создания справочной таблицы цветов для палитры.[106] In general, the palette is implemented as a color lookup table. The color reference table includes many entries. Each entry associates a color index with a color (eg, base color). In some examples, the same palette is used to encode the luminance and chrominance components. Each entry can represent a specific RGB (YUV) color using three color components. For example, a palette might have an entry of 1s (R, G, B) = (0, 0, 0), which represents pure black, and might have an entry of 0s (R, G, B) = (2, 10, 200 ), which is a bluish color. It should be noted that when the video format is 420, the color plane is upsampled to create a color lookup table for the palette.

[107] В некоторых вариантах осуществления кодирование на основе палитры выполняется на основе CU. В примере для текущего CU выводится справочная цветовая таблица, которая включает в себя наиболее доминирующие значения пикселей в текущем CU. В некоторых примерах могут передаваться размер и элементы справочной таблицы цветов. В некоторых других примерах размер и элементы справочной таблицы цветов могут быть кодированы с предсказанием с использованием размера и/или элементов справочной таблицы цветов других CU.[107] In some embodiments, palette-based coding is performed based on the CU. The example outputs a reference color table for the current CU that includes the most dominant pixel values in the current CU. In some examples, the size and elements of a color lookup table may be passed. In some other examples, the color lookup table size and entries may be predictively encoded using the size and/or color lookup table entries of other CUs.

[108] Согласно некоторым аспектам раскрытия, предсказание палитры может выполняться на основе списка предикторов палитры. В примере список предикторов палитры может включать в себя несколько палитр, которые используются для других CU. Для кодирования текущей палитры с использованием списка предикторов палитры в качестве ссылки используется двоичный вектор, чтобы указать, используется ли повторно в текущей палитре каждая запись в списке предикторов палитры.[108] According to some aspects of the disclosure, palette prediction may be performed based on a list of palette predictors. In the example, the list of palette predictors may include several palettes that are used for other CUs. To encode the current palette using the palette predictor list, a binary vector is used as a reference to indicate whether each entry in the palette predictor list is reused in the current palette.

[109] В некоторых примерах (например, HEVC SCC) список предикторов палитры хранит ранее закодированные записи палитры в качестве ссылок для предсказания текущей палитры. Список предикторов палитры обновляется после каждого CU режима палитры. В одном примере список предикторов палитры работает аналогично кэшу с вытеснением по давности использования. Самая последняя палитра может быть вставлена в начало списка предикторов палитры, и записи из самых дальних CU в порядке сканирования отбрасываются, если размер списка превышает пороговое значение. В некоторых примерах максимально допустимый размер предиктора палитры и размер палитры либо сигнализируются в синтаксисе высокого уровня, либо как определенные значения, согласованные как кодером, так и декодерами. В варианте осуществления верхняя граница размера списка предикторов палитры (прямо или косвенно) сигнализируется в SPS. Например, список предикторов палитры может иметь размер примерно в два раза больше предельного размера палитры. В некоторых примерах список предикторов палитры также называется ретроспективным списком предикторов палитры (HPPL). В примере, в SPS максимальный размер предикторов палитры сигнализируется равным 63, максимальный размер палитры сигнализируется равным 31. В другом примере эти два значения принимаются кодером и декодером без сигнализирования.[109] In some examples (eg, HEVC SCC), the palette predictor list stores previously encoded palette entries as references for predicting the current palette. The list of palette predictors is updated after each palette mode CU. In one example, the list of palette predictors works similarly to a aging cache. The most recent palette may be inserted at the beginning of the list of palette predictors, and entries from the furthest CUs in the scan order are discarded if the list size exceeds a threshold. In some examples, the maximum allowed palette predictor size and palette size are either signaled in high-level syntax or as specific values agreed upon by both the encoder and decoders. In an embodiment, an upper bound on the size of the palette predictor list is (directly or indirectly) signaled in the SPS. For example, a list of palette predictors might be about twice the size of the palette limit. In some examples, a palette predictor list is also referred to as a retrospective palette predictor list (HPPL). In an example, in SPS, the maximum size of palette predictors is signaled to be 63, the maximum size of palette is signaled to be 31. In another example, these two values are received by the encoder and decoder without signaling.

[110] В некоторых вариантах осуществления записи в списке предсказаний палитры могут иметь соответственно флаги повторного использования. Когда флаг повторного использования для записи истинен (то есть, «1»), запись называется повторно используемой записью. Компоненты цвета повторно используемых записей в списке предсказаний палитры могут быть скопированы в справочную таблицу цветов текущей палитры. Повторно используемые записи помещаются в начало текущей палитры таким образом, чтобы сохранить их порядок в списке предикторов палитры. За повторно используемыми записями в текущей палитре могут следовать новые записи палитры, которых нет в списке предикторов палитры. Новые записи палитры можно сигнализировать. Каждая новая запись палитры может включать, например, три цветовых компонента.[110] In some embodiments, entries in the palette prediction list may have reuse flags, respectively. When the reuse flag for an entry is true (ie, "1"), the entry is called a reused entry. The color components of reused entries in the list of palette predictions can be copied into the color lookup table of the current palette. Reused entries are placed at the beginning of the current palette in such a way as to preserve their order in the list of palette predictors. Reused entries in the current palette may be followed by new palette entries that are not in the list of palette predictors. New palette entries can be signaled. Each new palette entry may include, for example, three color components.

[111] В некоторых вариантах осуществления для инициализации списка предикторов палитры может использоваться инициализатор палитры с предопределенными записями. Использование инициализатора палитры может привести к повышению эффективности кодирования в некоторых сценариях. Инициализатор палитры можно сигнализироваться, например, в наборе параметров изображения (PPS), в наборе параметров последовательности (SPS) и т.п.[111] In some embodiments, a palette initializer with predefined entries may be used to initialize a list of palette predictors. Using a palette initializer can result in improved coding efficiency in some scenarios. The palette initializer may be signaled, for example, in a Picture Parameter Set (PPS), in a Sequence Parameter Set (SPS), and the like.

[112] Индексы цвета можно кодировать, как показано ниже. После классификации пиксели блока могут быть преобразованы в индексы цвета в соответствии с выбранным основным набором цветов. В некоторых примерах способ кодирования с предсказанием может быть применен к индексам цвета, где линия пикселей может предсказываться несколькими различными режимами (например, тремя различными режимами), включая горизонтальный режим (например, режим копирования индексов), вертикальный режим (например, режим копирования сверху) и нормальный режим (например, режим с выпадением). В некоторых примерах два порядка сканирования индекса (например, сканирование горизонтального хода и сканирование вертикального хода) используются при кодировании индексов цвета. Флаг поворота индекса может сигнализировать, чтобы указать, какой из двух порядков сканирования индекса используется.[112] Color indices can be encoded as shown below. After classification, the block pixels can be converted into color indices according to the chosen basic set of colors. In some examples, a predictive coding method can be applied to color indices, where a line of pixels can be predicted by several different modes (e.g., three different modes), including horizontal mode (e.g., index copy mode), vertical mode (e.g., copy from above mode) and normal mode (eg drop mode). In some examples, two index scan orders (eg, horizontal stroke scan and vertical stroke scan) are used in encoding color indices. An index rotation flag may be signaled to indicate which of the two index scan orders is used.

[113] В режиме копирования индексов, начиная с первого пикселя, один или более последовательных индексов могут быть скопированы из первого пикселя. Может сигнализироваться индекс цвета первого пикселя.[113] In the index copy mode, starting from the first pixel, one or more consecutive indexes may be copied from the first pixel. The color index of the first pixel may be signaled.

[114] В режиме копирования сверху один или более последовательных индексов цвета могут быть скопированы из верхней линии пикселей, например из линии пикселей, которая находится над текущей линией пикселей.[114] In copy-on-top mode, one or more successive color indices may be copied from an upper pixel line, such as from a pixel line that is above the current pixel line.

[115] В режиме с выпадением, когда встречается выпадающий пиксель, например, сигнализируемый наибольшим индексом (например, N) в основном наборе цветов, соответствующее значение пикселя может быть закодировано после наибольшего индекса (например, N). В CU может быть несколько выпадающий пикселей с разными цветовыми значениями. Для разных местоположений выпадающих пикселей значения пикселей для выпадающих пикселей могут быть разными.[115] In dropout mode, when a dropout pixel is encountered, such as signaled by the largest index (eg, N) in the primary color set, the corresponding pixel value may be encoded after the largest index (eg, N). A CU can have multiple dropout pixels with different color values. For different dropout pixel locations, the pixel values for the dropout pixels can be different.

[116] Для каждого режима копирования индексов может сигнализироваться значение индекса. Сигнализация индекса может быть сгруппирована спереди (или в начале), например, для повышения пропускной способности контекстно-адаптивного двоичного арифметического кодирования (САВАС). Точно так же значения пикселей выпадающих пикселей могут сигнализироваться сзади, например, для повышения пропускной способности САВАС. Режим копирования индексов и режим копирования сверху могут сигнализироваться между кодированием индексов и кодированием с выпадением.[116] An index value can be signaled for each index copy mode. The index signaling may be clustered in front (or at the beginning), for example, to improve the throughput of context adaptive binary arithmetic coding (CABAC). Likewise, the pixel values of the outlier pixels may be signaled from behind, for example, to improve CABAC throughput. Index copy mode and top copy mode can be signaled between index encoding and drop encoding.

[117] В варианте осуществления схема дерева кодирования поддерживает возможность для компонента яркости и соответствующего компонента (компонентов) цветности иметь отдельные структуры дерева блоков. В примере для секций Р и В СТВ яркости и цветности в CTU совместно используют одну и ту же структуру дерева кодирования (например, одно дерево). Для I-слайсов СТВ яркости и цветности в CTU могут иметь отдельные структуры дерева блоков (например, двойственное дерево), а случай разделения CTU с использованием отдельных структур блочного дерева называется разделением двойственного дерева. В примере, когда применяется разделение двойственного дерева, СТВ яркости может быть разделен на CU яркости посредством структуры дерева кодирования яркости, а СТВ цветности может быть разделен на CU цветности посредством структуры дерева кодирования цветности.[117] In an embodiment, the coding tree schema supports the ability for the luminance component and the corresponding chrominance component(s) to have separate block tree structures. In the example for sections P and B, the luminance and chroma CTUs in the CTU share the same coding tree structure (eg, one tree). For I-slices, luma and chrominance CTUs in CTUs may have separate block tree structures (eg, dual tree), and the case of splitting CTUs using separate block tree structures is called dual tree splitting. In an example where dual tree partitioning is applied, the luma CTB may be divided into luma CUs by a luminance coding tree structure, and the chrominance CTB may be divided into chrominance CUs by a chroma coding tree structure.

[118] В некоторых примерах, таких как JVET, отсчеты компонента цветности могут иметь независимую или отдельную структуру дерева разделения (или структуру дерева кодирования) по сравнению с компонентом яркости. Отдельная структура дерева кодирования может начинаться с уровня CTU, а структура двойственного дерева с уровня CTU в некоторых примерах называется структурой глобального двойственного дерева. В примере CU цветности (например, CU, которая включает только два компонента цветности) больше, чем аналогичная CU цветности в соответствующем местоположении отсчета.[118] In some examples, such as JVET, the chrominance component samples may have an independent or separate split tree structure (or coding tree structure) compared to the luma component. A single coding tree structure may start at the CTU level, and the dual tree structure from the CTU level is referred to in some examples as the global dual tree structure. In an example, a chroma CU (eg, a CU that includes only two chrominance components) is larger than a similar chroma CU at the corresponding sample location.

[119] В некоторых примерах двойственного дерева уровня CTU (структура глобального двойственного дерева) максимально допустимый размер предиктора палитры и размер палитры уменьшаются, например, вдвое, так что для каждого канала (яркости или цветности) уменьшается сложность. Например, в случае кодирования с одиночным деревом, блоки яркости и цветности, кодируемые при помощи палитры, кодируются совместно, и максимально разрешенный размер предиктора палитры составляет 63 записи, а максимально разрешенный размер палитры составляет 31 запись. В случае кодирования с двойственным деревом, для блоков яркости, кодированных при помощи палитры, максимально допустимый размер предиктора палитры составляет 31 запись, а максимально допустимый размер палитры - 15 записей; и для блоков цветности, кодированных при помощи палитры, максимально допустимый размер предиктора палитры составляет 31 запись, а максимально допустимый размер палитры - 15 записей.[119] In some examples of the CTU level dual tree (global dual tree structure), the maximum allowable palette predictor size and palette size are reduced, for example, by a factor of two, so that for each channel (luminance or chrominance), complexity is reduced. For example, in the case of single tree coding, the luminance and chrominance blocks encoded with a palette are coded together, and the maximum allowed palette predictor size is 63 entries, and the maximum allowed palette size is 31 entries. In the case of dual tree coding, for palette-coded luminance blocks, the maximum allowable palette predictor size is 31 entries, and the maximum allowable palette size is 15 entries; and for palette-coded chrominance blocks, the maximum allowable palette predictor size is 31 entries, and the maximum allowable palette size is 15 entries.

[120] Согласно некоторым аспектам раскрытия, метод, который упоминается как локальное двойственное дерево, используется, чтобы избежать использования небольших блоков цветности (например, таких как CU меньше 4x4 отсчетов цветности). В одном примере, когда выполняются некоторые условия (например, размер родительской CU меньше или равен некоторому пороговому значению, что может привести к тому, что блок цветности имеет меньше 4x4 отсчетов), может быть инициирован метод локального двойственного дерева. С этого момента кодирование яркости и цветности может быть разделено для CU аналогично двойственному дереву на уровне CTU.[120] According to some aspects of the disclosure, a technique referred to as local dual tree is used to avoid using small chroma blocks (eg, such as CUs less than 4x4 chroma samples). In one example, when certain conditions are met (eg, the size of the parent CU is less than or equal to some threshold, which may result in a chrominance block having fewer than 4x4 samples), a local dual tree method may be initiated. From this point on, luma and chrominance coding can be separated for CUs in a similar way to the dual tree at the CTU level.

[121] Согласно аспекту раскрытия, когда используются структуры дерева разделения, компоненты яркости могут быть кодированы в одном из режима интра-предсказания, режима IBC и режима кодирования на основе палитры, а компоненты цветности могут быть кодированы в одном из режима интра-предсказания и режим кодирования на основе палитры. Однако использование локального двойственного дерева усложняет операции в режиме кодирования на основе палитры. Например, блок структуры локального двойственного дерева может иметь соседние блоки в структуре одиночного дерева. Один и тот же список предикторов палитры может использоваться блоком структуры локального двойственного дерева и соседними блоками в структуре одиночного дерева. Обновление списка предикторов палитры может быть сложным.[121] According to an aspect of the disclosure, when partitioning tree structures are used, luminance components may be encoded in one of intra-prediction mode, IBC mode, and palette-based coding mode, and chrominance components may be encoded in one of intra-prediction mode and palette-based coding. However, the use of a local dual tree complicates operations in palette-based coding mode. For example, a block in a local dual tree structure may have neighboring blocks in a single tree structure. The same list of palette predictors can be used by a box in the local dual tree structure and neighboring boxes in the single tree structure. Updating the list of palette predictors can be tricky.

[122] Аспекты раскрытия предусматривают методы, которые упрощают кодирование на основе палитры с помощью структуры локального двойственного дерева кодирования.[122] Aspects of the disclosure provide techniques that facilitate palette-based encoding using a local dual encoding tree structure.

[123] Согласно аспекту раскрытия, когда некоторые условия истинны, процесс обновления списка предикторов палитры отключается или пропускается для кодирования режима палитры. В некоторых примерах, когда может быть инициировано локальное двойственное дерево, и блоки структуры локального двойственного дерева кодируются в режиме кодирования на основе палитры, процесс обновления списка предикторов палитры может быть отключен. Таким образом, под структурой локального двойственного дерева для блоков яркости, которые кодируются в режиме кодирования на основе палитры, и/или блоков цветности, которые кодируются в режиме кодирования на основе палитры, записи палитры этих блоков не используются для обновления записей палитры в списке предикторов палитры.[123] According to an aspect of the disclosure, when some conditions are true, the palette predictor list update process is disabled or skipped for palette mode encoding. In some instances, when a local dual tree may be initiated and the blocks of the local dual tree structure are coded in a palette-based coding mode, the process of updating the palette predictor list may be disabled. Thus, under the local dual tree structure, for luminance blocks that are coded in palette-based encoding mode and/or chrominance blocks that are coded in palette-based encoding mode, the palette entries of these blocks are not used to update the palette entries in the list of palette predictors. .

[124] В варианте осуществления может быть обнаружен инициатор локального двойственного дерева. В примере, когда инициируется локальное двойственное дерево, список предикторов палитры не обновляется на основе блоков цветности, которые кодируются в режиме кодирования на основе палитры в локальной структуре двойственного дерева, и не обновляется на основе блоков яркости, которые кодируются в режиме кодирования на основе палитры под структурой локального двойственного дерева. В другом примере, когда инициируется локальное двойственное дерево, список предикторов палитры не обновляется на основе блоков яркости, которые кодированы в режиме кодирования на основе палитры в соответствии с локальной двойственной структурой дерева, и может обновляться на основе блоков цветности, которые кодируются в режиме кодирования на основе палитры в соответствии со структурой локального двойственного дерева. В другом примере, когда инициируется локальное двойственное дерево, список предикторов палитры не обновляется на основе блоков цветности, которые кодируются в режиме кодирования на основе палитры в локальной структуре двойственного дерева, и может обновляться на основе блоков яркости, которые кодируются в режиме кодирования на основе палитры под структурой локального двойственного дерева.[124] In an embodiment, a local dual tree initiator can be detected. In the example, when the local dual tree is initiated, the palette predictor list is not updated based on the chrominance blocks that are palette-coded in the local dual tree structure, nor is it updated based on the luminance blocks that are palette-coded under structure of a local dual tree. In another example, when the local dual tree is initiated, the list of palette predictors is not updated based on the luma blocks that are palette-coded according to the local binary tree structure, and may be updated based on the chrominance blocks that are color-coded on palette-based in accordance with the structure of the local dual tree. In another example, when the local dual tree is initiated, the palette predictor list is not updated based on the chrominance blocks that are palette-coded in the local dual tree structure, and may be updated based on the luma blocks that are palette-coded. under the structure of a local dual tree.

[125] В частности, в примере, переменная, обозначенная localDualTree, используется для определения, может ли быть инициировано локальное двойственное дерево. В примере переменная localDualTree получается в соответствии с (Ур. 1):[125] In particular, in the example, a variable denoted localDualTree is used to determine whether a local dual tree can be initiated. In the example, the localDualTree variable is obtained according to (Eq. 1):

где treeType обозначает тип структуры дерева разделения (например, SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA и т.п.), slice_type обозначает тип (например, I, Р или В) текущего слайса, a qtbtt_dual_tree_intra_flag обозначает флаг для глобального двойственного дерева. Когда переменная localDualTree равна 1, может быть инициировано и обнаружено локальное двойственное дерево; когда переменная localDualTree равна 0, локальное двойственное дерево не инициируется.where treeType denotes the split tree structure type (eg, SINGLE_TREE, DUAL_TREE_LUMA, DUAL_TREE_CHROMA, etc.), slice_type denotes the type (eg, I, P, or B) of the current slice, and qtbtt_dual_tree_intra_flag denotes a flag for the global dual tree. When the variable localDualTree is 1, a local dual tree can be initiated and discovered; when the variable localDualTree is 0, the local dual tree is not initialized.

[126] На фиг. 9 показан пример (900) синтаксиса для обновления списка предсказаний палитры в некоторых примерах. В некоторых примерах, когда localDualtree равно 0, список предсказаний палитры может обновляться согласно примеру (900) синтаксиса; и когда localDualtree равно 1, процесс обновления согласно примеру (900) синтаксиса пропускается.[126] FIG. 9 shows an example (900) syntax for updating a list of palette predictions in some examples. In some examples, when localDualtree is 0, the list of palette predictions may be updated according to syntax example (900); and when localDualtree is equal to 1, the update process according to syntax example (900) is skipped.

[127] В примере, для блока, кодированного палитрой под структурой единого дерева, список предсказаний палитры может обновляться на основе блока. Например, treeType равно SINGLE_TREE, поэтому localDualtree равно 0. Кроме того, переменная startComp (например, начальный компонент цвета) установлена в 0, а переменная numComps (например, количество компонентов цвета) установлена в 1, когда кодируется только компонент яркости, и установлена в 3, когда кодируются и компонент яркости и компоненты цветности. Затем размер списка предикторов палитры (например, обозначенный PredictorPaletteSize) и записи списка предикторов палитры (например, обозначенные predictorPaletteEntries) могут быть обновлены согласно синтаксису (900).[127] In an example, for a block coded by palette under a single tree structure, the list of palette predictions may be updated on a block-by-block basis. For example, treeType is SINGLE_TREE, so localDualtree is 0. Also, the startComp variable (for example, the initial color component) is set to 0, and the numComps variable (for example, the number of color components) is set to 1 when only the luma component is encoded, and is set to 3 when both the luma component and the chrominance components are encoded. Then, the size of the palette predictor list (eg, denoted by PredictorPaletteSize) and the palette predictor list entries (eg, denoted by predictorPaletteEntries) can be updated according to the (900) syntax.

[128] В другом примере для блока яркости с кодированием палитры под глобальным двойственным деревом список предсказаний палитры может обновляться на основе блока. Например, в случаях двойственного дерева уровня CTU (глобальное двойственное дерево) treeType равно DUAL_TREE_LUMA, slice_type равно I, флаг глобального двойственного дерева qtbtt_dual_tree_intra_flag равен 1, таким образом, localDualtree равно 0. Кроме того, для переменной startComp установлено значение 0, а для numComps установлено значение 1. Затем размер списка предикторов палитры (например, обозначенный PredictorPaletteSize) и записи списка предикторов палитры (например, обозначенные predictorPaletteEntries) могут быть обновлены согласно синтаксису (900).[128] In another example, for a luminance block with palette coding under the global dual tree, the list of palette predictions may be updated on a per-block basis. For example, in CTU (global dual tree) level dual tree cases, treeType is DUAL_TREE_LUMA, slice_type is I, global dual tree flag qtbtt_dual_tree_intra_flag is 1, thus localDualtree is 0. Also, startComp is set to 0 and numComps is set to a value of 1. Then the size of the palette predictor list (eg, denoted by PredictorPaletteSize) and the palette predictor list entries (eg, denoted by predictorPaletteEntries) can be updated according to the (900) syntax.

[129] В другом примере для блока цветности, кодированного палитрой под глобальным двойственным деревом, список предсказаний палитры может обновляться на основе блока. Например, в случаях двойственного дерева уровня CTU (глобальное двойственное дерево) treeType равно DUAL_TREE_CHROMA, slice_type равно I, флаг глобального двойственного дерева qtbtt_dual_tree_intra_flag равен 1, таким образом, localDualtree равно 0. Кроме того, для переменной startComp установлено значение 1, а для numComps установлено значение 2. Затем размер списка предикторов палитры (например, обозначенный PredictorPaletteSize) и записи списка предикторов палитры (например, обозначенные predictorPaletteEntries) могут быть обновлены согласно синтаксису (900).[129] In another example, for a chrominance block coded by a palette under the global dual tree, the list of palette predictions may be updated on a block-by-block basis. For example, in CTU (global dual tree) level dual tree cases, treeType is DUAL_TREE_CHROMA, slice_type is I, global dual tree flag qtbtt_dual_tree_intra_flag is 1, so localDualtree is 0. Also, startComp is set to 1 and numComps is set to a value of 2. Then the size of the palette predictor list (eg, denoted by PredictorPaletteSize) and the palette predictor list entries (eg, denoted by predictorPaletteEntries) can be updated according to the (900) syntax.

[130] В другом примере для блока цветности, кодированного палитрой под локальным двойственным деревом, обновление списка предсказаний палитры может быть пропущено. Например, treeType равен DUAL TREE CHROMA, slice_type равен I, флаг глобального двойственного дерева qtbtt_dual_tree_intra_flag равен 0, таким образом, localDualtree равен 1. Затем процесс обновления согласно примеру синтаксиса (900) пропускается.[130] In another example, for a palette-coded chrominance block under the local dual tree, updating the palette prediction list may be omitted. For example, treeType is DUAL TREE CHROMA, slice_type is I, global dual tree flag qtbtt_dual_tree_intra_flag is 0, thus localDualtree is 1. Then, the update process according to syntax example (900) is skipped.

[131] Согласно другому аспекту раскрытия, когда используются конфигурации кодирования, которые могут инициировать использование локального двойственного дерева, режим кодирования на основе палитры запрещен для небольших блоков. Таким образом, можно избежать усложнения обновления списка предикторов палитры в случае локального двойственного дерева.[131] According to another aspect of the disclosure, when coding patterns are used that can trigger the use of a local dual tree, the palette-based coding mode is disabled for small blocks. In this way, the complexity of updating the list of palette predictors in the case of a local dual tree can be avoided.

[132] В примере, когда slice_type не равен I или, когда slice_type равен I, но флаг уровня слайса для включения (глобального) двойственного дерева (например, qtbtt_dual_tree_intra_flag) равен 0, локальное двойственное дерево может быть инициировано (например, localDualTree равно 1). Когда инициируется локальное двойственное дерево, небольшие блоки, такие как единица кодирования с шириной × высота < порогового значения, и т.п. не могут быть кодированы в режиме кодирования на основе палитры. В варианте осуществления пороговое значение определяется таким образом, что локальное двойственное дерево не используется, когда размер блока текущего дерева кодирования выше этого порогового значения. В некоторых примерах режим кодирования на основе палитры запрещен для небольших блоков яркости и небольших блоков цветности в структуре локального двойственного дерева. В некоторых примерах режим кодирования на основе палитры запрещен только для небольших блоков цветности под структурой локального двойственного дерева.[132] In an example, when slice_type is not equal to I, or when slice_type is equal to I, but the slice level flag for enabling a (global) dual tree (e.g., qtbtt_dual_tree_intra_flag) is 0, a local dual tree can be initiated (e.g., localDualTree is equal to 1) . When a local dual tree is initiated, small blocks such as a coding unit with width × height < threshold value, etc. cannot be encoded in palette-based encoding mode. In an embodiment, the threshold is determined such that the local dual tree is not used when the block size of the current coding tree is above this threshold. In some examples, the palette-based coding mode is disabled for small luminance blocks and small chrominance blocks in the local dual tree structure. In some examples, the palette-based coding mode is only disabled for small chroma blocks under the local dual tree structure.

[133] На фиг. 10 показан пример синтаксиса для определения в битовом потоке наличия флага (pred_mode_plt_flag), который указывает, используется ли режим кодирования на основе палитры для текущего блока. На фиг. 10, часть (1001) используется для применения ограничения размера, а часть (1002) используется для применения блока цветности и ограничения локального двойственного дерева. Например, когда блок маленький (например, ширина × высота меньше 16 для блока яркости или ширина × высота меньше 16 × SubWidthC × SubHeightC для блока цветности), часть (1001) может быть 0, таким образом в битовом потоке нет pre_mode_plt_flag для блока, и для блока запрещен режим кодирования на основе палитры.[133] FIG. 10 shows an example syntax for determining the presence of a flag (pred_mode_plt_flag) in a bitstream that indicates whether a palette-based coding mode is used for the current block. In FIG. 10, part (1001) is used to apply the size constraint, and part (1002) is used to apply the chrominance block and the local dual tree constraint. For example, when the block is small (for example, width × height is less than 16 for a luma block, or width × height is less than 16 × SubWidthC × SubHeightC for a chrominance block), the (1001) part may be 0, so there is no pre_mode_plt_flag for the block in the bitstream, and the block is disabled in palette-based coding mode.

[134] В примере для блока цветности в структуре локального двойственного дерева modeType равен MODE_TYPE_INTRA, a treeType равен DUAL_TREE_CHROMA, таким образом, часть (1002) может привести к 0. Таким образом, в битовом потоке отсутствует pred_mode_plt_flag для блока цветности, и, таким образом, режим кодирования на основе палитры запрещен для блока цветности. В другом примере для блока цветности глобального двойственного дерева modeType равен MODE_TYPE_ALL, а treeType равен DUAL_TREE_CHROMA, поэтому часть (1002) может привести к 1. Таким образом, блок цветности в структуре глобального двойственного дерева может быть закодирован в режиме кодирования на основе палитры. В другом примере для блока яркости в структуре локального двойственного дерева modeType равен MODE_TYPE_INTRA, a treeType равен DUAL_TREE_LUMA, таким образом, часть (1002) может привести к 1. Таким образом, блок яркости в структуре локального двойственного дерева может быть закодирован в режиме кодирования на основе палитры.[134] In the example, for a chroma block in a local dual tree structure, modeType is MODE_TYPE_INTRA and treeType is DUAL_TREE_CHROMA, so part (1002) may result in 0. Thus, there is no pred_mode_plt_flag for the chroma block in the bitstream, and thus , the palette-based coding mode is disabled for the chrominance block. In another example, for a global dual tree chroma box, modeType is MODE_TYPE_ALL and treeType is DUAL_TREE_CHROMA, so the (1002) part may result in 1. Thus, a chroma box in the global dual tree structure can be encoded in palette-based encoding mode. In another example, for a luminance block in the local dual tree structure, modeType is MODE_TYPE_INTRA and treeType is DUAL_TREE_LUMA, so part (1002) may result in 1. Thus, a luma block in the local dual tree structure can be encoded in a coding mode based on palettes.

[135] Согласно другому аспекту раскрытия, когда используется локальное двойственное дерево, максимально разрешенный размер палитры предиктора и размер палитры уменьшаются, например, вдвое. Уменьшение размера предикторов палитры и размера палитры может снизить сложность обновления. В некоторых примерах для каждой локальной области (меньше CTU), которая позволяет кодировать блоки яркости и цветности по отдельности (например, локальное двойственное дерево), максимально допустимый размер предиктора палитры и размер палитры устанавливаются равными половине размера для случая объединенной палитры (с использованием палитры, содержащей компоненты яркости и цветности).[135] According to another aspect of the disclosure, when a local dual tree is used, the maximum allowed predictor palette size and the palette size are reduced, for example, by half. Reducing the size of the palette predictors and the size of the palette can reduce the complexity of the update. In some examples, for each local area (less than the CTU) that allows luminance and chrominance blocks to be encoded separately (e.g., local dual tree), the maximum allowable palette predictor size and palette size are set to half the size for the merged palette case (using a palette, containing luma and chrominance components).

[136] В варианте осуществления максимально допустимый размер предиктора палитры и размер палитры составляют 63 и 31 соответственно для случая объединенной палитры. Затем при структуре локального двойственного дерева максимально допустимый размер предиктора палитры и размер палитры для режима кодирования блоков яркости на основе палитры устанавливаются равными 31 и 15 соответственно; и максимально допустимый размер предиктора палитры и размер палитры для режима кодирования блоков цветности на основе палитры установлены равными 31 и 15 соответственно.[136] In an embodiment, the maximum allowable palette predictor size and palette size are 63 and 31, respectively, for the merged palette case. Then, with the local dual tree structure, the maximum allowable palette predictor size and palette size for the palette-based luma block coding mode are set to 31 and 15, respectively; and the maximum allowable palette predictor size and palette size for the palette-based chrominance block coding mode are set to 31 and 15, respectively.

[137] На фиг. 11 показана блок-схема, описывающая процесс (1100) согласно варианту осуществления раскрытия. Процесс (1100) может использоваться при восстановлении блока. В различных вариантах осуществления процесс (1100) выполняется схемой обработки, например схемой обработки в оконечных устройствах (310), (320), (330) и (340), причем схема обработки выполняет функции видеокодера (403), схема обработки выполняет функции видеодекодера (410), схема обработки выполняет функции видеодекодера (510), схема обработки выполняет функции видеокодера (603), и т.п. В некоторых вариантах осуществления процесс (1100) реализован в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки выполняет процесс (1100). Процесс начинается с (S1101) и переходит к (S1110).[137] FIG. 11 is a flow chart describing a process (1100) according to an embodiment of the disclosure. Process (1100) may be used in block recovery. In various embodiments, process (1100) is performed by a processing circuit, for example, a processing circuit in terminal devices (310), (320), (330) and (340), wherein the processing circuit performs the functions of a video encoder (403), the processing circuit performs the functions of a video decoder ( 410), a processing circuit functions as a video decoder (510), a processing circuit functions as a video encoder (603), and the like. In some embodiments, the process (1100) is implemented in program instructions, such that when the processing circuitry executes the program instructions, the processing circuitry executes the process (1100). The process starts at (S1101) and proceeds to (S1110).

[138] На этапе (S1110) информация предсказания блока декодируется из кодированного битового потока видео.[138] In step (S1110), block prediction information is decoded from the encoded video bitstream.

[139] На этапе (S1120) определяется, разрешить ли режим кодирования на основе палитры для блока, на основе сравнения размера блока с пороговым значением.[139] In step (S1120), it is determined whether to enable the palette-based coding mode for the block based on comparing the block size with a threshold value.

[140] На этапе (S1130) определяется, находится ли блок под структурой локального двойственного дерева.[140] In step (S1130), it is determined whether the block is under the local dual tree structure.

[141] На этапе (S1140) блок декодируется на основе определения, разрешить ли режим кодирования на основе палитры для блока, и определения, находится ли блок под структурой локального двойственного дерева.[141] In step (S1140), the block is decoded based on determining whether to enable the palette-based coding mode for the block and determining whether the block is under the local dual tree structure.

[142] В некоторых вариантах осуществления режим кодирования на основе палитры для блока запрещается в ответ на то, что размер блока меньше порогового значения. Например, когда условие (1001) не удовлетворяется для блока, режим кодирования на основе палитры запрещается. В некоторых примерах пороговое значение определяется таким образом, что структура локального двойственного дерева не используется, когда размер блока превышает пороговое значение.[142] In some embodiments, the palette-based coding mode for a block is disabled in response to the block size being less than a threshold. For example, when condition (1001) is not satisfied for a block, the palette-based coding mode is disabled. In some examples, the threshold is determined such that the local dual tree structure is not used when the block size exceeds the threshold.

[143] В варианте осуществления режим кодирования на основе палитры для блока запрещается в ответ на то, что блок является блоком цветности и размер блока цветности меньше порогового значения. В одном примере режим кодирования на основе палитры может использоваться в маленьких блоках яркости, но не в маленьких блоках цветности.[143] In an embodiment, the palette-based coding mode for a block is disabled in response to the fact that the block is a chroma block and the size of the chroma block is less than a threshold value. In one example, the palette-based coding mode may be used in small luminance blocks, but not in small chrominance blocks.

[144] В другом варианте осуществления режим кодирования на основе палитры запрещается для блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева. В примере для декодирования блока, когда тип режима равен MODE_TYPE_INTRA, а тип дерева равен DUAL_TREE_CHROMA, так что значение условия (1002) равно 0, тогда режим кодирования на основе палитры для блока запрещен.[144] In another embodiment, a palette-based coding mode is disabled for a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. In the example for block decoding, when the mode type is MODE_TYPE_INTRA and the tree type is DUAL_TREE_CHROMA, so that the condition value (1002) is 0, then the palette-based encoding mode for the block is disabled.

[145] В некоторых вариантах осуществления, когда разрешен режим кодирования на основе палитры, декодируется флаг (например, pred_mode_plt_flag), указывающий, используется ли режим кодирования на основе палитры в блоке. В ответ на флаг, указывающий на использование режима кодирования на основе палитры в блоке, блок декодируется с использованием режима кодирования на основе палитры. В некоторых вариантах осуществления, в ответ на то, что блок находится под структурой локального двойственного дерева, обновление списка предикторов палитры может быть опущено или пропущено.[145] In some embodiments, when the palette-based coding mode is enabled, a flag (eg, pred_mode_plt_flag) is decoded indicating whether the palette-based coding mode is used in the block. In response to a flag indicating the use of the palette-based coding mode in the block, the block is decoded using the palette-based coding mode. In some embodiments, in response to the block being under the local dual tree structure, updating the list of palette predictors may be omitted or omitted.

[146] В некоторых примерах список предикторов палитры обновляется на основе палитры, используемой при декодировании обновления блока, в ответ на отсутствие инициатора структуры локального двойственного дерева. В примере переменная localDualTree используется для определения, инициировано ли локальное двойственное дерево. Например, когда переменная localDualTree равна 0, может быть выполнено обновление списка предикторов палитры на основе текущей палитры блока. В примере, когда переменная localDualTree равна 1, обновление списка предикторов палитры на основе текущей палитры блока пропускается. В другом примере, когда переменная localDualTree равна 1, список предикторов палитры может обновляться, когда блок является блоком яркости, и пропускается, когда блок является блоком цветности.[146] In some examples, the list of palette predictors is updated based on the palette used in block update decoding, in response to the absence of a local dual tree structure initiator. The example uses the variable localDualTree to determine if a local dual tree has been initiated. For example, when the variable localDualTree is 0, the list of palette predictors can be updated based on the block's current palette. In the example, when the localDualTree variable is set to 1, updating the list of palette predictors based on the block's current palette is skipped. In another example, when the localDualTree variable is equal to 1, the palette predictor list may be updated when the block is a luma block and skipped when the block is a chrominance block.

[147] В другом варианте осуществления в случае блоков в структуре локального двойственного дерева максимальный размер палитры и максимальный размер списка предикторов палитры уменьшено, например, вдвое. В некоторых примерах, когда для блока разрешен режим кодирования на основе палитры, декодируется флаг, указывающий, используется ли в блоке режим кодирования на основе палитры. Затем, когда флаг указывает использование режима кодирования на основе палитры в блоке и блок находится в структуре локального двойственного дерева, блок декодируется на основе палитры, имеющей уменьшенный максимальный размер палитры. Например, обычный максимальный размер палитры - 31, а уменьшенный максимальный размер палитры - 15. Кроме того, список предикторов палитры обновляется на основе палитры, используемой при декодировании блока, и размер списка предикторов палитры ограничивается уменьшенным максимальным размером для списка предикторов палитры. Например, обычный максимальный размер списка предикторов палитры - 63, а уменьшенный максимальный размер списка предикторов палитры - 31.[147] In another embodiment, in the case of blocks in a local dual tree structure, the maximum palette size and the maximum palette predictor list size are reduced, for example, by half. In some examples, when a palette-based encoding mode is enabled for a block, a flag indicating whether the palette-based encoding mode is used in the block is decoded. Then, when the flag indicates the use of a palette-based coding mode in a block, and the block is in the local binary tree structure, the block is decoded based on a palette having a reduced maximum palette size. For example, the normal maximum palette size is 31, and the reduced maximum palette size is 15. In addition, the palette predictor list is updated based on the palette used in block decoding, and the palette predictor list size is limited by the reduced maximum size for the palette predictor list. For example, the normal maximum size of a palette predictor list is 63, but the reduced maximum size of a palette predictor list is 31.

[148] Затем процесс переходит к (S1199) и завершается.[148] Then, the process proceeds to (S1199) and ends.

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

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

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

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

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

[154] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из следующих элементов (только по одному из каждого изображено): клавиатура (1201), мышь (1202), трекпад (1203), сенсорный экран (1210), управляющая перчатка (не показана), джойстик (1205), микрофон (1206), сканер (1207), камера (12308).[154] Human interface input devices may include one or more of the following (only one of each is shown): keyboard (1201), mouse (1202), trackpad (1203), touch screen (1210), control glove (not shown), joystick (1205), microphone (1206), scanner (1207), camera (12308).

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

[156] Компьютерная система (1200) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1220) с CD/DVD или подобными носителями (1221), флэш-накопитель (1222), съемный жесткий диск или твердотельный накопитель (1223), ранее разработанные магнитные носители, такие как лента и дискета (не изображены), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не изображены) и т.п.[156] 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 or similar media (1221), flash drive (1222), removable hard drive or solid state drive (1223), previously developed magnetic media such as tape and floppy disk (not shown), specialized ROM/ASIC/PLD based devices such as dongles (not shown) and so on.

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

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

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

[160] Ядро (1240) может включать в себя один или более центральных процессоров (CPU) (1241), графических процессоров (GPU) (1242), специализированных программируемых процессоров в виде программируемых вентильных областей (FPGA) (1243), аппаратного обеспечения (1244), и т.д. Эти устройства, наряду с постоянной памятью (ROM) (1245), памятью с произвольным доступом (1246), внутренними запоминающими устройствами, такими как внутренние жесткие диски, не доступные пользователю, твердотельные накопители и т.п. (1247), могут быть подключены через системную шину (1248). В некоторых компьютерных системах системная шина (1248) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1248) ядра, либо через периферийную шину (1249). Архитектуры для периферийной шины включают PCI, USB и т.п.[160] The core (1240) may include one or more central processing units (CPUs) (1241), graphics processing units (GPUs) (1242), dedicated programmable gate programmable area (FPGA) processors (1243), hardware ( 1244), etc. These devices, along with read-only memory (ROM) (1245), random access memory (1246), internal storage devices such as internal non-user hard drives, solid state drives, and the like. (1247) can be connected via the system bus (1248). In some computer systems, the system bus (1248) may be available as one or more physical connectors to allow expansion 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). Peripheral bus architectures include PCI, USB, and the like.

[161] CPU (1241), GPU (1242), FGPA (1243) и ускорители (1244) могут исполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (1245) или RAM (1246). Переходные данные также могут храниться в RAM (1246), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1247). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть разрешены за счет использования кэш-памяти, которая может быть тесно связана с одним или более CPU (1241), GPU (1242), ЗУ большой емкости (1247), ROM (1245), RAM (1246) и т.п.[161] CPUs (1241), GPUs (1242), FGPAs (1243), and accelerators (1244) may execute certain instructions, which in combination 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 permanent data may be stored, for example, in an internal mass storage (1247). Fast storage and retrieval to any of the storage devices can be enabled through the use of cache memory, which can be tightly coupled to one or more CPU (1241), GPU (1242), mass storage (1247), ROM (1245), RAM (1246) etc.

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

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

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

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

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

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

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

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

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

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

GOPs: группы изображенийGOPs: groups of images

TUs: единицы преобразования,TUs: conversion units,

PUs: единицы предсказанияPUs: prediction units

CTUs: единицы дерева кодированияCTUs: coding tree units

CTBs: блоки дерева кодированияCTBs: coding tree blocks

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

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

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

CPUs (ЦП): центральные процессорыCPUs (CPUs): central processing units

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Claims (97)

1. Способ декодирования видео в декодере, содержащий:1. Method for decoding video in a decoder, comprising: декодирование, посредством процессора, информации предсказания блока из кодированного битового потока видео;decoding, by the processor, block prediction information from the encoded video bitstream; определение, посредством процессора, разрешить ли для блока режим кодирования на основе палитры, на основе сравнения размера блока с пороговым значением;determining, by the processor, whether to enable the block in a palette-based coding mode based on a comparison of the block size with a threshold value; определение, посредством процессора, находится ли блок под структурой локального двойственного дерева, на основе информации предсказания; и determining, by the processor, whether the block is under the local dual tree structure based on the prediction information; And декодирование, посредством процессора, блока на основе определения, разрешить ли режим кодирования на основе палитры для блока, и определения, находится ли блок под структурой локального двойственного дерева. decoding, by the processor, the block based on determining whether to enable the paletted encoding mode for the block, and determining whether the block is under a local dual tree structure. 2. Способ по п. 1, дополнительно содержащий:2. The method according to p. 1, further comprising: запрещение режима кодирования на основе палитры для блока в ответ на то, что размер блока меньше порогового значения.disabling the paletted coding mode for the block in response to the block size being less than a threshold. 3. Способ по п. 1, в котором пороговое значение определяется так, чтобы запрещать структуру локального двойственного дерева в ответ на то, что размер блока превышает пороговое значение. 3. The method of claim 1, wherein the threshold is determined to disable the local dual tree structure in response to a block size exceeding the threshold. 4. Способ по п. 1, дополнительно содержащий:4. The method according to p. 1, further comprising: запрещение режима кодирования на основе палитры для блока в ответ на то, что блок является блоком цветности и размер блока цветности меньше порогового значения. disabling the paletted coding mode for the block in response to the fact that the block is a chrominance block and the size of the chrominance block is less than a threshold value. 5. Способ по п. 1, дополнительно содержащий:5. The method according to p. 1, further comprising: запрещение режима кодирования на основе палитры для блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева. inhibiting a palette-based coding mode for a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. 6. Способ по п. 1, дополнительно содержащий:6. The method according to p. 1, further comprising: декодирование, из кодированного битового потока видео, флага, указывающего, используется ли режим кодирования на основе палитры в блоке, в ответ на разрешение режима кодирования на основе палитры; decoding, from the encoded video bitstream, a flag indicating whether a palette-based coding mode is used in the block, in response to enabling the palette-based coding mode; декодирование блока с использованием режима кодирования на основе палитры в ответ на флаг, указывающий на использование режима кодирования на основе палитры в блоке; иdecoding the block using a palette-based coding mode in response to a flag indicating the use of a palette-based coding mode in the block; And пропуск обновления списка предикторов палитры в ответ на то, что блок находится под структурой локального двойственного дерева.skipping updating the list of palette predictors in response to the block being under the local dual tree structure. 7. Способ по п. 6, дополнительно содержащий:7. The method according to p. 6, further comprising: обновление, в ответ на отсутствие инициирования структуры локального двойственного дерева, списка предикторов палитры на основе палитры, используемой в декодировании блока. updating, in response to not initiating a local dual tree structure, a list of palette predictors based on the palette used in block decoding. 8. Способ по п. 1, дополнительно содержащий:8. The method according to p. 1, further comprising: декодирование, из кодированного битового потока видео, флага, указывающего, используется ли режим кодирования на основе палитры в блоке, в ответ на разрешение режима кодирования на основе палитры; иdecoding, from the encoded video bitstream, a flag indicating whether a palette-based coding mode is used in the block, in response to enabling the palette-based coding mode; And декодирование блока на основе палитры, имеющей уменьшенный максимальный размер, в ответ на флаг, указывающий на использование в блоке режима кодирования на основе палитры и нахождение блока под структурой локального двойственного дерева.decoding the block based on a palette having a reduced maximum size, in response to a flag indicating the use of a palette-based coding mode in the block, and finding the block under a local dual tree structure. 9. Способ по п. 8, дополнительно содержащий:9. The method of claim 8, further comprising: обновление списка предикторов палитры на основе палитры, используемой при декодировании блока, причем размер списка предикторов палитры ограничивается уменьшенным максимальным размером. updating the palette predictor list based on the palette used in decoding the block, with the size of the palette predictor list limited to a reduced maximum size. 10. Устройство для декодирования видео, содержащее:10. A video decoding device, comprising: схему обработки, конфигурированную для:processing scheme configured for: декодирования информации предсказания блока из кодированного битового потока видео;decoding block prediction information from the encoded video bitstream; определения, разрешить ли для блока режим кодирования на основе палитры, на основе сравнения размера блока с пороговым значением;determining whether to allow the block to a palette-based coding mode based on comparing the block size with a threshold value; определения, находится ли блок под структурой локального двойственного дерева, на основе информации предсказания; и determining whether the block is under the local dual tree structure based on the prediction information; And декодирования блока на основе определения, разрешить ли режим кодирования на основе палитры для блока, и определения, находится ли блок под структурой локального двойственного дерева. decoding the block based on determining whether to enable a palette-based encoding mode for the block, and determining whether the block is under a local dual tree structure. 11. Устройство по п. 10, в котором схема обработки конфигурирована для:11. The apparatus of claim 10, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для блока в ответ на то, что размер блока меньше порогового значения.inhibiting the paletted coding mode for the block in response to the block size being less than a threshold value. 12. Устройство по п. 10, в котором пороговое значение определяется так, чтобы запрещать структуру локального двойственного дерева в ответ на то, что размер блока превышает пороговое значение. 12. The apparatus of claim 10, wherein the threshold is defined to disable the local dual tree structure in response to a block size exceeding the threshold. 13. Устройство по п. 10, в котором схема обработки конфигурирована для: запрещения режима кодирования на основе палитры для блока в ответ на то, что блок является блоком цветности и размер блока цветности меньше порогового значения. 13. The apparatus of claim 10, wherein the processing circuitry is configured to: disable the palette-based coding mode for the block in response to the block being a chrominance block and the size of the chrominance block being less than a threshold value. 14. Устройство по п. 10, в котором схема обработки конфигурирована для:14. The apparatus of claim 10, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева. prohibiting a palette-based coding mode for a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. 15. Устройство по п. 10, в котором схема обработки конфигурирована для:15. The apparatus of claim 10, wherein the processing circuitry is configured to: декодирования, из кодированного битового потока видео, флага, указывающего, используется ли режим кодирования на основе палитры в блоке, в ответ на разрешение режима кодирования на основе палитры; decoding, from the encoded video bitstream, a flag indicating whether a palette-based coding mode is used in the block, in response to enabling the palette-based coding mode; декодирования блока с использованием режима кодирования на основе палитры в ответ на флаг, указывающий на использование режима кодирования на основе палитры в блоке; иdecoding the block using a palette-based coding mode in response to a flag indicating the use of a palette-based coding mode in the block; And пропускания обновления списка предикторов палитры в ответ на то, что блок находится под структурой локального двойственного дерева.skipping updating the list of palette predictors in response to the block being under the local dual tree structure. 16. Устройство по п. 15, в котором схема обработки конфигурирована для:16. The apparatus of claim 15, wherein the processing circuitry is configured to: обновления, в ответ на отсутствие инициирования структуры локального двойственного дерева, списка предикторов палитры на основе палитры, используемой в декодировании блока. updating, in response to not initiating a local dual tree structure, a list of palette predictors based on the palette used in block decoding. 17. Устройство по п. 10, в котором схема обработки конфигурирована для:17. The apparatus of claim 10, wherein the processing circuitry is configured to: декодирования, из кодированного битового потока видео, флага, указывающего, используется ли режим кодирования на основе палитры в блоке, в ответ на разрешение режима кодирования на основе палитры; иdecoding, from the encoded video bitstream, a flag indicating whether a palette-based coding mode is used in the block, in response to enabling the palette-based coding mode; And декодирования блока на основе палитры, имеющей уменьшенный максимальный размер, в ответ на флаг, указывающий на использование в блоке режима кодирования на основе палитры и нахождение блока под структурой локального двойственного дерева.decoding the block based on a palette having a reduced maximum size, in response to a flag indicating that the block is using a palette-based coding mode and that the block is under a local dual tree structure. 18. Устройство по п. 17, в котором схема обработки конфигурирована для:18. The apparatus of claim 17, wherein the processing circuitry is configured to: обновления списка предикторов палитры на основе палитры, используемой при декодировании блока, причем размер списка предикторов палитры ограничивается уменьшенным максимальным размером. updating the palette predictor list based on the palette used in decoding the block, the palette predictor list being limited to a reduced maximum size. 19. Невременный машиночитаемый носитель, хранящий инструкции, которые при исполнении компьютером для декодирования видео предписывают компьютеру выполнять:19. A non-transitory computer-readable medium that stores instructions that, when executed by a video decoding computer, cause the computer to perform: декодирование информации предсказания блока из кодированного битового потока видео;decoding block prediction information from the encoded video bitstream; определение, разрешить ли для блока режим кодирования на основе палитры, на основе сравнения размера блока с пороговым значением;determining whether to allow the block to a palette-based coding mode based on comparing the block size with a threshold value; определение, находится ли блок под структурой локального двойственного дерева, на основе информации предсказания; и determining whether the block is under the local dual tree structure based on the prediction information; And декодирование блока на основе определения, разрешить ли режим кодирования на основе палитры для блока, и определения, находится ли блок под структурой локального двойственного дерева. decoding the block based on determining whether to enable a palette-based encoding mode for the block, and determining whether the block is under a local dual tree structure. 20. Невременный машиночитаемый носитель по п. 19, причем инструкции предписывают компьютеру выполнять:20. The non-transitory computer-readable medium of claim 19, wherein the instructions cause the computer to do: запрещение режима кодирования на основе палитры для блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева.inhibiting a palette-based coding mode for a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. 21. Способ кодирования видео в кодере, содержащий:21. A method for encoding video in an encoder, comprising: определение, посредством процессора, находится ли блок под структурой локального двойственного дерева;determining, by the processor, whether the block is under a local dual tree structure; определение, посредством процессора, является ли размер блока меньше заранее определенного порогового значения; иdetermining, by the processor, whether the block size is less than a predetermined threshold; And разрешение, посредством процессора, режима кодирования на основе палитры для кодирования блока в ответ на то, что блок не находится под структурой локального двойственного дерева и размер блока меньше заранее определенного порогового значения.allowing, by the processor, a palette-based coding mode to encode the block in response to the fact that the block is not under the local dual tree structure and the block size is less than a predetermined threshold. 22. Способ по п. 21, дополнительно содержащий:22. The method of claim 21, further comprising: запрещение режима кодирования на основе палитры для кодирования блока в ответ на то, что блок находится под структурой локального двойственного дерева и размер блока меньше заранее определенного порогового значения.disabling a palette-based encoding mode for encoding the block in response to the block being under the local dual tree structure and the block size being less than a predetermined threshold. 23. Способ по п. 21, дополнительно содержащий:23. The method of claim 21, further comprising: запрещение режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является конкретным цветовым компонентом и находится под структурой локального двойственного дерева.disabling a palette-based encoding mode for encoding a block in response to the fact that the block is a particular color component and is under a local dual tree structure. 24. Способ по п. 23, дополнительно содержащий:24. The method of claim 23, further comprising: запрещение режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является компонентом цветности и находится под структурой локального двойственного дерева.disabling the palette-based encoding mode for encoding the block in response to the block being a chrominance component and being under a local dual tree structure. 25. Способ по п. 23, дополнительно содержащий:25. The method of claim 23, further comprising: запрещение режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является компонентом яркости и находится под структурой локального двойственного дерева.disabling a palette-based encoding mode for block encoding in response to the block being a luma component and being under a local dual tree structure. 26. Способ по п. 21, дополнительно содержащий:26. The method of claim 21, further comprising: кодирование блока на основе определения, разрешить ли режим кодирования на основе палитры для кодирования блока, и определения, находится ли блок под структурой локального двойственного дерева.encoding the block based on determining whether to allow a palette-based encoding mode for encoding the block, and determining whether the block is under a local dual tree structure. 27. Способ по п. 21, в котором заранее определенное пороговое значение определяется так, чтобы запрещать структуру локального двойственного дерева в ответ на то, что размер блока превышает заранее определенное пороговое значение.27. The method of claim 21, wherein the predetermined threshold is determined to disable the local dual tree structure in response to a block size exceeding the predetermined threshold. 28. Способ по п. 21, дополнительно содержащий:28. The method of claim 21, further comprising: определение, является ли область блока меньше заранее определенного порогового значения.determining whether the block area is less than a predetermined threshold. 29. Способ по п. 21, дополнительно содержащий:29. The method of claim 21, further comprising: запрещение режима кодирования на основе палитры для кодирования блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева.inhibiting a palette-based coding mode for encoding a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. 30. Способ по п. 21, дополнительно содержащий:30. The method of claim 21, further comprising: кодирование флага в битовом потоке видео, который несет кодированный блок, соответствующий блоку, для указания того, используется ли в блоке режим кодирования на основе палитры, в ответ на разрешение режима кодирования на основе палитры.encoding a flag in the video bitstream that carries an encoded block corresponding to the block to indicate whether the block uses a palette-based coding mode in response to enabling the palette-based coding mode. 31. Устройство для кодирования видео, содержащее:31. Device for encoding video, containing: схему обработки, конфигурированную для:processing scheme configured for: определения, находится ли блок под структурой локального двойственного дерева;determining whether the block is under a local dual tree structure; определения, является ли размер блока меньше заранее определенного порогового значения; иdetermining whether the block size is less than a predetermined threshold value; And разрешения режима кодирования на основе палитры для кодирования блока в ответ на то, что блок не находится под структурой локального двойственного дерева и размер блока меньше заранее определенного порогового значения.permitting a palette-based encoding mode to encode the block in response to the fact that the block is not under the local dual tree structure and the block size is less than a predetermined threshold. 32. Устройство по п. 31, в котором схема обработки конфигурирована для:32. The apparatus of claim 31, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для кодирования блока в ответ на то, что блок находится под структурой локального двойственного дерева и размер блока меньше заранее определенного порогового значения.inhibiting a palette-based coding mode for encoding the block in response to the block being under the local dual tree structure and the block size being less than a predetermined threshold. 33. Устройство по п. 31, в котором схема обработки конфигурирована для:33. The apparatus of claim 31, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является конкретным цветовым компонентом и находится под структурой локального двойственного дерева.prohibiting a palette-based encoding mode for encoding a block in response to the fact that the block is a particular color component and is under a local dual tree structure. 34. Устройство по п. 33, в котором схема обработки конфигурирована для:34. The apparatus of claim 33, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является компонентом цветности и находится под структурой локального двойственного дерева.prohibiting a palette-based encoding mode to encode the block in response to the block being a chrominance component and being under a local dual tree structure. 35. Устройство по п. 33, в котором схема обработки конфигурирована для:35. The apparatus of claim 33, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для кодирования блока в ответ на то, что блок является компонентом яркости и находится под структурой локального двойственного дерева.prohibiting a paletted encoding mode to encode the block in response to the block being a luma component and being under a local dual tree structure. 36. Устройство по п. 31, в котором схема обработки конфигурирована для:36. The apparatus of claim 31, wherein the processing circuitry is configured to: кодирования блока на основе определения, разрешить ли режим кодирования на основе палитры для кодирования блока, и определения, находится ли блок под структурой локального двойственного дерева.encoding the block based on determining whether to allow a palette-based encoding mode for encoding the block, and determining whether the block is under a local dual tree structure. 37. Устройство по п. 31, в котором схема обработки конфигурирована для:37. The apparatus of claim 31, wherein the processing circuitry is configured to: определения, является ли область блока меньше заранее определенного порогового значения.determining whether the block area is less than a predetermined threshold. 38. Устройство по п. 31, в котором заранее определенное пороговое значение определяется так, чтобы запрещать структуру локального двойственного дерева в ответ на то, что размер блока превышает заранее определенное пороговое значение.38. The apparatus of claim 31, wherein the predetermined threshold is determined to disable the local dual tree structure in response to a block size exceeding the predetermined threshold. 39. Устройство по п. 31, в котором схема обработки конфигурирована для:39. The apparatus of claim 31, wherein the processing circuitry is configured to: запрещения режима кодирования на основе палитры для кодирования блока на основе комбинации типа режима и типа дерева блока, которая указывает, что блок является блоком цветности под структурой локального двойственного дерева.inhibiting a palette-based coding mode for encoding a block based on a combination of mode type and block tree type, which indicates that the block is a chrominance block under a local dual tree structure. 40. Устройство по п. 31, в котором схема обработки конфигурирована для:40. The apparatus of claim 31, wherein the processing circuitry is configured to: кодирования флага в битовом потоке видео, который несет кодированный блок, соответствующий блоку, для указания, используется ли в блоке режим кодирования на основе палитры, в ответ на разрешение режима кодирования на основе палитры.encoding a flag in the video bitstream that carries an encoded block corresponding to the block to indicate whether the block uses a palette-based coding mode in response to enabling the palette-based coding mode. 41. Невременный машиночитаемый носитель, хранящий инструкции, которые при исполнении компьютером для кодирования видео предписывают компьютеру выполнять способ по любому из пп. 21-30.41. A non-transitory computer-readable medium that stores instructions that, when executed by a video encoding computer, instructs the computer to perform the method according to any one of paragraphs. 21-30.
RU2021129828A 2020-01-20 2021-01-13 Method and device for coding mode based on palette under local dual tree structure RU2801430C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/963,216 2020-01-20
US17/097,415 2020-11-13

Publications (1)

Publication Number Publication Date
RU2801430C1 true RU2801430C1 (en) 2023-08-10

Family

ID=

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EA201791616A1 (en) * 2015-01-29 2017-11-30 Квэлкомм Инкорпорейтед CODING IN PALETTE MODE FOR VIDEO DATA CODING
WO2017206805A1 (en) * 2016-05-28 2017-12-07 Mediatek Inc. Method and apparatus of palette mode coding for colour video data
RU2641252C2 (en) * 2013-07-12 2018-01-16 Квэлкомм Инкорпорейтед Palettized prediction at encoding video based on palettes
RU2686559C2 (en) * 2015-01-29 2019-04-29 Кэнон Кабусики Кайся Performing indicator for paletraising during encoding or decoding of independent codorated structures

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2641252C2 (en) * 2013-07-12 2018-01-16 Квэлкомм Инкорпорейтед Palettized prediction at encoding video based on palettes
EA201791616A1 (en) * 2015-01-29 2017-11-30 Квэлкомм Инкорпорейтед CODING IN PALETTE MODE FOR VIDEO DATA CODING
RU2686559C2 (en) * 2015-01-29 2019-04-29 Кэнон Кабусики Кайся Performing indicator for paletraising during encoding or decoding of independent codorated structures
WO2017206805A1 (en) * 2016-05-28 2017-12-07 Mediatek Inc. Method and apparatus of palette mode coding for colour video data

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JING YE et al. CE15-related: palette mode when dual-tree is enabled, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-L0308, 12th Meeting: Macao, 3-12 October 2018. YUNG-HSUAN CHAO et al., CE8-2.1: Palette mode in HEVC, Joint Video Experts Team (JVET) of ITU-T SG 16 WP3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-O0119, 15th Meeting: Gothenburg, 3-12 July 2019. *
WEIJIA ZHU et al. CE8-2.3: Compound Palette Mode, Joint Video Experts Team (JVET) of ITU-T SG16 WP3 and ISO/IEC JTC 1/SC 29/WG11, 15th Meeting, JVET-O0071-v1, Gothenburg, 3-12 July 2019. *

Similar Documents

Publication Publication Date Title
JP7257535B2 (en) Improved Residual Coding for Transform Skip Mode and Block Differential Pulse Code Modulation
AU2020351099B2 (en) Method and apparatus for cross-component filtering
KR20200128138A (en) Method and apparatus for video coding
US11616962B2 (en) Method and apparatus for video coding
JP7343668B2 (en) Method and apparatus for color conversion in VVC
US20200389667A1 (en) Method and apparatus for video coding
WO2020027988A1 (en) Constraints on coding unit partition
US20200021851A1 (en) Methods and apparatus for most probable mode derivation
JP2024016286A (en) Video coding method and device
JP2023171905A (en) Method and apparatus for palette-based coding mode under local dual tree structure
EP4081977A1 (en) Method and apparatus for video coding
JP7267404B2 (en) Video encoding and decoding method, apparatus and computer program therefor
KR20220059550A (en) Method and apparatus for video coding
RU2801430C1 (en) Method and device for coding mode based on palette under local dual tree structure
RU2801586C1 (en) Method and device for signalling flag of pass mode
RU2780424C1 (en) Method and apparatus for video encoding
US11330306B2 (en) Method and apparatus for video coding
US11140388B2 (en) Method and apparatus for non-linear loop filtering
US11973990B2 (en) Signaling for modified deblocking filter operations
US11876970B2 (en) Non-interleaved separate tree
RU2796261C1 (en) Minimum coding block size range for video encoding
WO2023059977A1 (en) Improvement on mpm list construction
WO2021211347A1 (en) Method and apparatus for video coding