RU2788835C1 - Method and apparatus for encoding video data - Google Patents
Method and apparatus for encoding video data Download PDFInfo
- Publication number
- RU2788835C1 RU2788835C1 RU2021131107A RU2021131107A RU2788835C1 RU 2788835 C1 RU2788835 C1 RU 2788835C1 RU 2021131107 A RU2021131107 A RU 2021131107A RU 2021131107 A RU2021131107 A RU 2021131107A RU 2788835 C1 RU2788835 C1 RU 2788835C1
- Authority
- RU
- Russia
- Prior art keywords
- block
- intra
- mts
- transform
- hls
- Prior art date
Links
- 230000001131 transforming Effects 0.000 claims abstract description 84
- 238000006243 chemical reaction Methods 0.000 claims abstract description 33
- 239000011159 matrix material Substances 0.000 claims description 41
- 238000000034 method Methods 0.000 claims description 36
- 210000003702 immature single positive T cell Anatomy 0.000 claims 3
- 230000011664 signaling Effects 0.000 abstract description 8
- 230000000694 effects Effects 0.000 abstract 1
- 239000000126 substance Substances 0.000 abstract 1
- 238000007906 compression Methods 0.000 description 25
- 230000000875 corresponding Effects 0.000 description 23
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 15
- 238000005516 engineering process Methods 0.000 description 15
- 238000000844 transformation Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 11
- 230000004048 modification Effects 0.000 description 11
- 238000006011 modification reaction Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 10
- 241000023320 Luma <angiosperm> Species 0.000 description 8
- 230000005540 biological transmission Effects 0.000 description 8
- 239000000203 mixture Substances 0.000 description 8
- 238000006073 displacement reaction Methods 0.000 description 7
- 230000002123 temporal effect Effects 0.000 description 7
- 230000002093 peripheral Effects 0.000 description 5
- 230000003044 adaptive Effects 0.000 description 4
- 238000009877 rendering Methods 0.000 description 4
- 230000001702 transmitter Effects 0.000 description 4
- 230000000007 visual effect Effects 0.000 description 4
- 230000001419 dependent Effects 0.000 description 3
- 229940116821 SSD Drugs 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 2
- 230000002457 bidirectional Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000001413 cellular Effects 0.000 description 2
- 230000001276 controlling effect Effects 0.000 description 2
- 101700018804 dct-5 Proteins 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 230000003287 optical Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000000638 solvent extraction Methods 0.000 description 2
- 101710010311 CLEC18A Proteins 0.000 description 1
- 210000002381 Plasma Anatomy 0.000 description 1
- 239000000969 carrier Substances 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000009795 derivation Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000014509 gene expression Effects 0.000 description 1
- 230000007274 generation of a signal involved in cell-cell signaling Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 230000002085 persistent Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 230000035945 sensitivity Effects 0.000 description 1
- 230000035943 smell Effects 0.000 description 1
- 239000000779 smoke Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000000153 supplemental Effects 0.000 description 1
Images
Abstract
Description
ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИINCLUSION BY LINK
[0001] По настоящей заявке испрашивается приоритет согласно заявке на выдачу патента США №16/878,390 "Способ и устройство для кодирования видеоданных", поданной 19 мая 2020 года, по которой испрашивался приоритет согласно предварительной заявке на выдачу патента США №62/860,149 "Управление посредством синтаксиса высокого уровня при включении неявного выбора преобразования", поданной 11 июня 2019 года. Содержание предшествующих заявок полностью включено в настоящее описание путем ссылки.[0001] The present application claims priority under U.S. Patent Application No. 16/878,390 "Method and Apparatus for Encoding Video Data", filed May 19, 2020, which claimed priority under U.S. Provisional Patent Application No. 62/860,149 "Control through high-level syntax when implicit conversion selection is enabled", filed June 11, 2019. The contents of prior applications are incorporated herein by reference in their entirety.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES
[0002] В настоящей заявке описаны варианты осуществления изобретения, в целом относящиеся к кодированию видеоданных.[0002] This application describes embodiments of the invention generally related to video coding.
ПРЕДПОСЫЛКИ СОЗДАНИЯ ИЗОБРЕТЕНИЯBACKGROUND OF THE INVENTION
[0003] Описание уровня техники приведено здесь для представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники для настоящего изобретения.[0003] The description of the prior art is given here to represent the overall context of the invention. The work of the authors of the invention, to the extent that it is described in this section, as well as aspects of the description that cannot be qualified as state of the art at the time of filing, neither expressly nor impliedly recognized as the state of the art for the present invention.
[0004] Кодирование и декодирование видеоданных может осуществляться с использованием внешнего предсказания изображения с компенсацией движения. Цифровое видео без сжатия может включать последовательность изображений, каждое из которых имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.[0004] Encoding and decoding of video data may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of images each having a spatial size of, for example, 1920×1080 luma samples and their associated chrominance samples. The image sequence may have a fixed or variable image rate (informally also referred to as frame rate), such as 60 images per second, or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (resolution of 1920x1080 luma samples at 60Hz frame rate) requires about 1.5Gbps of bandwidth. An hour of such video requires more than 600 GB of storage.
[0005] Одной целью кодирования и декодирования видеоданных может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так что реконструированный сигнал можно использовать для намеченного применения. Сжатие с потерями широко применяется для видеоданных. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.[0005] One goal of encoding and decoding video data may be to reduce redundancy in the input video signal by compressing. Compression can help to alleviate the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. You can use both lossless and lossy compression, as well as a combination of both. Lossless compression refers to techniques for reconstructing an exact copy of the original signal from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the discrepancy between the original and reconstructed signals is small enough that the reconstructed signal can be used for the intended application. Lossy compression is widely used for video data. The amount of distortion allowed depends on the application; for example, users of some custom streaming applications may tolerate higher distortion than users of broadcast television applications. The achievable compression ratio may reflect that a higher allowed/allowable distortion may result in a higher compression ratio.
[0006] Кодер и декодер видеоданных могут использовать методы на основе нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.[0006] The video encoder and decoder may use techniques based on several broad categories, including, for example, motion compensation, transform, quantization, and entropy coding.
[0007] Технологии видеокодеков могут включать методы, известные как внутреннее кодирование. При внутреннем кодировании значения отсчетов представлены без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разбивается на блоки отсчетов. Когда все блоки отсчетов кодируются в режиме внутреннего кодирования, это изображение является изображением с внутренним кодированием. Изображения с внутренним кодированием и их производные, такие как изображения обновления независимого декодера, могут использоваться для сброса состояния декодера и, следовательно, могут использоваться в качестве первого изображения в кодированном битовом потоке видеоданных и видеосеансе или в качестве неподвижного изображения. Отсчеты блока с внутренним кодированием могут подвергаться преобразованию, а коэффициенты преобразования могут квантоваться перед энтропийным кодированием. Внутреннее предсказание может быть методом, который минимизирует значения отсчетов в области до преобразования. В некоторых случаях, чем меньше значение DC после преобразования и чем меньше коэффициенты АС, тем меньше битов требуется при заданном размере шага квантования для представления блока после энтропийного кодирования.[0007] Video codec technologies may include techniques known as intra-coding. With internal 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 the intra coding mode, this picture is an intra coding picture. Intra-coded 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. Intra-coded block samples may be transformed and transform coefficients may be quantized prior to entropy coding. Intra-prediction may be a technique that minimizes sample values in a pre-transform region. 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.
[0008] Традиционное внутреннее кодирование, например, известное из технологий кодирования поколения MPEG-2, не использует внутреннее предсказание. Однако некоторые новые технологии сжатия видеоданных включают методы, которые используют предсказание, например, из данных окружающих отсчетов и/или метаданных, полученных во время кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования блоков данных. Такие методы в дальнейшем называются методами "внутреннего предсказания". Следует отметить, что по меньшей мере в некоторых случаях внутреннее предсказание использует только опорные данные из текущего реконструируемого изображения, а не из опорных изображений.[0008] Conventional intra coding, such as that known from MPEG-2 generation coding technologies, does not use intra prediction. However, some new video data compression technologies include techniques that use prediction from, for example, ambient 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 "internal prediction" methods. It should be noted that, in at least some cases, intra prediction uses only the reference data from the current image being reconstructed, and not from the reference images.
[0009] Существует много различных форм внутреннего предсказания. Когда в данной технологии кодирования видеоданных может использоваться более одного из таких методов, применяемый метод может использоваться в режиме внутреннего предсказания. В некоторых случаях режимы могут иметь подрежимы и/или параметры, которые могут кодироваться индивидуально или включаться в кодовое слово режима. Кодовое слово, используемое для данной комбинации режима/подрежима/параметра, может повлиять на повышение эффективности кодирования за счет внутреннего предсказания, как и технология энтропийного кодирования, используемая для преобразования кодовых слов в битовый поток.[0009] There are many different forms of intra prediction. When more than one of these methods can be used in a given video coding technology, the applied method can be used in intra prediction mode. In some cases, modes may have sub-modes and/or parameters that may be encoded individually or included in the mode codeword. The codeword used for a given mode/submode/parameter combination can contribute to the increase in coding efficiency due to intra prediction, as can the entropy coding technology used to convert the codewords to a bitstream.
[0010] Режим внутреннего предсказания был введен в Н.264, усовершенствован в Н.265 и дополнительно усовершенствован в новых технологиях кодирования, таких как совместная модель исследования (JEM, joint exploration model), универсальное кодирование видеоданных (VVC, versatile video coding) и набор эталонов (BMS, benchmark set). Блок предсказателя может быть сформирован с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказания в соответствии с направлением. Ссылка на используемое направление может кодироваться в битовом потоке или сама может быть предсказана.[0010] The 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 set of standards (BMS, benchmark set). The predictor block can be formed using the values of adjacent samples belonging to already available samples. The values of neighboring samples are copied into the prediction block according to the direction. The reference to the direction to be used may be encoded in the bitstream, or may itself be predicted.
[0011] Компенсация движения может быть методом сжатия с потерями и может относиться к методам, в которых блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения) после пространственного сдвига в направлении, указанном вектором движения (MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В некоторых случаях опорное изображение может быть таким же, как реконструируемое в настоящий момент изображение. Векторы движения могут иметь два измерения X и Υ или три измерения, при этом третье измерение указывает на используемое опорное изображение (последнее, косвенно, может быть измерением времени).[0011] Motion compensation may be a lossy compression technique and may refer to techniques in which a block of sample data from a previously reconstructed image or a portion thereof (reference image) after a spatial shift in the direction indicated by a motion vector (MV, motion vector) is used to predict a newly reconstructed image or part of an image. In some cases, the reference image may be the same as the image currently being reconstructed. The motion vectors may have two dimensions X and Υ or three dimensions, with the third dimension indicating the reference image used (the latter, indirectly, may be a time dimension).
[0012] В некоторых методах сжатия видеоданных вектор движения, применимый к определенной области данных отсчетов, может быть предсказан на основе других векторов движения, например, на основе тех, которые связаны с другой областью данных отсчетов, соседней с реконструируемой областью, и предшествуют этому вектору движения в порядке декодирования. Это может существенно уменьшить объем данных, необходимых для кодирования вектора движения, что устраняет избыточность и увеличивает степень сжатия. Предсказание вектора движения может работать эффективно, например, потому что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео), существует статистическая вероятность того, что области, большие, чем область, к которой применим один вектор движения, перемещаются в сходном направлении и, следовательно, в некоторых случаях могут быть предсказаны с использованием сходного вектора движения, полученного из векторов движения соседней области. Это приводит к тому, что вектор движения, найденный для данной области, является сходным вектору движения, предсказанному на основе окружающих векторов движения, или совпадает с ним и, в свою очередь, может быть представлен после энтропийного кодирования меньшим количеством битов, чем в случае непосредственного кодирования вектора движения. В некоторых случаях предсказание вектора движения может быть примером сжатия без потерь сигнала (а именно, векторов движения), полученного из исходного сигнала (а именно, потока отсчетов). В других случаях само предсказание векторов движения может быть с потерями, например, из-за ошиоок округления при вычислении предсказателя на основе нескольких окружающих векторов движения.[0012] In some video data compression techniques, a motion vector applicable to a certain region of sample data may be predicted based on other motion vectors, such as those associated with and preceding another region of sample data adjacent to the reconstructed region. movements in decoding order. This can significantly reduce the amount of data required for motion vector encoding, which eliminates redundancy and increases the compression ratio. Motion vector prediction can work efficiently, for example, because when encoding the input video signal received from the camera (known as natural video), there is a statistical probability that areas larger than the area to which one motion vector is applied move in a similar direction and therefore, in some cases, can be predicted using a similar motion vector obtained from the motion vectors of the neighboring area. This results in the motion vector found for a given region being similar or identical to the motion vector predicted from the surrounding motion vectors and, in turn, can be represented after entropy encoding with fewer bits than in the case of direct encoding. motion vector coding. In some cases, motion vector prediction may be an example of lossless compression of a signal (namely, motion vectors) derived from the original signal (namely, a stream of samples). In other cases, motion vector prediction itself may be lossy, for example, due to rounding errors when computing a predictor based on multiple surrounding motion vectors.
[0013] Различные механизмы предсказания векторов движения описаны в стандарте H.265/HEVC (Рекомендация МСЭ-Т Н.265, "Высокоэффективное кодирование видеоданных", декабрь 2016 г.). Из множества механизмов предсказания векторов движения, которые предлагает стандарт Н.265, здесь описывается метод, далее называемый "пространственным слиянием".[0013] Various motion vector prediction mechanisms are described in the H.265/HEVC standard (ITU-T Rec. H.265, High Efficiency Video Coding, December 2016). Of the many motion vector prediction mechanisms that the H.265 standard offers, a method hereinafter referred to as "spatial fusion" is described.
[0014] Как показано на фиг. 1, текущий блок (101) содержит отсчеты, обнаруженные кодером в процессе поиска движения как предсказуемые на основе предыдущего блока того же размера, который пространственно-сдвинут. Вместо непосредственного кодирования вектора движения, этот вектор движения может быть получен из метаданных, связанных с одним или несколькими опорными изображениями, например, на основе самого последнего (в порядке декодирования) опорного изображения с использованием вектора движения, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1 и В0, B1, В2 (от 102 до 106, соответственно). В стандарте Н.265 предсказание векторов движения может использовать предсказатели на основе того же опорного изображения, которое используется для соседнего блока.[0014] As shown in FIG. 1, the current block (101) contains the samples found by the encoder during the motion search process to be predictable based on a previous block of the same size that was spatially shifted. Instead of directly encoding the motion vector, this motion vector can be derived from the metadata associated with one or more reference pictures, for example, based on the most recent (in decoding order) reference picture using the motion vector associated with any of the five surrounding samples, denoted A0, A1 and B0, B1, B2 (from 102 to 106, respectively). In H.265, motion vector prediction may use predictors based on the same reference picture as used for the neighboring block.
СУЩНОСТЬ ИЗОБРЕТЕНИЯSUMMARY OF THE INVENTION
[0015] Аспекты изобретения предоставляют первый способ декодирования видеоданных в видеодекодере. Способ может включать прием первого синтаксического элемента высокого уровня (HLS, high level syntax), указывающего на то, включен или отключен явный выбор множества преобразований (MTS, multiple transform selection) для блока с внутренним кодированием, и прием второго элемента HLS, указывающего на то, включен или отключен явный MTS для блока с внешним кодированием. Первый и второй элементы HLS управляют одним и тем же набором блоков кодирования, которые включают упомянутый блок с внутренним кодированием и упомянутый блок с внешним кодированием. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что явный MTS включен для блока с внешним кодированием.[0015] Aspects of the invention provide a first method for decoding video data in a video decoder. The method may include receiving a first high-level syntax (HLS) element indicating whether multiple transform selection (MTS) is enabled or disabled for the intra-coded block, and receiving a second HLS element indicating whether , explicit MTS is enabled or disabled for the outer-encoded block. The first and second HLS elements manage the same set of coding blocks, which include said intra-coding block and said outer-coding block. Implicit MTS may be enabled for an intra block when the first HLS element indicates that explicit MTS is disabled for the intra block and the second HLS element indicates that explicit MTS is enabled for the outer block.
[0016] Вариант осуществления способа может также включать применение неявного MTS для блока с внутренним кодированием. Тип преобразования для обработки блока с внутренним кодированием может быть определен в соответствии с размером блока с внутренним кодированием. В различных примерах первый или второй элемент HLS может представлять собой один из следующих элементов: синтаксический элемент набора параметров видео (VPS, video parameter set), синтаксический элемент набора параметров последовательности (SPS, sequence parameter set), синтаксический элемент набора параметров изображения (PPS, picture parameter set), синтаксический элемент заголовка слайса, синтаксический элемент заголовка тайла или синтаксический элемент заголовка группы тайлов. В варианте осуществления изобретения блок с внутренним кодированием не кодируют в режиме внутреннего кодирования с субразделением (ISP, intra sub-partitioning). В варианте осуществления изобретения способ может также включать прием третьего элемента HLS, указывающего на то, что MTS включен для каждого из блоков с внутренним и внешним кодированием.[0016] An embodiment of the method may also include applying an implicit MTS to the intra block. The type of transformation for processing the intra block may be determined according to the size of the intra block. In various examples, the first or second element of the HLS may be one of the following elements: a video parameter set (VPS) syntax element, a sequence parameter set (SPS) syntax element, a video parameter set (PPS) syntax element, picture parameter set), a slice header syntax element, a tile header syntax element, or a tile group header syntax element. In an embodiment of the invention, an intra sub-partitioning block is not encoded in intra sub-partitioning (ISP) mode. In an embodiment of the invention, the method may also include receiving a third HLS element indicating that MTS is enabled for each of the intra and outer coding blocks.
[0017] Аспекты изобретения предоставляют второй способ декодирования видеоданных в видеодекодере. Второй способ может включать прием первого элемента HLS, указывающего на то, включен или отключен MTS для блока с внутренним кодированием, и прием второго элемента HLS, указывающего на то, отключено или включено неразделяемое вторичное преобразование (NSST, non-separable secondary transform) или внутреннее предсказание на основе матрицы (MIP, matrix-based intra prediction) для блока с внутренним кодированием. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что NSST или MIP отключено для блока с внутренним кодированием.[0017] Aspects of the invention provide a second method for decoding video data in a video decoder. The second method may include receiving a first HLS element indicating whether MTS is enabled or disabled for the intra-coded block, and receiving a second HLS element indicating whether a non-separable secondary transform (NSST, non-separable secondary transform) or internal is disabled or enabled. matrix-based intra prediction (MIP) for an intra-coded block. Implicit MTS may be enabled for an intra block when the first HLS element indicates that explicit MTS is disabled for the intra block and the second HLS element indicates that NSST or MIP is disabled for the intra block.
[0018] Изобретение также предоставляет третий способ декодирования видеоданных в видеодекодере. Третий способ может включать прием блока с внутренним кодированием, связанного с первым синтаксическим элементом уровня блока, указывающим на то, применяется ли MTS, и вторым синтаксическим элементом уровня блока, указывающим на то, применяется ли NSST. Неявный MTS может быть включен для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, а второй синтаксический элемента уровня блока указывает на то, что NSST не применяется.[0018] The invention also provides a third method for decoding video data in a video decoder. The third method may include receiving an intra-coded block associated with a first block level syntax element indicating whether MTS is applied and a second block level syntax element indicating whether NSST is applied. Implicit MTS may be included for an intra-coded block when the first block-level syntax element indicates that MTS is not applied and the second block-level syntax element indicates that NSST is not applied.
[0019] Отметим, что хотя настоящее описание относится к NSST, предлагаемые способы и системы могут применяться к вариантам NSST, таким как преобразование уменьшенного размера (RST, reduced size transform) и низкочастотное неразделяемое вторичное преобразование (LFNST, low-frequency non-separable secondary transform). Таким образом, NSST, RST и/или LFNST могут использоваться взаимозаменяемо в настоящем описании.[0019] Note that although the present description relates to NSST, the proposed methods and systems can be applied to variants of NSST, such as reduced size transform (RST, reduced size transform) and low-frequency non-separable secondary transform (LFNST, low-frequency non-separable secondary transform). Thus, NSST, RST and/or LFNST can be used interchangeably in the present specification.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙBRIEF DESCRIPTION OF THE DRAWINGS
[0020] Другие признаки, принципы и различные преимущества настоящего изобретения будут понятны из последующего подробного описания и прилагаемых чертежей.[0020] Other features, principles and various advantages of the present invention will become apparent from the following detailed description and the accompanying drawings.
[0021] Фиг. 1 - схематическая иллюстрация текущего блока и окружающих его кандидатов для пространственного слияния в одном примере осуществления изобретения.[0021] FIG. 1 is a schematic illustration of the current block and its surrounding candidates for spatial merging in one embodiment of the invention.
[0022] Фиг. 2 схематическая иллюстрация упрощенной структурной схемы системы (200) связи в соответствии с вариантом осуществления изобретения.[0022] FIG. 2 is a schematic illustration of a simplified block diagram of a communications system (200) in accordance with an embodiment of the invention.
[0023] Фиг. 3 - схематическая иллюстрация упрощенной структурной схемы системы (300) связи в соответствии с вариантом осуществления изобретения.[0023] FIG. 3 is a schematic illustration of a simplified block diagram of a communications system (300) in accordance with an embodiment of the invention.
[0024] Фиг. 4 схематическая иллюстрация упрощенной структурной схемы декодера в соответствии с вариантом осуществления изобретения.[0024] FIG. 4 is a schematic illustration of a simplified block diagram of a decoder according to an embodiment of the invention.
[0025] Фиг. 5 - схематическая иллюстрация упрощенной структурной схемы кодера в соответствии с вариантом осуществления изобретения.[0025] FIG. 5 is a schematic illustration of a simplified block diagram of an encoder in accordance with an embodiment of the invention.
[0026] Фиг. 6 показывает структурную схему кодера в соответствии с другим вариантом осуществления изобретения.[0026] FIG. 6 shows a block diagram of an encoder in accordance with another embodiment of the invention.
[0027] Фиг. 7 показывает структурную схему декодера в соответствии с другим вариантом осуществления изобретения.[0027] FIG. 7 shows a block diagram of a decoder in accordance with another embodiment of the invention.
[0028] Фиг. 8A-8D показывают примеры матрицы ядра преобразования для 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, соответственно, согласно варианту осуществления изобретения.[0028] FIG. 8A-8D show examples of a transform kernel matrix for 4-point, 8-point, 16-point, and 32-point DCT-2 transforms, respectively, according to an embodiment of the invention.
[0029] Фиг. 9A-9D показывают типы, размеры и позиции субблоков, поддерживаемые в преобразовании субблоков (SBT, sub-block transform) согласно варианту осуществления изобретения.[0029] FIG. 9A-9D show types, sizes, and positions of sub-blocks supported in a sub-block transform (SBT) according to an embodiment of the invention.
[0030] Фиг. 10 показывает количество субразделений в зависимости от размера блока в режиме внутреннего кодирования с субразделением (ISP) в соответствии с вариантом осуществления изобретения.[0030] FIG. 10 shows the number of subdivisions versus block size in the subdivision intra coding (ISP) mode according to an embodiment of the invention.
[0031] Фиг. 11 показывает пример, в котором блок разделен на два субраздела в режиме кодирования ISP.[0031] FIG. 11 shows an example in which a block is divided into two subsections in the ISP coding mode.
[0032] Фиг. 12 показывает пример, в котором блок разделен на четыре субраздела в режиме кодирования ISP.[0032] FIG. 12 shows an example in which a block is divided into four subsections in the ISP coding mode.
[0033] Фиг. 13А-13Е показывают матрицу 64×64 ядра преобразования для 64-точечного преобразования DCT-2 согласно варианту осуществления изобретения.[0033] FIG. 13A-13E show a 64x64 transform kernel matrix for a 64-point DCT-2 transform according to an embodiment of the invention.
[0034] На фиг.14 показаны базисные функции преобразования для преобразований DST/DCT согласно варианту осуществления изобретения.[0034] Fig. 14 shows basis transform functions for DST/DCT transforms according to an embodiment of the invention.
[0035] Фиг. 15 показывает таблицу, иллюстрирующую соответствие между значением mts_idx и соответствующими горизонтальными или вертикальными преобразованиями согласно варианту осуществления изобретения.[0035] FIG. 15 shows a table illustrating the correspondence between the value of mts_idx and the corresponding horizontal or vertical transformations according to an embodiment of the invention.
[0036] Фиг. 16A-16D показывают матрицы ядра преобразования типа DST-7 согласно варианту осуществления изобретения.[0036] FIG. 16A-16D show DST-7 type transform kernel matrices according to an embodiment of the invention.
[0037] Фиг. 17A-17D показывают матрицы ядра преобразования типа DCT-8 согласно варианту осуществления изобретения.[0037] FIG. 17A-17D show DCT-8 type transformation kernel matrices according to an embodiment of the invention.
[0038] Фиг. 18 показывает пример управления использованием выбора множества преобразований (MTS) с помощью синтаксических элементов набора параметров последовательности (SPS).[0038] FIG. 18 shows an example of controlling the use of Transform Set Selection (MTS) with Sequence Parameter Set (SPS) syntax elements.
[0039] Фиг. 19 показывает таблицу отображения между режимами внутреннего предсказания и наборами преобразований в соответствии с вариантом осуществления изобретения.[0039] FIG. 19 shows a mapping table between intra prediction modes and transform sets in accordance with an embodiment of the invention.
[0040] Фиг. 20-21 показывают два альтернативных процесса (2000) и (2100) кодирования с преобразованием для RST8×8 с использованием ядер преобразования 16×64 и ядер преобразования 16×48, соответственно, согласно варианту осуществления изобретения.[0040] FIG. 20-21 show two alternative transform encoding processes (2000) and (2100) for RST8x8 using 16x64 transform kernels and 16x48 transform kernels, respectively, according to an embodiment of the invention.
[0041] Фиг. 22 показывает пример таблицы (2200) синтаксиса уровня CU, где синтаксический элемент lfnst_idx, указывающий на выбор ядра низкочастотного неразделяемого вторичного преобразования (LFNST), сигнализируется в конце синтаксиса уровня CU.[0041] FIG. 22 shows an example of a CU level syntax table (2200) where the lfnst_idx syntax element indicating the low frequency non-shared second transform (LFNST) kernel selection is signaled at the end of the CU level syntax.
[0042] Фиг. 23 показывает процесс (2301) сокращенного преобразования и процесс (2302) сокращенного обратного преобразования согласно варианту осуществления изобретения.[0042] FIG. 23 shows a reduced transform process (2301) and a reduced inverse transform process (2302) according to an embodiment of the invention.
[0043] Фиг. 24А показывает все верхние левые 8×8 коэффициентов (заштрихованные субблоки) блока (2410) остатка, используемого в качестве входных данных для вычисления вторичного преобразования в RST8×8.[0043] FIG. 24A shows all of the top left 8×8 coefficients (shaded sub-blocks) of the residual block (2410) used as input to calculate the secondary transform in RST8×8.
[0044] Фиг. 24В показывает коэффициенты трех верхних левых субблоков 4x4 (заштрихованные субблоки) блока (2410) остатка, используемого в качестве входных данных для вычисления вторичного преобразования в RST8×8.[0044] FIG. 24B shows the coefficients of the top three left 4x4 subblocks (shaded subblocks) of the residual block (2410) used as input to calculate the secondary transform to RST8x8.
[0045] Фиг. 25 показывает таблицу для выбора набора преобразований на основе режима внутреннего предсказания согласно варианту осуществления изобретения.[0045] FIG. 25 shows a table for selecting a transform set based on the intra prediction mode according to an embodiment of the invention.
[0046] Фиг. 26 показывает пример процесса (2600) режима внутреннего предсказания на основе матрицы (MIP).[0046] FIG. 26 shows an example of a matrix-based intra prediction (MIP) mode process (2600).
[0047] Фиг. 27 показывает таблицу синтаксиса уровня CU, где флаги, сигнализирующие режимы внутреннего предсказания на основе матрицы (MIP), показаны в рамке (2701) согласно варианту осуществления изобретения.[0047] FIG. 27 shows a CU layer syntax table where flags signaling matrix-based intra prediction (MIP) modes are shown in box (2701) according to an embodiment of the invention.
[0048] Фиг. 28А-28В в совокупности показывают текст (2800), определяющий процесс кодирования с преобразованием для выполнения явного или неявного выбора преобразования для текущего блока на основе соответствующих синтаксических элементов, полученных из битового потока.[0048] FIG. 28A-28B collectively show text (2800) specifying a transform encoding process for performing implicit or explicit transform selection for the current block based on corresponding syntax elements obtained from the bitstream.
[0049] Фиг. 29 показывает модификации (2900) текста (2800), которые соответствуют схеме включения неявного преобразования, где могут совместно использоваться неявное преобразование для блоков остатка с внутренним кодированием и явное преобразование для блоков остатка с внешним кодированием.[0049] FIG. 29 shows modifications (2900) of text (2800) that correspond to an implicit conversion inclusion scheme where implicit conversion for intra-residual blocks and explicit conversion for outer-encoded residual blocks can be combined.
[0050] Фиг. 30 показывает модификации (3000) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда неразделяемое вторичное преобразование (NSST) отключено.[0050] FIG. 30 shows text modifications (3000) (2800) that correspond to a scenario in which implicit conversion is enabled when non-shared secondary transform (NSST) is disabled.
[0051] Фиг. 31 показывает модификации (3100) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда MIP отключено.[0051] FIG. 31 shows text modifications (3100) (2800) that correspond to a scenario in which implicit conversion is enabled when MIP is disabled.
[0052] Фиг. 32 показывает модификации (3200) текста (2800), которые соответствуют сценарию, в котором как MTS, так и NSST не применяются к текущему блоку.[0052] FIG. 32 shows text modifications (3200) (2800) that correspond to a scenario in which both MTS and NSST are not applied to the current block.
[0053] Фиг. 33 показывает модификации (3300) текста (2800), которые соответствуют сценарию, в котором ничто из MTS, NSST или MIP не применяется для текущего блока.[0053] FIG. 33 shows modifications (3300) of text (2800) that correspond to a scenario in which none of the MTS, NSST, or MIP is applied to the current block.
[0054] Фиг. 34-36 показывают блок-схемы способов (3400), (3500) и (3600) кодирования с преобразованием согласно некоторым вариантам осуществления изобретения.[0054] FIG. 34-36 show flowcharts of transform coding methods (3400), (3500), and (3600) according to some embodiments of the invention.
[0055] Фиг. 37 схематическая иллюстрация компьютерной системы в соответствии с вариантом осуществления изобретения.[0055] FIG. 37 is a schematic illustration of a computer system in accordance with an embodiment of the invention.
ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ ИЗОБРЕТЕНИЯDETAILED DESCRIPTION OF EMBODIMENTS
[0056] 1. Кодер и декодер видеоданных[0056] 1. Video encoder and decoder
[0057] На фиг. 2 показана упрощенная структурная схема системы (200) связи согласно варианту осуществления настоящего изобретения. Система (200) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (250). Например, система (200) связи включает в себя первую пару оконечных устройств (210) и (220), соединенных между собой через сеть (250). В примере, приведенном на фиг. 2, первая пара оконечных устройств (210) и (220) осуществляет однонаправленную передачу данных. Например, оконечное устройство (210) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (210)) для передачи в другое оконечное устройство (220) через сеть (250). Кодированные видеоданные могут передаваться в виде одного или более битовых потоков кодированных видеоданных. Оконечное устройство (220) может принимать кодированные видеоданные из сети (250), декодировать кодированные видеоданные для восстановления видеоизображений и их отображения согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.[0057] FIG. 2 shows a simplified block diagram of a communication system (200) according to an embodiment of the present invention. The communication system (200) includes a plurality of terminal devices that can communicate with each other, for example, via a network (250). For example, the communication system (200) includes a first pair of terminals (210) and (220) interconnected via a network (250). In the example shown in FIG. 2, the first pair of terminals (210) and (220) performs a unidirectional data transfer. For example, a terminal device (210) may encode video data (eg, a video stream captured by a terminal device (210)) for transmission to another terminal device (220) via a network (250). The encoded video data may be transmitted as one or more encoded video bit streams. The terminal device (220) may receive the encoded video data from the network (250), decode the encoded video data to recover the video images and display them according to the recovered video data. One-way communication may be inherent in media service applications and the like.
[0058] В другом примере, система (200) связи включает в себя вторую пару оконечных устройств (230) и (240), которые осуществляют двунаправленную передачу кодированных видеоданных, возникающих, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, например, каждое оконечное устройство из оконечных устройств (230) и (240) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (230) и (240) через сеть (250). Каждое оконечное устройство из оконечных устройств (230) и (240) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (230) и (240), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.[0058] In another example, the communication system (200) includes a second pair of terminals (230) and (240) that carry out bi-directional transmission of encoded video data occurring, for example, during a video conference. For bidirectional data transmission, for example, each terminal of terminals (230) and (240) may encode video data (eg, a video stream captured by the terminal) for transmission to the other terminal of terminals (230) and (240) via network (250). Each terminal of terminals (230) and (240) may also receive encoded video data transmitted by another terminal from terminals (230) and (240) and may decode the encoded video data to reconstruct video images and display video images on an available display device according to recovered video data.
[0059] В примере, приведенном на фиг. 2, оконечные устройства (210), (220), (230) и (240) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (250) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (210), (220), (230) и (240), включая, например, проводные и/или беспроводные сети связи. Сеть (250) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Примеры сетей включают телекоммуникационные сети, локальные сети, глобальные сети и/или интернет.Для настоящего рассмотрения архитектура и топология сети (250) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.[0059] In the example shown in FIG. 2, terminal devices (210), (220), (230), and (240) can be illustrated as servers, personal computers, and smartphones, but this does not limit the principles of the present invention. Embodiments of the present invention find application in laptop computers, tablet computers, media players and/or dedicated video conferencing equipment. Network (250) represents any number of networks that carry encoded video data between terminals (210), (220), (230) and (240), including, for example, wired and/or wireless communication networks. The communication network (250) allows data to be exchanged in a circuit-switched and/or packet-switched mode. Examples of networks include telecommunications networks, local area networks, wide area networks, and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (250) may not be relevant to the present invention unless specifically noted below.
[0060] На фиг. 3 показано размещение видеокодера и видеодекодера в окружении потоковой передачи, в качестве примера применения настоящего изобретения. Настоящее изобретение может в равной степени использоваться и в других применениях обработки видеоданных, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.[0060] FIG. 3 shows the placement of a video encoder and a video decoder in a streaming environment as an example of the application of the present invention. The present invention is equally applicable to other video processing applications including, for example, videoconferencing, digital television, storage of compressed video on digital media such as CD, DVD, memory card, and the like.
[0061] Система потоковой передачи может содержать подсистему (313) захвата, которая может включать источник (301) видеоданных, например, цифровую камеру, создающую, например, поток (302) видеоизображений, не подвергнутых сжатию. Например, поток (302) видеоизображений включает отсчеты, полученные цифровой камерой. Поток (302) видеоизображений, показанный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (304) (или битовыми потоками кодированных видеоданных), может обрабатываться электронным устройством (320), которое содержит видеокодер (303), подключенный к источнику (301) видеоданных. Видеокодер (303) может включать оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов настоящего изобретения, как более подробно описано ниже. Кодированные видеоданные (304) (или битовый поток (304) кодированных видеоданных), показанные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (302) видеоизображений, могут храниться на потоковом сервере (305) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например клиентские подсистемы (306) и (308) на фиг. 3, могут осуществлять доступ к потоковому серверу (305) для извлечения копий (307) и (309) кодированных видеоданных (304). Клиентская подсистема (306) может содержать видеодекодер (310), например, в электронном устройстве (330). Видеодекодер (310) декодирует входящую копию (307) кодированных видеоданных и создает исходящий поток (311) видеоизображений, который может визуализироваться на дисплее (312) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (304), (307) и (309) (например, битовые потоки видеоданных) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видеоданных. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. Например, разрабатывается стандарт кодирования видеоданных под официальным названием "Универсальное кодирование видеоданных" (VVC, Versatile Video Coding). Настоящее изобретение может использоваться в контексте VVC.[0061] The streaming system may include a capture subsystem (313), which may include a source (301) of video data, such as a digital camera, creating, for example, an uncompressed video stream (302). For example, the video stream (302) includes samples taken by a digital camera. The video stream (302), shown in bold to emphasize the large amount of data compared to the encoded video data (304) (or encoded video data bitstreams), may be processed by an electronic device (320) that includes a video encoder (303) connected to the source ( 301) video data. The video encoder (303) may include hardware, software, or a combination thereof to provide or implement aspects of the present invention, as described in more detail below. The encoded video data (304) (or encoded video bitstream (304)), shown as a thin line to emphasize the smaller amount of data compared to the video stream (302), may be stored on the streaming server (305) for future use. One or more streaming client subsystems, such as client subsystems (306) and (308) in FIG. 3 may access the streaming server (305) to retrieve copies (307) and (309) of the encoded video data (304). The client subsystem (306) may contain a video decoder (310), for example, in an electronic device (330). The video decoder (310) decodes the incoming copy (307) of the encoded video data and creates an outgoing video stream (311) that can be rendered on a display (312) (eg, a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (304), (307), and (309) (eg, video bitstreams) may be encoded according to one or another video coding/compression standard. Examples of these standards include ITU-T Rec. H.265. For example, a video coding standard under the official name "Versatile Video Coding" (VVC) is being developed. The present invention can be used in the context of VVC.
[0062] Заметим, что электронные устройства (320) и (330) могут содержать другие компоненты (не показаны). Например, электронное устройство (320) может содержать видеодекодер (не показан), а электронное устройство (330) также может содержать видеокодер (не показан).[0062] Note that the electronic devices (320) and (330) may include other components (not shown). For example, the electronic device (320) may include a video decoder (not shown) and the electronic device (330) may also include a video encoder (not shown).
[0063] На фиг. 4 показана структурная схема видеодекодера (410) согласно варианту осуществления настоящего изобретения. Видеодекодер (410) может входить в состав электронного устройства (430). Электронное устройство (430) может содержать приемник (431) (например, приемные схемы). Видеодекодер (410) может использоваться вместо видеодекодера (310) в примере, приведенном на фиг. 3.[0063] FIG. 4 is a block diagram of a video decoder (410) according to an embodiment of the present invention. The video decoder (410) may be included in the electronic device (430). The electronic device (430) may include a receiver (431) (eg, receiver circuits). Video decoder (410) may be used instead of video decoder (310) in the example shown in FIG. 3.
[0064] Приемник (431) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (410), в том же или другом варианте осуществления изобретения, по одной кодированной видеопоследовательности за раз, причем декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (401), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (431) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут перенаправляться на соответствующие использующие их объекты (не показаны). Приемник (431) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, между приемником (431) и энтропийным декодером/анализатором (420) (далее "анализатором (420)") может быть подключена буферная память (415). В некоторых вариантах применения буферная память (415) входит в состав видеодекодера (410). В других она может не входить в состав видеодекодера (410) (не показано). В прочих вариантах может иметься буферная память вне видеодекодера (410) (не показано), например, для борьбы с джиттером сети, помимо другой буферной памяти (415) в составе видеодекодера (410), например, для управления временем воспроизведения. Когда приемник (431) принимает данные от устройства хранения/перенаправления с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (415) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, в Интернете, буферная память (415) может потребоваться, может быть сравнительно большой, может иметь преимущественно адаптивный размер и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (410).[0064] The receiver (431) may receive one or more encoded video sequences for decoding by video decoder (410), in the same or another embodiment of the invention, one encoded video sequence at a time, with the decoding of each encoded video sequence independent of other encoded video sequences. The encoded video sequence may be received from a channel (401), which may be a hardware/software link to a storage device where the encoded video data is stored. The receiver (431) may receive encoded video data with other data, such as encoded audio data and/or auxiliary data streams, which may be redirected to their respective utilizing entities (not shown). The receiver (431) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (415) can be connected between the receiver (431) and the entropy decoder/analyzer (420) (hereinafter "analyzer (420)"). In some applications, the buffer memory (415) is included in the video decoder (410). In others, it may not be part of the video decoder (410) (not shown). In other embodiments, there may be a buffer memory outside the video decoder (410) (not shown), for example, to combat network jitter, in addition to another buffer memory (415) within the video decoder (410), for example, to control playback time. When the receiver (431) receives data from a storage/redirector with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (415) may not be needed or may be small. For use in best effort packet networks, such as the Internet, buffer memory (415) may be required, may be relatively large, may have a predominantly adaptive size, and may at least partially be implemented in an operating system or similar elements (not shown) outside video decoder (410).
[0065] Видеодекодер (410) может содержать анализатор (420) для реконструкции символов (421) из кодированной видеопоследовательности. Категории этих символов включают информацию, используемую для управления работой видеодекодера (410) и, возможно, информацию для управления устройством визуализации, например устройством (412) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (430), но может быть подключено к электронному устройству (430), как показано на фиг. 4. Информация управления для устройств(а) визуализации может представлять собой сообщения дополнительной информации улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации о возможности использования видео (VUI, Video Usability Information) (не показаны). Анализатор (420) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видеоданных и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (420) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать группы изображений (GOP, Group of Pictures), изображения, тайлы, слайсы, макроблоки, пакеты кодирования (CU, Coding Unit), блоки, пакеты преобразования (TU, Transform Unit), пакеты предсказания (PU, Prediction Unit) и т.д. Анализатор (420) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.[0065] The video decoder (410) may include an analyzer (420) for reconstructing the symbols (421) from the encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (410) and possibly information to control a rendering device, such as a rendering device (412) (e.g., a display screen) that is not an integral part of the electronic device (430) but may be connected to an electronic device (430) as shown in FIG. 4. The control information for the rendering device(s) may be Supplemental Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The analyzer (420) may analyze/entropy decode the received encoded video sequence. Video sequence coding may be in accordance with a video coding technology or standard, and may follow various principles, including variable run length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The analyzer (420) can extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOP, Group of Pictures), images, tiles, slices, macroblocks, coding packages (CU, Coding Unit), blocks, transformation packages (TU, Transform Unit), prediction packages (PU, Prediction Unit) and etc. The analyzer (420) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.
[0066] Анализатор (420) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (415), для создания символов (421).[0066] The analyzer (420) may perform an entropy decoding/analysis operation of the video sequence received from the buffer memory (415) to create symbols (421).
[0067] Для реконструкции символов (421) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: изображения с внутренним и внешним кодированием, блоки с внутренним и внешним кодированием) и других факторов. Какие модули и как используются, может определяться информацией управления подгруппами, полученной из кодированной видеопоследовательности анализатором (420). Поток такой информации управления подгруппами между анализатором (420) и модулями для простоты в дальнейшем не показан.[0067] Several different modules may be used for symbol reconstruction (421) depending on the type of encoded video image or parts thereof (eg, intra- and outer-coded images, intra- and outer-coded blocks) and other factors. Which modules are used and how can be determined by the subgroup management information obtained from the encoded video sequence by the analyzer (420). The flow of such subgroup control information between the analyzer (420) and the modules is not shown hereinafter for simplicity.
[0068] Помимо ранее упомянутых функциональных блоков, видеодекодер (410) может принципиально разделяться на несколько функциональных модулей, как описано ниже. В практической реализации в условиях коммерческих ограничений многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания настоящего изобретения уместно принципиальное разделение на перечисленные ниже функциональные модули.[0068] In addition to the previously mentioned functional blocks, the video decoder (410) can be fundamentally divided into several functional modules, as described below. In practical implementation under commercial constraints, many of these modules interact closely with each other and can, at least partially, be built into one another. However, for the purpose of describing the present invention, a fundamental division into the following functional modules is appropriate.
[0069] Первым модулем является модуль (451) масштабирования/обратного преобразования. Модуль (451) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (421) от анализатора (420). Модуль (451) масштабирования/обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (455).[0069] The first module is the scaling/inverse transform module (451). The scaling/inverse transform module (451) receives the quantized transform coefficient as well as control information including the transform used, block size, quantization factor, quantization scaling matrices, etc. as character(s) (421) from the analyzer (420). The scaling/inverse transform module (451) may output blocks containing sample values that can be input to the aggregator (455).
[0070] В ряде случаев, выходные отсчеты блока (451) масштабирования/обратного преобразования могут относиться к блоку с внутренним кодированием; то есть к блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (452) внутреннего предсказания изображения. В ряде случаев модуль (452) внутреннего предсказания изображения формирует блок такого же размера и формы, как у блока, подлежащего реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (458) текущего изображения. Буфер (458) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (455) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сформированную модулем (452) внутреннего предсказания, в информацию выходных отсчетов, предоставленную модулем (451) масштабирования / обратного преобразования.[0070] In some cases, the output samples of the scaling/inverse transform block (451) may refer to an intra-coded block; that is, to a block that does not use predicted information from previously reconstructed images, but may use predicted information from previously reconstructed portions of the current image. Such predicted information may be provided by the intra image prediction module (452). In some cases, the intra image prediction module (452) generates a block of the same size and shape as the block to be reconstructed using previously reconstructed environment information retrieved from the current image buffer (458). The current picture buffer (458) buffers, for example, a partially reconstructed current picture and/or a fully reconstructed current picture. The aggregator (455) in some cases adds, for each sample, the prediction information generated by the intra prediction module (452) to the output sample information provided by the scaling/inverse transform module (451).
[0071] В других случаях выходные отсчеты модуля (451) масштабирования / обратного преобразования могут относиться к блоку с внешним кодированием, возможно, с компенсацией движения. В таком случае модуль (453) предсказания с компенсацией движения может осуществлять доступ к памяти (457) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (421), относящимися к блоку, эти отсчеты могут добавляться агрегатором (455) к выходному сигналу модуля (451) масштабирования / обратного преобразования (в этом случае называемому отсчетами остатка или сигналом остатка) для генерации информации выходных отсчетов. Адреса в памяти (457) опорных изображений, откуда модуль (453) предсказания с компенсацией движения извлекает отсчеты для предсказания, могут управляться векторами движения, доступными модулю (453) предсказания с компенсацией движения, в форме символов (421), которые могут иметь, например, компоненты Χ, Υ и компоненты опорного изображения. Компенсация движения также может включать интерполяцию значений отсчетов, извлеченных из памяти (457) опорных изображений, когда используются точные векторы движения подотсчетов, механизмы предсказания векторов движения и т.д.[0071] In other cases, the output samples of the scaling/inverse transform module (451) may refer to an inter-coded block, possibly with motion compensation. In such a case, the motion compensation prediction module (453) may access the reference picture memory (457) to retrieve samples used for prediction. After motion compensation has been applied to the extracted samples according to the symbols (421) associated with the block, these samples can be added by the aggregator (455) to the output signal of the scaling/inverse transform module (451) (in this case called residual samples or residual signal) to generation of output sample information. The addresses in the reference picture memory (457) from where the motion compensation prediction module (453) retrieves samples for prediction may be controlled by the motion vectors available to the motion compensation prediction module (453) in the form of symbols (421), which may have, for example , Χ, Υ components, and reference image components. Motion compensation may also include interpolation of sample values retrieved from reference picture memory (457) when accurate sub-sample motion vectors, motion vector prediction mechanisms, etc. are used.
[0072] К выходным отсчетам агрегатора (455) можно применять различные методы контурной фильтрации в модуле (456) контурного фильтра. Технологии сжатия видеоданных могут включать технологии контурного фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также называемую битовым потоком кодированных видеоданных) и доступных модулю (456) контурного фильтра в качестве символов (421) от анализатора (420), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.[0072] Various loop filtering methods can be applied to the aggregator (455) output samples in the loop filter module (456). Video data compression technologies may include loop filter technologies driven by parameters included in the encoded video sequence (also referred to as the coded video bitstream) and available to the loop filter module (456) as symbols (421) from the analyzer (420), but may also be responsive to meta-information obtained in the course of decoding the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as to respond to previously reconstructed and contour filtered sample values.
[0073] Модуль (456) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (412) визуализации, а также сохраняться в памяти (457) опорных изображений для использования в будущем внешнем предсказании изображения.[0073] The loop filter module (456) may provide a stream of samples that may be fed to the renderer (412) as well as stored in the reference picture memory (457) for use in future inter-picture prediction.
[0074] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано и идентифицировано как опорное изображение (например, анализатором (420)), буфер (458) текущего изображения может становиться частью памяти (457) опорных изображений, и может повторно выделяться свежий буфер текущего изображения до начала реконструкции следующего кодированного изображения.[0074] Some encoded pictures, when fully reconstructed, can be used as reference pictures for future prediction. For example, when the encoded picture corresponding to the current picture is fully reconstructed and identified as a reference picture (e.g., by the analyzer (420)), the current picture buffer (458) may become part of the reference picture memory (457) and a fresh current picture buffer may be re-allocated. until the reconstruction of the next encoded picture starts.
[0075] Видеодекодер (410) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видеоданных, например, по стандарту Рекомендации МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или используемым стандартом сжатия видеоданных, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видеоданных, так и профилей, задокументированных в технологии или стандарте сжатия видеоданных. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видеоданных. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видеоданных. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.[0075] The video decoder (410) may perform decoding operations according to a predetermined video data compression technology, such as ITU-T Rec. H.265. The encoded video sequence may follow the syntax specified by the video compression technology or standard used, in the sense that the encoded video sequence may follow both the syntax of the video compression technology or standard and the profiles documented in the video compression technology or standard. In particular, a profile may select certain tools as tools available for use only under that profile, from among all the tools available in a video data compression technology or standard. It may also be necessary for consistency that the complexity of the encoded video sequence remains within the limits set by the level of technology or video compression standard. In some cases, the levels limit the maximum image size, the maximum frame rate, the maximum sampling rate for reconstruction (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the levels, in some cases, may be further limited by the specifications of the hypothetical reference decoder (HRD, Hypothetical Reference Decoder) and metadata for managing the HRD buffer signaled in the encoded video sequence.
[0076] Согласно варианту осуществления изобретения, приемник (431) может принимать дополнительные (избыточные) данные с кодированными видеоданными. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (410) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, временные уровни улучшения, пространственные уровни улучшения или уровни улучшения отношения "сигнал/шум" (SNR, signal noise ratio), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.[0076] According to an embodiment of the invention, the receiver (431) may receive additional (redundant) data with encoded video data. Additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (410) to properly decode the data and/or more accurately reconstruct the original video data. The side data may be, for example, temporal enhancement levels, spatial enhancement levels or signal noise ratio (SNR) enhancement levels, redundant slices, redundant images, forward error correction codes, and so on.
[0077] На фиг. 5 показана структурная схема видеокодера (503) согласно варианту осуществления настоящего изобретения. Видеокодер (503) входит в состав электронного устройства (520). Электронное устройство (520) содержит передатчик (540) (например, передающую схему). Видеокодер (503) может использоваться вместо видеокодера (303) в примере, приведенном на фиг. 3.[0077] FIG. 5 is a block diagram of a video encoder (503) according to an embodiment of the present invention. The video encoder (503) is included in the electronic device (520). The electronic device (520) includes a transmitter (540) (eg, a transmission circuit). Video encoder (503) may be used instead of video encoder (303) in the example shown in FIG. 3.
[0078] Видеокодер (503) может принимать отсчеты видеоданных от источника (501) видеоданных (который не входит в состав электронного устройства (520) в примере, показанном на фиг. 5), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (503). В другом примере источник (501) видеоданных входит в состав электронного устройства (520).[0078] The video encoder (503) may receive video data samples from a video data source (501) (which is not part of the electronic device (520) in the example shown in FIG. 5) that may capture the video image(s) to be encoding with a video encoder (503). In another example, the source (501) of video data is included in the electronic device (520).
[0079] Источник (501) видеоданных может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (503) в форме потока отсчетов цифровых видеоданных любой подходящей битовой глубины (например: 8 битов, 10 битов, 12 битов,...), любого цветового пространства (например, ВТ.601 Y CrCB, RGB,...) и любой подходящей структуры дискретизации (например, Υ CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (501) видеоданных может быть запоминающее устройство, где хранится ранее подготовленное видео. В системе видеоконференцсвязи источником (501) видеоданных может быть камера, которая захватывает информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Последующее описание посвящено отсчетам.[0079] The video data source (501) may provide the source video sequence to be encoded by the video encoder (503) in the form of a digital video data sample stream of any suitable bit depth (eg: 8 bits, 10 bits, 12 bits,...), any color space ( eg BT.601 Y CrCB, RGB,...) and any suitable sampling structure (eg Υ CrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the source (501) of video data may be a storage device where previously prepared video is stored. In a videoconferencing system, the video data source (501) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual images that give a sense of movement when viewed in sequence. The images themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sample structure used, color space, and so on. It is not difficult for a person skilled in the art to understand the relationship between pixels and samples. The following description is devoted to readings.
[0080] Согласно варианту осуществления изобретения, видеокодер (503) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (543) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (550). В некоторых вариантах осуществления изобретения контроллер (550) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (550), могут включать параметры, связанные с регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое в методах оптимизации скорости-искажения, и т.д.), размер изображения, организацию групп изображений (GOP, group of pictures), максимальную зону поиска вектора движения и т.д. Контроллер (550) может иметь другие подходящие функции, относящиеся к видеокодеру (503), оптимизированному для конкретной конструкции системы.[0080] According to an embodiment of the invention, the video encoder (503) can encode and compress images of the original video sequence into the encoded video sequence (543) in real time or subject to any other time constraints imposed by the application. Establishing a proper coding rate is one of the functions of the controller (550). In some embodiments of the invention, the controller (550) controls other functional modules, as described below, and is operatively connected to other functional modules. The connection is not shown for simplicity. The parameters set by the controller (550) may include parameters related to frequency adjustment (picture skip, quantizer, lambda value used in rate-distortion optimization methods, etc.), image size, organization of groups of images (GOP, group of pictures), maximum motion vector search area, etc. The controller (550) may have other suitable functions related to the video encoder (503) optimized for a particular system design.
[0081] В некоторых вариантах осуществления изобретения видеокодер (503) выполнен с возможностью работать в контуре кодирования. В качестве очень упрощенного описания, например, контур кодирования может включать кодер (530) источника (например, отвечающий за создание символов, например, потока символов на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (533), встроенный в видеокодер (503). Декодер[0081] In some embodiments of the invention, the video encoder (503) is configured to operate in a coding loop. As a very simplified description, for example, an encoding loop may include a source encoder (530) (for example, responsible for creating symbols, for example, a symbol stream based on the input image to be encoded and the reference image(s)) and (local ) decoder (533) built into the video encoder (503). Decoder
(533) реконструирует символы для создания данных отсчетов аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированных видеоданных происходит без потерь в технологиях сжатия видеоданных, рассматриваемых в данном описании). Реконструированный поток отсчетов (данные отсчетов) поступают в память (534) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, которые не зависят от положения (локального или удаленного) декодера, содержимое памяти (534) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, часть предсказания кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.(533) reconstructs the symbols to create sample data in a similar way as a (remote) decoder would (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies discussed here). The reconstructed sample stream (sample data) is entered into the reference picture memory (534). Since decoding the symbol stream produces bit-accurate results that are independent of the position of the (local or remote) decoder, the content of the reference picture memory (534) will also be the same bit-accuracy for the local encoder and the remote encoder. In other words, the prediction part of the encoder "sees" as reference picture samples exactly the same sample values as the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and eventually drift if synchronism cannot be maintained, for example due to channel errors) is also used in some related fields of technology.
[0082] "Локальный" декодер (533) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (410), подробно описанный выше со ссылкой на фиг. 4. Однако, опять же, согласно фиг. 4, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (545) и анализатором (420) может осуществляться без потерь, части энтропийного декодирования видеодекодера (410), включающие буферную память (415) и анализатор (420), могут быть не полностью реализованы в локальном декодере (533).[0082] A "local" decoder (533) may operate in the same manner as a "remote" decoder, such as the video decoder (410) detailed above with reference to FIG. 4. However, again, referring to FIG. 4, since the symbols are available and the encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (545) and analyzer (420) can be lossless, the entropy decoding parts of the video decoder (410) including the buffer memory (415) and analyzer (420) can be not fully implemented in the local decoder (533).
[0083] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализа / энтропийного декодирования, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине настоящее изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодирования. Лишь в некоторых областях требуется более подробное описание, которое приведено ниже.[0083] It can be concluded that any decoding technology present in a decoder, with the exception of analysis/entropy decoding, must also necessarily be present in essentially identical functional form in the corresponding encoder. For this reason, the present invention is focused on the operation of the decoder. The description of the encoding technologies can be abbreviated as they are the inverse of the decoding technologies described in detail. Only in some areas a more detailed description is required, which is given below.
[0084] Согласно некоторым примерам, в ходе работы кодер (530) источника может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основе одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, механизм (532) кодирования кодирует разности между блоками пикселей входного изображения и блоками пикселей опорного изображения(й), которое(ые) может(ут) выбираться в качестве ссылки(ок) предсказания на входное изображение.[0084] According to some examples, in operation, the source encoder (530) may perform motion-compensated predictive coding, in which an input picture is predictively encoded based on one or more previously encoded pictures from a video sequence, referred to as "reference pictures". Thus, the coding engine (532) encodes the differences between the pixel blocks of the input image and the pixel blocks of the reference image(s) that can be selected as the prediction reference(s) to the input image.
[0085] Локальный видеодекодер (533) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных кодером (530) источника. Операции механизма (532) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 5), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (533) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может обеспечивать сохранение реконструированных опорных изображений в кэш-памяти (534) опорных изображений. Таким образом, видеокодер (503) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены удаленным видеодекодером (в отсутствие ошибок передачи).[0085] The local video decoder (533) may decode the encoded video data of pictures that can be specified as reference pictures based on the symbols generated by the source encoder (530). The operations of the encoding engine (532) may be predominantly lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 5), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (533) duplicates the decoding processes that may be performed by the video decoder on the reference pictures and may store the reconstructed reference pictures in the reference picture cache (534). Thus, the video encoder (503) can locally store copies of the reconstructed reference pictures having the same content as the reconstructed reference pictures that would be received by the remote video decoder (in the absence of transmission errors).
[0086] Предсказатель (535) может осуществлять поиски предсказания для механизма (532) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (535) может искать в памяти (534) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных блоков пикселей) или конкретные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (535) может работать на основе "блоки отсчетов χ блоки пикселей" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (535), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (534) опорных изображений.[0086] The predictor (535) may perform prediction searches for the encoding engine (532). Thus, for a new picture to be encoded, the predictor (535) may search the reference picture memory (534) for sample data (as pixel reference block candidates) or specific metadata such as reference picture motion vectors, block shapes, etc. .d., which can serve as a proper reference for predicting new images. The predictor (535) may operate on a "sample blocks χ pixel blocks" basis to find appropriate references for prediction. In some cases, according to the search results obtained by the predictor (535), the input picture may have prediction references extracted from the plurality of reference pictures stored in the reference picture memory (534).
[0087] Контроллер (550) может управлять операциями кодирования кодера (530) источника, включая, например, установление параметров, а также параметров подгруппы, используемых для кодирования видеоданных.[0087] The controller (550) can control the encoding operations of the source encoder (530), including, for example, setting the parameters as well as the subgroup parameters used to encode the video data.
[0088] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (545). Энтропийный кодер (545) переводит символы, сформированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно, например, технологиям кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.[0088] The output signal of all the above functional modules can be entropy encoded in an entropy encoder (545). An entropy encoder (545) translates symbols generated by various functional units into an encoded video sequence by lossless symbol compression according to, for example, Huffman coding, variable run length coding, arithmetic coding, and so on.
[0089] Передатчик (540) может буферизовать кодированную(ые) видеопоследовательность(и), созданную(ые) энтропийным кодером (545), для подготовки к передаче через канал (560) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (540) может объединять кодированные видеоданные от видеокодера (503) с другими данными, подлежащими передаче, например, с кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).[0089] The transmitter (540) may buffer the encoded video sequence(s) created by the entropy encoder (545) in preparation for transmission over a communication channel (560), which may be a hardware/software memory link where the encoded video data is stored. The transmitter (540) may combine the encoded video data from the video encoder (503) with other data to be transmitted, such as encoded audio data and/or auxiliary data streams (sources not shown).
[0090] Контроллер (550) может управлять работой видеокодера (503). В ходе кодирования контроллер (550) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения.[0090] The controller (550) may control the operation of the video encoder (503). During encoding, the controller (550) may assign to each encoded picture an encoded picture type, which may determine the encoding methods applicable to the corresponding picture. For example, images can often be assigned the following image types.
[0091] Изображение с внутренним кодированием (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника для предсказания. Некоторые видеокодеки допускают разные типы изображений с внутренним кодированием, включая, например, изображения в формате независимого обновления декодера (IDR, Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.[0091] An intra-coded picture (I-picture) that can be encoded and decoded without using any other picture in the sequence as a source for prediction. Some video codecs allow different types of intra-coded images, including, for example, images in the Independent Decoder Refresh (IDR) format. The person skilled in the art will be aware of the varieties of I-images and their respective applications and features.
[0092] Изображение с предсказанием (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[0092] A predictive picture (P-picture) that can be encoded and decoded using intra prediction or inter prediction using at most one motion vector and a reference index to predict sample values of each block.
[0093] Изображение с двунаправленным предсказанием (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, изображения с множеством предсказаний могут использовать более двух опорных изображений и соответствующие метаданные для реконструкции одного блока.[0093] A bi-directional predictive picture (B-picture) that can be encoded and decoded using intra prediction or inter prediction using no more than two motion vectors and reference indices to predict sample values of each block. Similarly, multi-prediction pictures may use more than two reference pictures and associated metadata to reconstruct a single block.
[0094] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться с предсказанием со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (с пространственным предсказанием или внутренним предсказанием). Блоки пикселей Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[0094] Source images typically allow for spatial division into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coding on a block-by-block basis. The blocks may be predictively encoded with reference to other (previously coded) blocks defined by the coding assignment applied to the respective images of those blocks. For example, blocks of I-pictures may be encoded without prediction or predictively with reference to previously encoded blocks of the same picture (with spatial prediction or intra prediction). P-picture pixel blocks may be predictively encoded by spatial prediction or temporal prediction with reference to one previously encoded reference picture. Blocks of B-pictures may be predictively encoded by spatial prediction or temporal prediction with reference to one or two previously encoded reference pictures.
[0095] Видеокодер (503) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, Рекомендации МСЭ-Т Н.265. В своей работе видеокодер (503) может осуществлять различные операции сжатия, в том числе операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Поэтому кодированные видеоданные могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видеоданных.[0095] The video encoder (503) may perform encoding operations according to a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (503) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancy in the input video sequence. Therefore, the encoded video data may follow the syntax given by the technology used or the video coding standard.
[0096] Согласно варианту осуществления изобретения, передатчик (540) может передавать дополнительные данные с кодированными видеоданными. Кодер (530) источника может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR уровни улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.[0096] According to an embodiment of the invention, the transmitter (540) may transmit additional data with encoded video data. The source encoder (530) may include such data as part of the encoded video sequence. The additional data may include temporal/spatial/SNR enhancement levels, other forms of redundant data such as redundant images and slices, SEI messages, VUI parameter set fragments, and so on.
[0097] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно называемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а внешнее предсказание изображения использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое называется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который называется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множества опорных изображений.[0097] The video may be captured as a plurality of source images (video images) in time sequence. Intra-image prediction (often abbreviated as intra-image prediction) uses the spatial correlation within a given image, while inter-image prediction uses (temporal or otherwise) correlation between images. For example, a specific image to be encoded/decoded, which is called the current image, is divided into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in a video, the block in the current picture may be encoded with a vector 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.
[0098] В некоторых вариантах осуществления изобретения, может использоваться метод двойного предсказания во внешнем предсказании изображения. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться с помощью комбинации первого опорного блока и второго опорного блока.[0098] In some embodiments of the invention, a dual prediction technique in inter-picture prediction may be used. According to the double prediction method, two reference pictures are used, for example, a first reference picture and a second reference picture, both of which precede the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture may be encoded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. The block may be predicted with a combination of the first reference block and the second reference block.
[0099] Дополнительно, способ режима слияния может использоваться во внешнем предсказании изображения для повышения эффективности кодирования.[0099] Additionally, the fusion mode method can be used in inter-picture prediction to improve coding efficiency.
[0100] Согласно некоторым вариантам осуществления изобретения предсказания, например, внешнее предсказание изображения и внутреннее предсказание изображения осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на пакеты дерева кодирования (CTU, coding tree unit) для сжатия, пакеты CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае пакет CTU включает три блока дерева кодирования (СТВ, coding tree blocks), а именно, один блок СТВ яркости и два блока СТВ цветности. Каждый пакет CTU может рекурсивно делиться на основе квадродерева на один или более пакетов кодирования (CU). Например, пакет CTU размером 64×64 пикселя может делиться на один пакет CU размером 64×64 пикселя или 4 пакета CU размером 32×32 пикселя или 16 пакетов CU размером 16×16 пикселей. Например, каждый пакет CU анализируется для определения типа предсказания для этого пакета CU, например, типа внешнего предсказания или типа внутреннего предсказания. Пакет CU делится на один или более пакетов предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждый пакет PU включает блок предсказания (РВ, prediction block) яркости и два блока РВ предсказания цветности. Согласно варианту осуществления изобретения, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. В качестве примера блока предсказания, блок предсказания яркости включает матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[0100] According to some embodiments of the invention, predictions such as inter image prediction and intra image prediction are performed block by block. For example, according to the HEVC standard, an image in a video sequence is split into coding tree unit (CTU) packets for compression, CTU packets in an image have the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, a CTU packet includes three coding tree blocks (CTBs), namely one luma CTB and two chrominance CTBs. Each CTU packet may be recursively divided on a quadtree basis into one or more coding packets (CUs). For example, a 64x64 pixel CTU packet may be divided into one 64x64 pixel CU packet or 4 32x32 pixel CU packets or 16 16x16 pixel CU packets. For example, each CU burst is parsed to determine the prediction type for that CU burst, eg, inter prediction type or intra prediction type. The CU burst is divided into one or more prediction bursts (PUs) depending on temporal and/or spatial predictability. In general, each PU packet includes a luminance prediction block (PB) and two chrominance prediction blocks PB. According to an embodiment of the invention, the encoding (encoding/decoding) prediction operation is performed in a prediction block unit. As an example of a prediction block, a luminance prediction block includes a matrix of values (e.g., luminance values) for pixels, e.g., 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, and the like.
[0101] На фиг. 6 показана схема видеокодера (603) согласно другому варианту осуществления изобретения. Видеокодер (603) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (603) используется вместо видеокодера (303) в примере, приведенном на фиг. 3.[0101] In FIG. 6 shows a diagram of a video encoder (603) according to another embodiment of the invention. The video encoder (603) is configured to receive a processing block (eg, a prediction block) of sample values in the current video image in the video sequence and to encode the processing block into an encoded image that forms part of the encoded video sequence. For example, video encoder (603) is used instead of video encoder (303) in the example shown in FIG. 3.
[0102] В примере HEVC видеокодер (603) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания из 8×8 отсчетов и т.п. Видеокодер (603) определяет, наилучшим ли образом кодируется блок обработки в режиме внутреннего предсказания, режиме внешнего предсказания или режиме двойного предсказания с использованием, например, оптимизации "скорость-искажения". Когда блок обработки подлежит кодированию в режиме внутреннего предсказания, видеокодер (603) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение, а когда блок обработки подлежит кодированию в режиме внешнего предсказания или режиме двойного предсказания, видеокодер (603) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования режим слияния может быть подрежимом внешнего предсказания изображения, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (603) содержит другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.[0102] In the HEVC example, video encoder (603) receives a matrix of sample values for a processing block, such as an 8×8 sample prediction block, or the like. The video encoder (603) determines whether the processing block is best encoded in intra prediction mode, inter prediction mode, or dual prediction mode using, for example, rate-distortion optimization. When the processing unit is to be coded in intra prediction mode, the video encoder (603) may use an intra prediction technique to encode the processing unit into an encoded picture, and when the processing unit is to be coded in inter prediction mode or dual prediction mode, the video encoder (603) may use an inter prediction technique. prediction or double prediction, respectively, to encode the processing block into the encoded picture. In some video coding technologies, the merge mode may be a sub-mode of inter-picture prediction where a motion vector is derived from one or more motion vector predictors without involving the encoded motion vector component outside of the predictors. In some other video coding technologies, there may be a motion vector component applicable to a given block. By way of example, the video encoder (603) includes other components, such as a mode determination module (not shown) for determining the mode of the processing units.
[0103] В примере, приведенном на фиг. 6, видеокодер (603) содержит кодер (630) внешнего кодирования, кодер (622) внутреннего кодирования, вычислитель (623) остатка, переключатель (626), кодер (624) остатка, общий контроллер (621) и энтропийный кодер (625), соединенные друг с другом так, как показано на фиг. 6.[0103] In the example shown in FIG. 6, the video encoder (603) comprises an outer encoder (630), an intra encoder (622), a residual calculator (623), a switch (626), a residual encoder (624), a common controller (621), and an entropy encoder (625), connected to each other as shown in Fig. 6.
[0104] Кодер (630) внешнего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), создания информации внешнего предсказания (например, описания избыточной информации согласно методу внешнего кодирования, векторов движения, информации режима слияния) и вычисления результатов внешнего предсказания (например, блока предсказания) на основе информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.[0104] The outer encoding encoder (630) is configured to receive samples of the current block (e.g., processing block), compare the block with one or more reference blocks in reference pictures (e.g., blocks in previous pictures and later pictures), create outer prediction (eg, description of redundant information according to the inter-coding method, motion vectors, merge mode information); and calculation of inter-prediction results (eg, prediction block) based on the inter-prediction information using any suitable method. In some examples, reference pictures are decoded reference pictures that are decoded based on encoded video information.
[0105] Кодер (622) внутреннего кодирования выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, формирования квантованных коэффициентов после преобразования и в ряде случаев также информации внутреннего предсказания (например, информации о направлении внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, кодер (622) внутреннего кодирования также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основе информации внутреннего предсказания и опорных блоков в том же изображении.[0105] The encoder (622) of the intra coding is configured to receive samples of the current block (for example, a processing block), in some cases comparing the block with blocks previously encoded in the same image, generating quantized coefficients after the transformation, and in some cases also information of the intra prediction (eg, intra prediction direction information according to one or more intra coding methods). By way of example, the intra encoder (622) also calculates intra prediction results (eg, prediction block) based on intra prediction information and reference blocks in the same picture.
[0106] Общий контроллер (621) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (603) на основе общих данных управления. Например, общий контроллер (621) определяет режим блока и выдает сигнал управления на переключатель (626) на основе режима. Например, когда режим является режимом внутреннего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата режима внутреннего кодирования для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток, а когда режим является режимом внешнего кодирования, общий контроллер (621) управляет переключателем (626) для выбора результата внешнего предсказания для использования вычислителем (623) остатка и управляет энтропийным кодером (625) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.[0106] The common controller (621) is configured to determine common control data and control other components of the video encoder (603) based on the common control data. For example, the common controller (621) determines the block mode and outputs a control signal to the switch (626) based on the mode. For example, when the mode is an intra coding mode, the common controller (621) controls the switch (626) to select the result of the intra coding mode to be used by the residual calculator (623) and controls the entropy encoder (625) to select the intra prediction information and include the intra prediction information in bitstream, and when the mode is an inter-coding mode, the common controller (621) controls a switch (626) to select an inter-prediction result for use by the residual calculator (623) and controls an entropy encoder (625) to select inter-prediction information and turn on inter-prediction information to the bitstream.
[0107] Вычислитель (623) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из кодера (622) внутреннего кодирования или кодера (630) внешнего кодирования. Кодер (624) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для формирования коэффициентов преобразования. Например, кодер (624) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и формирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления изобретения видеокодер (603) также содержит декодер (628) остатка. Декодер (628) остатка выполнен с возможностью осуществления обратного преобразования и формирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться кодером (622) внутреннего кодирования и кодером (630) внешнего кодирования. Например, кодер (630) внешнего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, а кодер (622) внутреннего кодирования может формировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для формирования декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.[0107] The residual calculator (623) is configured to calculate the difference (residual data) between the received block and the prediction results selected from the intra encoder (622) or the outer encoder (630). The residual encoder (624) is configured to operate on the residual data to encode the residual data to generate transform coefficients. For example, the residual encoder (624) is configured to transform residual data from the spatial domain to the frequency domain and generate transform coefficients. Then, the transform coefficients are subjected to quantization processing to obtain quantized transform coefficients. In various embodiments of the invention, the video encoder (603) also contains a residual decoder (628). The residual decoder (628) is configured to perform inverse transformation and generate decoded residual data. The decoded residual data may be appropriately used by the intra encoder (622) and the outer encoder (630). For example, an inter coding encoder (630) may generate decoded blocks based on the decoded residual data and inter prediction information, and an intra coding encoder (622) may generate decoded blocks based on the decoded residual data and intra prediction information. The decoded blocks are properly processed to generate decoded pictures, and the decoded pictures can be buffered in a memory circuit (not shown) and used as reference pictures in some examples.
[0108] Энтропийный кодер (625) выполнен с возможностью форматирования битового потока для включения кодированного блока. Энтропийный кодер (625) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (625) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Следует отметить, что, согласно изобретению, при кодировании блока в подрежиме слияния для любого из режима внешнего кодирования и режима двойного предсказания, информация остатка отсутствует.[0108] The entropy encoder (625) is configured to format the bitstream to include a coded block. The entropy encoder (625) is configured to include various information according to a suitable standard, such as the HEVC standard. For example, the entropy encoder (625) is configured to include common control data, selected prediction information (eg, intra prediction information or inter prediction information), residual information, and other appropriate information in the bitstream. It should be noted that, according to the invention, when encoding a block in the merge sub-mode for either of the inter-coding mode and the dual prediction mode, there is no residual information.
[0109] На фиг. 7 показана схема видеодекодера (710) согласно другому варианту осуществления изобретения. Видеодекодер (710) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной видеопоследовательности, и декодирования кодированных изображений для формирования реконструированных изображений. Например, видеодекодер (710) используется вместо видеодекодера (310) в примере, приведенном на фиг. 3.[0109] In FIG. 7 shows a diagram of a video decoder (710) according to another embodiment of the invention. The video decoder (710) is configured to receive encoded pictures that are part of the encoded video sequence and decode the encoded pictures to generate reconstructed pictures. For example, video decoder (710) is used instead of video decoder (310) in the example shown in FIG. 3.
[0110] В примере, приведенном на фиг. 7, видеодекодер (710) содержит энтропийный декодер (771), декодер (780) внешнего декодирования, декодер (773) остатка, модуль (774) реконструкции и декодер (772) внутреннего декодирования, соединенные друг с другом так, как показано на фиг. 7.[0110] In the example shown in FIG. 7, the video decoder (710) comprises an entropy decoder (771), an outer decoder (780), a residual decoder (773), a reconstruction unit (774), and an inner decoder (772) connected to each other as shown in FIG. 7.
[0111] Энтропийный декодер (771) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать, например, режим кодирования блока (например, режим внутреннего кодирования, режим внешнего кодирования, режим двойного предсказания, причем последние два в подрежиме слияния или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания декодером (772) внутреннего декодирования или декодером (780) внешнего декодирования, соответственно, информацию остатка в виде, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внешнего или двойного предсказания, информация внешнего предсказания поступает на декодер (780) внешнего декодирования, а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на декодер (772) внутреннего декодирования. Информация остатка может подвергаться обратному квантованию и поступать на декодер (773) остатка.[0111] The entropy decoder (771) may be configured to reconstruct, from the encoded image, some symbols that represent the syntax elements that make up the encoded image. Such symbols may include, for example, block coding mode (eg, intra coding mode, inter coding mode, dual prediction mode, the latter two in a merge submode or other submode), prediction information (eg, intra prediction information or inter prediction information), which can identify a certain sample or metadata used for prediction by the intra decoder (772) or the outer decode decoder (780), respectively, residual information in the form of, for example, quantized transform coefficients and the like. For example, when the prediction mode is an inter- or dual-prediction mode, the inter-prediction information is supplied to the inter-decoder (780), and when the prediction type is the intra-prediction type, the intra-prediction information is supplied to the intra-decoder (772). The residual information may be inverse quantized and fed to the residual decoder (773).
[0112] Декодер (780) внешнего декодирования выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основе информации внешнего предсказания.[0112] The inter-decoding decoder (780) is configured to receive inter-prediction information and generate inter-prediction results based on the inter-prediction information.
[0113] Декодер (772) внутреннего декодирования выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основе информации внутреннего предсказания.[0113] The intra decoding decoder (772) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.
[0114] Декодер (773) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (773) остатка также может требовать некоторой информации управления (для включения параметра квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (771) (путь данных не показан, поскольку это может быть только информация управления малого объема).[0114] The residual decoder (773) is configured to perform inverse quantization to extract the dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (773) may also require some control information (to include a Quantizer Parameter (QP)), and this information may be provided by the entropy decoder (771) (the data path is not shown since this may only be small volume control information) .
[0115] Модуль (774) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (773) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что могут осуществляться другие подходящие операции, например, операция устранения блочности и т.п., для повышения визуального качества.[0115] The reconstruction module (774) is configured to combine, in the spatial domain, the residual at the output of the residual decoder (773) and prediction results (at the output of the inter or intra prediction modules, depending on the situation) to form a reconstructed block that may be included into the reconstructed image, which, in turn, can be part of the reconstructed video. Note that other suitable operations, such as a deblocking operation and the like, may be performed to improve the visual quality.
[0116] Следует отметить, что видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием любой подходящей технологии. Согласно варианту осуществления изобретения, видеокодеры (303), (503) и (603) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления изобретения видеокодеры (303), (503) и (503) и видеодекодеры (310), (410) и (710) могут быть реализованы с использованием одного или более процессоров, которые исполняют программные инструкции.[0116] It should be noted that video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using any suitable technology. According to an embodiment of the invention, video encoders (303), (503) and (603) and video decoders (310), (410) and (710) may be implemented using one or more integrated circuits. In another embodiment of the invention, video encoders (303), (503) and (503) and video decoders (310), (410) and (710) may be implemented using one or more processors that execute program instructions.
[0117] II. Способы кодирования с преобразованием и связанные с ними способы[0117] II. Transform Encoding Methods and Related Methods
[0118] 1. Примеры первичного преобразования DCT-2[0118] 1. DCT-2 Primary Transform Examples
[0119] В некоторых вариантах осуществления изобретения в качестве первичных преобразований используются 4-точечные, 8-точечные, 16-точечные и 32-точечные преобразования DCT-2. Фиг. 8A-8D показывают матрицы ядер 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, соответственно. Элементы этих матриц ядер преобразований могут быть представлены с использованием 8-битных целых чисел, и, таким образом, эти матрицы ядер преобразований называются 8-битными ядрами преобразований. Как показано, матрица ядра преобразования меньшего преобразования DCT-2 является частью большего преобразования DCT-2.[0119] In some embodiments, 4-point, 8-point, 16-point, and 32-point DCT-2 transforms are used as primary transforms. Fig. 8A-8D show the kernel matrices of the 4-point, 8-point, 16-point, and 32-point DCT-2 transforms, respectively. The elements of these transformation kernel matrices can be represented using 8-bit integers, and thus these transformation kernel matrices are referred to as 8-bit transformation kernels. As shown, the transformation kernel matrix of the smaller DCT-2 transformation is part of the larger DCT-2 transformation.
[0120] Матрицы ядра преобразования DCT-2 демонстрируют характеристики симметрии/антисимметрии. Соответственно, может поддерживаться реализация так называемой "частичной бабочки" для уменьшения количества операций (умножений, сложений/вычитаний, сдвигов). С использованием реализации частичной бабочки могут быть получены идентичные результаты умножения матриц в сравнении с тем, когда реализация частичной бабочки не используется.[0120] DCT-2 transformation kernel matrices exhibit symmetry/antisymmetry characteristics. Accordingly, a so-called "partial butterfly" implementation can be supported to reduce the number of operations (multiplications, additions/subtractions, shifts). Using the partial butterfly implementation, identical matrix multiplication results can be obtained compared to when the partial butterfly implementation is not used.
[0121] 2. Примеры кодирования с преобразованием субблоков[0121] 2. Subblock Transform Coding Examples
[0122] 2.1 Преобразование субблоков (SBT, sub-block transform)[0122] 2.1 Sub-block transform (SBT, sub-block transform)
[0123] В некоторых вариантах осуществления изобретения используется преобразование субблоков (SBT), также называемое пространственно-изменяющимся преобразованием (SVT, spatially varying transform). Преобразование SBT применяется к остаткам внешнего предсказания в некоторых вариантах осуществления изобретения. Например, блок кодирования может быть разделен на субблоки, и только часть субблоков обрабатывается в блоке остатка. Для оставшейся части субблоков предполагается нулевой остаток. Следовательно, блок остатка меньше, чем блок кодирования, и размер преобразования в SBT меньше, чем размер блока кодирования. Для области, которая не покрыта блоком остатка, обработка преобразования не выполняется.[0123] In some embodiments of the invention, a subblock transform (SBT), also called a spatially varying transform (SVT), is used. The SBT transform is applied to inter prediction residuals in some embodiments of the invention. For example, a coding block may be divided into sub-blocks, and only a portion of the sub-blocks is processed in the remainder block. For the rest of the sub-blocks, a zero remainder is assumed. Therefore, the residual block is smaller than the coding block, and the transform size in SBT is smaller than the coding block size. For an area that is not covered by a remainder block, no transformation processing is performed.
[0124] Фиг. 9A-9D показывает типы субблоков (SVT-H, SVT-V) (например, разделенных вертикально или горизонтально), размеры и позиции (например, левая половина, левая четверть, правая половина, правая четверть, верхняя половина, верхняя четверть, нижняя половина, нижняя четверть), которые поддерживаются в SBT. Заштрихованные области, помеченные буквой "А", являются блоками остатка, которые должны кодироваться с преобразованием, а другие области предполагаются с нулевым остатком без преобразования.[0124] FIG. 9A-9D show types of sub-blocks (SVT-H, SVT-V) (e.g. split vertically or horizontally), sizes and positions (e.g. left half, left quarter, right half, right quarter, top half, top quarter, bottom half , bottom quarter) that are supported in SBT. The shaded areas labeled "A" are residual blocks to be encoded with a transform, and other regions are assumed to be zero-residual without transformation.
[0125] 2.2 Режим внутреннего кодирования с субразделением (ISP)[0125] 2.2 Intra-Subdivision Coding (ISP) Mode
[0126] В некоторых вариантах осуществления изобретения используется режим внутреннего кодирования с субразделением (ISP). В режиме кодирования ISP, блок с внутренним предсказанием яркости может быть разделен по вертикали или по горизонтали на 2 или 4 субраздела. Количество субразделов может зависеть от размера блока. Фиг. 10 показывает количество субразделов в зависимости от размера блока. Фиг. 11 показывает сценарий, в котором блок разделен на два субраздела. На фиг. 12 показан сценарий, в котором блок разделен на четыре субраздела. В примере все субразделы удовлетворяют условию наличия не менее 16 отсчетов. В примере ISP не применяется к компонентам цветности.[0126] In some embodiments of the invention, a subdivision intra coding (ISP) mode is used. In the ISP coding mode, an intra luminance prediction block may be divided vertically or horizontally into 2 or 4 sub-partitions. The number of subsections may depend on the block size. Fig. 10 shows the number of subsections depending on the block size. Fig. 11 shows a scenario in which a block is divided into two subsections. In FIG. 12 shows a scenario where the block is divided into four subsections. In the example, all subsections satisfy the condition of having at least 16 counts. In the example, ISP does not apply to chrominance components.
[0127] В примере для каждого из субразделов, полученных из блока кодирования, формируется сигнал остатка посредством энтропийного декодирования соответствующих коэффициентов, отправленных из кодера, а затем их деквантования и обратного преобразования. Затем первый из субразделов предсказывается посредством внутреннего предсказания для формирования сигнала предсказания. Сигнал предсказания добавляется к соответствующему сигналу остатка первого субраздела для получения соответствующих реконструированных отсчетов. После этого, значения реконструированных отсчетов первого субраздела могут быть доступны для формирования предсказания второго из субразделов. Этот процесс может повторяться от субраздела к субразделу до тех пор, пока не будут реконструированы все субразделы из блока кодирования. В одном примере для всех субразделов используется один и тот же режим внутреннего кодирования.[0127] In the example, for each of the subsections received from the coding block, a residual signal is generated by entropy decoding the respective coefficients sent from the encoder, and then dequantizing and inverse transforming them. Then, the first of the sub-partitions is predicted by intra prediction to generate a prediction signal. The prediction signal is added to the corresponding first subsection residual signal to obtain the corresponding reconstructed samples. Thereafter, the reconstructed sample values of the first sub-section may be available to form a prediction of the second of the sub-sections. This process may be repeated from subsection to subsection until all subsections from the coding block have been reconstructed. In one example, the same intra-coding mode is used for all subsections.
[0128] В варианте осуществления изобретения режим кодирования ISP тестируется только с режимами внутреннего кодирования, которые являются частью списка наиболее вероятных режимов (МРМ, most probable mode). Соответственно, если для блока используется ISP, то можно сделать вывод, что флаг МРМ равен единице. Кроме того, когда ISP используется для определенного блока, соответствующий список МРМ будет изменен, чтобы исключить режим DC и отдать приоритет горизонтальным режимам внутреннего кодирования для горизонтального разделения ISP и вертикальным режимам внутреннего кодирования для вертикального разделения.[0128] In an embodiment of the invention, the ISP encoding mode is only tested with intra encoding modes that are part of the most probable mode (MPM) list. Accordingly, if ISP is used for the block, then it can be concluded that the MPM flag is equal to one. In addition, when ISP is used for a certain block, the corresponding MPM list will be changed to exclude the DC mode and give priority to horizontal intra coding modes for horizontal ISP division and vertical intra coding modes for vertical division.
[0129] В режиме кодирования ISP каждый субраздел можно рассматривать как субпакет преобразования, поскольку преобразование и реконструкция выполняются отдельно для каждого субраздела.[0129] In the ISP encoding mode, each sub-section can be considered as a transform sub-packet since the transformation and reconstruction are performed separately for each sub-section.
[0130] 3. Кодирование с преобразованием с помощью расширенных преобразований DCT-2 и выбора множества преобразований (MTS)[0130] 3. Transform Coding with DCT-2 Extended Transforms and Transform Set Selection (MTS)
[0131] В некоторых вариантах осуществления изобретения, когда и высота, и ширина блока кодирования меньше или равны 64 отсчетам, размер преобразования всегда совпадает с размером блока кодирования. Когда высота или ширина блока кодирования больше 64 отсчетов, при выполнении преобразования или внутреннего предсказания блок кодирования далее разделяется на несколько субблоков, причем ширина и высота каждого субблока меньше или равны 64, и обработка преобразования выполняется для каждого субблока.[0131] In some embodiments, when both the height and width of a coding block are less than or equal to 64 samples, the transform size is always the same as the coding block size. When the height or width of the coding block is greater than 64 samples, when performing transformation or intra prediction, the coding block is further divided into several sub-blocks, the width and height of each sub-block is less than or equal to 64, and transformation processing is performed for each sub-block.
[0132] 3.1 Кодирование с преобразованием с помощью расширенных преобразований DCT-2[0132] 3.1 Transform Coding with DCT-2 Extended Transforms
[0133] В некоторых вариантах осуществления изобретения, в дополнение к 4-точечному, 8-точечному, 16-точечному и 32-точечному преобразованиям DCT-2, описанным выше, может использоваться 2-точечное и 64-точечное преобразования DCT-2. Фиг. 13А-13Е показывают матрицу 64x64 ядра преобразования для 64-точечного преобразования DCT-2.[0133] In some embodiments, in addition to the 4-point, 8-point, 16-point, and 32-point DCT-2 transforms described above, 2-point and 64-point DCT-2 transforms may be used. Fig. 13A-13E show a 64x64 transform kernel matrix for a 64-point DCT-2 transform.
[0134] 3.2 Явно сигнализируемое преобразование[0134] 3.2 Explicitly signaled transformation
[0135] В некоторых вариантах осуществления изобретения, в дополнение к кодированию с преобразованиями DCT-2 и 4×4 DST-7, может использоваться выбор множества преобразований (MTS) (также известный как расширенное множество преобразований (ЕМТ, enhanced multiple transform) или адаптивное множество преобразований (АМТ, adaptive multiple transform)) для кодирования остатка как блоков с внешним кодированием, так и блоков с внутренним кодированием. MTS использует множество выбранных преобразований из семейств дискретного косинусного преобразования (DCT) / дискретного синусного преобразования (DST), помимо преобразований DCT-2 и 4×4 DST-7. Выбор может выполняться в кодере и явно сигнализироваться из кодера в декодер. Например, выбранные преобразования включают преобразования DST-7 или DCT-8. Фиг. 14 показывает базисные функции преобразования для DST/DCT. В некоторых вариантах осуществления изобретения для матриц ядра преобразования DST/DCT, применяемых в MTS, используется 8-битное представление.[0135] In some embodiments of the invention, in addition to encoding with DCT-2 and 4x4 DST-7 transforms, Transform Set Selection (MTS) (also known as enhanced multiple transform (EMT) or adaptive a set of transformations (AMT, adaptive multiple transform)) for coding the rest of both blocks with external coding and blocks with internal coding. MTS uses a variety of selected transforms from the Discrete Cosine Transform (DCT) / Discrete Sine Transform (DST) families, in addition to the DCT-2 and 4×4 DST-7 transforms. The selection may be made at the encoder and explicitly signaled from the encoder to the decoder. For example, the selected transforms include DST-7 or DCT-8 transforms. Fig. 14 shows basic transform functions for DST/DCT. In some embodiments, the DST/DCT transform kernel matrices used in MTS use an 8-bit representation.
[0136] В некоторых вариантах осуществления изобретения MTS может применяться для блоков кодирования с шириной и высотой, которые меньше или равны 32 отсчетам. Управлять тем, применять MTS или нет, можно с помощью флага, обозначенного mtsflag. Например, когда флаг mtsflag равен 0, только преобразование DCT-2 применяется для кодирования блока остатка. Когда флаг mts_flag равен 1, что указывает на применение MTS, можно использовать выбранные преобразования. Например, индекс, обозначенный mts_idx, может также сигнализироваться с использованием 2 бинов для задания горизонтального и вертикального преобразования, которые должны использоваться.[0136] In some embodiments, the MTS may be applied to coding blocks with width and height less than or equal to 32 samples. Whether or not to apply MTS can be controlled by a flag denoted by mtsflag. For example, when the mtsflag flag is 0, only the DCT-2 transform is applied to encode the residual block. When the mts_flag is 1, indicating that MTS is applied, the selected transforms may be used. For example, an index denoted by mts_idx can also be signaled using 2 bins to specify the horizontal and vertical transformations to be used.
[0137] Фиг. 15 показывает таблицу (1500), иллюстрирующую соответствие между значением mtsidx и горизонтальными или вертикальными преобразованиями. Строка (1501) с mts_idx, имеющим значение - 1, соответствует сценарию, в котором флаг mts_flag равен 0 (что указывает на то, что MTS не применяется), а преобразование DCT-2 используется. Строки (1502)-(1505) с mts idx, имеющим значение 0, 1, 2 или 3, соответствуют сценарию, в котором флаг mts_flag равен 1 (что указывает на применение MTS). В двух правых столбцах таблицы (1500) 0 представляет тип преобразования DCT-2, 1 представляет тип преобразования DST-7, а 2 представляет тип преобразования DCT-8.[0137] FIG. 15 shows a table (1500) illustrating the correspondence between the mtsidx value and horizontal or vertical transformations. Line (1501) with mts_idx set to -1 corresponds to a scenario where mts_flag is 0 (indicating that MTS is not applied) and DCT-2 is used. Lines (1502)-(1505) with mts idx having a value of 0, 1, 2, or 3 correspond to a scenario in which the mts_flag is 1 (indicating the use of MTS). In the two right columns of the table (1500), 0 represents the DCT-2 transformation type, 1 represents the DST-7 transformation type, and 2 represents the DCT-8 transformation type.
[0138] Фиг. 16A-16D показывают матрицы ядра преобразования типа DST-7. На фиг. 17A-17D показаны матрицы ядра преобразования типа DCT-8.[0138] FIG. 16A-16D show DST-7 type transformation kernel matrices. In FIG. 17A-17D show DCT-8 type transformation kernel matrices.
[0139] В некоторых вариантах осуществления изобретения MTS можно включать или отключать с помощью синтаксических элементов высокого уровня (HLS). Каждый из элементов HLS может представлять собой синтаксический элемент набора параметров видео (VPS), синтаксический элемент набора параметров последовательности (SPS), синтаксический элемент набора параметров изображения (PPS), синтаксический элемент заголовка слайса, синтаксический элемент заголовка тайла или синтаксический элемент заголовка группы тайлов и т.д. Фиг. 18 показывает пример управления MTS с использованием синтаксических элементов SPS. Как показано, синтаксический элемент SPS sps_mts_enabled_flag может сигнализироваться для указания, включен ли MTS для видеопоследовательности. Когда MTS включен, два синтаксических элемента sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag могут сигнализироваться, чтобы указать, включен ли MTS для кодирования блоков с внутренним или внешним предсказанием, соответственно.[0139] In some embodiments of the invention, MTS can be enabled or disabled using high-level syntax elements (HLS). Each of the HLS elements may be a Video Parameter Set (VPS) syntax element, a Sequence Parameter Set (SPS) syntax element, a Picture Parameter Set (PPS) syntax element, a slice header syntax element, a tile header syntax element, or a tile group header syntax element, and etc. Fig. 18 shows an example of MTS control using SPS syntax elements. As shown, the SPS syntax element sps_mts_enabled_flag can be signaled to indicate whether MTS is enabled for a video sequence. When MTS is enabled, the two syntax elements sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag may be signaled to indicate whether MTS is enabled for encoding blocks with intra or inter prediction, respectively.
[0140] В варианте осуществления изобретения неявный MTS применяется в случае, если вышеупомянутый MTS на основе сигнализации (называемый явным MTS) не используется. При неявном MTS выбор преобразования может быть выполнен в соответствии с шириной и высотой блока, а не на основе сигнализации. Например, при неявном MTS преобразование DST-7 может быть выбрано для более короткой стороны блока преобразования, а преобразование DCT-2 может быть выбрано для более длинной стороны блока преобразования.[0140] In an embodiment of the invention, an implicit MTS is applied in case the aforementioned signaling-based MTS (referred to as explicit MTS) is not used. With implicit MTS, transform selection can be made according to the block width and height rather than signaling. For example, with implicit MTS, a DST-7 transform may be selected for the shorter side of the transform block, and a DCT-2 transform may be selected for the longer side of the transform block.
[0141] 3.3 Сценарии, где применяется неявный выбор преобразования[0141] 3.3 Scenarios where implicit transform selection is applied
[0142] В различных вариантах осуществления изобретения для определенных сценариев преобразования DST-7 и/или DCT-8 могут использоваться без явной сигнализации. Например, преобразования DST-7 и/или DCT-8 могут использоваться неявно на основе информации, доступной как для кодера, так и для соответствующего декодера. Эти сценарии включают:[0142] In various embodiments of the invention, for certain scenarios, DST-7 and/or DCT-8 transformations can be used without explicit signaling. For example, DST-7 and/or DCT-8 transforms may be used implicitly based on information available to both the encoder and the corresponding decoder. These scenarios include:
[0143] 3.3.1 Внутреннее кодирование с субразделением (ISP)[0143] 3.3.1 Intra-Subdivision Coding (ISP)
[0144] Для блока остатка, кодированного с помощью режима ISP, горизонтальное преобразование выбирается как DST-7, пока ширина блока остатка больше или равна 4 и меньше или равна 16, а вертикальное преобразование выбирается как DST-7, пока высота блока остатка больше или равна 4 и меньше или равна 16.[0144] For a residual block encoded with the ISP mode, the horizontal transform is selected as DST-7 as long as the width of the residual block is greater than or equal to 4 and less than or equal to 16, and the vertical transform is selected as DST-7 as long as the height of the residual block is greater than or is 4 and less than or equal to 16.
[0145] 3.3.2 Преобразование субблоков (SBT)[0145] 3.3.2 Subblock Transform (SBT)
[0146] В режиме SBT для субпакета преобразования, расположенного в левой половине (или четверти) или правой половине (или четверти) текущего пакета CU, горизонтальное преобразование может представлять собой преобразование DCT-8 или преобразование DST-7, соответственно. В противном случае (субпакет преобразования имеет такую же ширину, что и текущий пакет CU), может использоваться преобразование DCT-2. Для субпакета преобразования, расположенного в верхней половине (или четверти) или нижней половине (или четверти) текущего пакета CU, вертикальное преобразование может представлять собой преобразование DCT-8 или преобразование DST-7, соответственно. В противном случае (субпакет преобразования имеет ту же высоту, что и текущий пакет CU) может использоваться преобразование DCT-2.[0146] In the SBT mode, for a transform subpacket located in the left half (or quarter) or right half (or quarter) of the current CU burst, the horizontal transform may be a DCT-8 transform or a DST-7 transform, respectively. Otherwise (the transform subpacket has the same width as the current CU packet), a DCT-2 transform may be used. For a transform subpacket located in the upper half (or quarter) or lower half (or quarter) of the current CU burst, the vertical transform may be a DCT-8 transform or a DST-7 transform, respectively. Otherwise (the transform subpacket has the same height as the current CU burst), a DCT-2 transform may be used.
[0147] 3.3.3 MTS отключен посредством элементов HLS[0147] 3.3.3 MTS disabled by HLS elements
[0148] Например, когда sps_mts_enabled_flag сигнализируется как истинный, но как sps_explicit_mts_intra_enabled_flag, так и sps_explicit_mts_inter_enabled_flag сигнализируются как "ложь", для остатков внутреннего предсказания горизонтальное преобразование может быть выбрано как DST-7 до тех пор, пока соответствующая ширина блока больше или равна 4 и меньше или равна 16, а вертикальное преобразование может быть выбрано как DST-7, пока соответствующая высота блока больше или равна 4 и меньше или равна 16.[0148] For example, when sps_mts_enabled_flag is signaled as true, but both sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are signaled as false, for intra prediction residuals, the horizontal transform may be selected as DST-7 as long as the corresponding block width is greater than or equal to 4 and is less than or equal to 16, and the vertical transformation can be chosen as DST-7 as long as the corresponding block height is greater than or equal to 4 and less than or equal to 16.
[0149] 4. Неразделяемое вторичное преобразование (NSST)[0149] 4. Non-Separable Secondary Transformation (NSST)
[0150] 4.1 Первоначальная схема NSST[0150] 4.1 Initial NSST Scheme
[0151] В некоторых вариантах осуществления изобретения может применяться зависящее от режима неразделяемое вторичное преобразование (NSST) между прямым преобразованием ядра и квантованием (в кодере) и между деквантованием и обратным преобразованием ядра (в соответствующем декодере). Чтобы сохранить низкую сложность, в некоторых вариантах осуществления изобретения NSST может применяться только к низкочастотным коэффициентам после первичного преобразования. Если и ширина (W), и высота (Н) блока коэффициентов преобразования больше или равны 8, то неразделяемое вторичное преобразование 8×8 может быть применено к верхней левой области блока 8×8 коэффициентов преобразования. В противном случае, если либо W, либо Η блока коэффициентов преобразования равно 4, может применяться неразделяемое вторичное преобразование 4×4, а неразделяемое преобразование 4x4 выполняется в верхней левой области min(8, W) × min(8, Η) блока коэффициентов преобразования. Вышеупомянутое правило выбора преобразования применяется как для компонентов яркости, так и для компонентов цветности.[0151] In some embodiments of the invention, a mode-dependent non-separable secondary transform (NSST) can be applied between direct kernel transform and quantization (in the encoder) and between dequantization and inverse kernel transform (in the corresponding decoder). To keep complexity low, in some embodiments of the invention, NSST may only be applied to the low frequency coefficients after the primary transform. If both the width (W) and the height (H) of the transform coefficient block are greater than or equal to 8, then an 8×8 non-separable secondary transform may be applied to the upper left region of the 8×8 transform coefficient block. Otherwise, if either W or Η of the transform coefficient block is 4, a 4x4 non-separable secondary transform may be applied, and a 4x4 non-separable transform is performed in the upper left region min(8, W) × min(8, Η) of the transform coefficient block . The above transform selection rule applies to both luminance and chrominance components.
[0152] Реализация неразделяемого преобразования с умножением матриц описана ниже с использованием входного блока 4×4 в качестве примера. Чтобы применить неразделяемое преобразование, входной блок X размером 4×4[0152] The implementation of the matrix multiplication nonseparable transform is described below using the 4×4 input block as an example. To apply a non-separable transformation, a 4x4 input block X
представлен как вектор represented as a vector
[0153] Неразделяемое преобразование вычисляется как[0153] The non-separable transform is computed as
где указывает вектор коэффициентов преобразования, а Τ представляет собой матрицу 16×16 преобразования Т. Вектор коэффициентов 16×1 впоследствии реорганизуется в блок 4×4 с использованием порядка сканирования для этого блока (горизонтальный, вертикальный или диагональный). Коэффициенты с меньшим индексом будут размещены с меньшим индексом сканирования в блоке коэффициентов 4×4. В примере преобразование HyGT (hypercube-givens) с реализацией бабочки используется вместо умножения матриц для уменьшения сложности неразделяемого преобразования.where specifies a vector of transform coefficients, and Τ is a 16×16 matrix of T's transform. The
[0154] В примере NSST, может быть всего 35×3 неразделяемых вторичных преобразований для размера блока как 4×4, так и 8×8, где 35 количество наборов преобразований, каждый из которых соответствует режиму внутреннего предсказания, а 3 - количество кандидатов NSST для каждого режима внутреннего предсказания. Отображение из режима внутреннего предсказания в набор преобразований задано в таблице (1900), показанной на фиг. 19. Например, набор преобразований, применяемый к коэффициентам преобразования яркости/цветности, может быть определен соответствующими режимами внутреннего предсказания яркости/цветности согласно таблице (1900). Для режимов внутреннего предсказания свыше 34 (например, диагональное направление предсказания) блок коэффициентов преобразования транспонируется до/после вторичного преобразования в кодере/декодере.[0154] In the NSST example, there can be a total of 35x3 non-shared secondary transforms for both 4x4 and 8x8 block sizes, where 35 is the number of transform sets each corresponding to an intra prediction mode, and 3 is the number of NSST candidates for each intra prediction mode. The mapping from the intra prediction mode to the transform set is specified in the table (1900) shown in FIG. 19. For example, the set of transforms applied to the luminance/chrominance transform coefficients may be determined by the respective intra luminance/chrominance prediction modes according to Table (1900). For intra prediction modes greater than 34 (eg, diagonal prediction direction), the block of transform coefficients is transposed before/after the secondary transform at the encoder/decoder.
[0155] Для каждого набора преобразований выбранный кандидат неразделяемого вторичного преобразования также определяется явно сигнализированным индексом NSST уровня CU. Индекс сигнализируется в битовом потоке один раз для каждого внутреннего CU после коэффициентов преобразования с использованием усеченной унарной бинаризации. Усеченное значение равно 2 в случае планарного режима или режима DC и 3 в случае режима углового внутреннего предсказания. Этот индекс NSST сигнализируется только тогда, когда в CU имеется более одного ненулевого коэффициента. Если значение не сигнализируется, оно по умолчанию равно нулю. Нулевое значение этого синтаксического элемента указывает на то, что вторичное преобразование не применяется для текущего CU, а значения 1-3 указывают, какое вторичное преобразование из набора следует применить.[0155] For each set of transforms, the selected non-shared secondary transform candidate is also determined by an explicitly signaled CU layer NSST index. The index is signaled in the bitstream once for each inner CU after the transform coefficients using truncated unary binarization. The truncated value is 2 in case of planar or DC mode and 3 in case of angular intra prediction mode. This NSST index is signaled only when there is more than one non-zero coefficient in the CU. If the value is not signaled, it defaults to zero. A null value for this syntax element indicates that no secondary transform is applied to the current CU, and values of 1-3 indicate which secondary transform from the set should be applied.
[0156] Преобразование NSST может не применяться для блока, кодированного в режиме пропуска преобразования. Когда индекс NSST сигнализируется для CU и не равен нулю, NSST не используется для блока компонента, который кодируется в режиме пропуска преобразования в CU. Когда CU с блоками всех компонентов кодируется в режиме пропуска преобразования или количество ненулевых коэффициентов блоков СВ режима без пропуска преобразования меньше 2, индекс NSST не сигнализируется для CU.[0156] The NSST transform may not be applied to a block encoded in the transform skipping mode. When the NSST index is signaled for a CU and is non-zero, the NSST is not used for a component block that is encoded in the CU's Transform Skip Mode. When a CU with all component blocks is encoded in the transform skip mode or the number of non-zero coefficients of the non-skipping mode CB blocks is less than 2, the NSST index is not signaled to the CU.
[0157] 4.2 Преобразование уменьшенного размера (RST, reduced size transform)[0157] 4.2 Reduced Size Transform (RST)
[0158] В некоторых вариантах осуществления изобретения используется вариант NSST, называемый преобразованием уменьшенного размера (RST) или низкочастотным неразделяемым вторичным преобразованием (LFNST, low-frequency non-separable secondary transform). Преобразование RST использует схему преобразования с обнулением. Для энтропийного кодирования индекса NSST проверяется, является ли режим внутреннего предсказания планарным или DC.[0158] In some embodiments of the invention, a variant of NSST is used, called the reduced size transform (RST) or low-frequency non-separable secondary transform (LFNST, low-frequency non-separable secondary transform). The RST transformation uses a null transformation scheme. For entropy coding of the NSST index, it is checked whether the intra prediction mode is planar or DC.
[0159] В примере применяются 4 набора преобразований, и каждый набор преобразований включает три ядра преобразования RST. Ядра преобразования RST могут иметь размер 16×48 (или 16×64) (применяется для блока коэффициентов преобразования с высотой и шириной, которые больше или равны 8) или 16×16 (применяется для блока коэффициентов преобразования с высотой или шириной, равной 4). Для удобства преобразование 16×48 (или 16×64) обозначается как RST8×8, а преобразование 16×16 обозначается как RST4×4.[0159] In the example, 4 transform sets are applied, and each transform set includes three RST transform kernels. RST transform kernels can be 16x48 (or 16x64) (applicable for a transform coefficient block with a height and width greater than or equal to 8) or 16x16 (applicable for a transform coefficient block with a height or width equal to 4) . For convenience, a 16x48 (or 16x64) transform is referred to as RST8x8 and a 16x16 transform is referred to as RST4x4.
[0160] Для RST8×8, два альтернативных процесса (2000) и (2100) преобразования с использованием ядер 16×64 преобразования и ядер 16×48 преобразования показаны на фиг. 20 и фиг. 21, соответственно. Процесс, в котором используются ядра 16×48 преобразования, принят в проекте 5 VVC (VVC Draft 5).[0160] For RST8x8, two alternative transform processes (2000) and (2100) using transform kernels 16x64 and transform kernels 16x48 are shown in FIG. 20 and FIG. 21, respectively. The process that uses 16×48 transform kernels is adopted in VVC Draft 5 (VVC Draft 5).
[0161] В процессе (2000) на фиг. 20, например, на стороне кодера может сначала выполняться прямое первичное преобразование (2010) для блока остатка, за ним следует прямое вторичное преобразование (2012) коэффициентов, сформированных из прямого первичного преобразования (2010). В прямом вторичном преобразовании (2012) 64 коэффициента субблоков 4×4 A/B/C/D в верхнем левом углу блока коэффициентов (2013) представляют в виде вектора длиной 64 и умножают на матрицу преобразования размером 16×64 в соответствии с уравнением (3), в результате чего получают вектор длиной 16. Элементами вектора длиной 16 снова заполняют левый верхний левый субблок А 4×4 блока коэффициентов (2013). Коэффициенты в субблоках B/C/D могут принимать нулевые значения. Полученные в результате коэффициенты после прямого вторичного преобразования 2012 затем квантуются на этапе (2014) и энтропийно кодируются для формирования кодированных битов в битовом потоке (2016).[0161] In progress (2000) in FIG. 20, for example, at the encoder side, a direct primary transform (2010) may be performed first on the residual block, followed by a direct secondary transform (2012) of the coefficients generated from the direct primary transform (2010). In the forward secondary transform (2012), the 64 coefficients of the 4×4 A/B/C/D subblocks in the upper left corner of the coefficient block (2013) are represented as a vector of
[0162] Кодированные биты могут приниматься на стороне декодера и энтропийно декодироваться с последующим деквантованием (2024) для формирования блока (2023) коэффициентов. Обратное вторичное преобразование (2022) может выполняться для 16 коэффициентов в верхнем левом субблоке Ε размером 4×4 для получения 64 коэффициентов, которыми снова заполняют субблоки 4×4 B/F/G/H. После этого, коэффициенты в блоке (2023) после обратного вторичного преобразования (2022) могут быть обработаны с помощью обратного первичного преобразования (2020) для получения восстановленного блока остатка.[0162] The encoded bits may be received at the decoder side and entropy decoded followed by dequantization (2024) to form a block (2023) of coefficients. An inverse secondary transform (2022) may be performed on the 16 coefficients in the top left 4×4 subblock E to obtain 64 coefficients that are again filled in the 4×4 B/F/G/H subblocks. Thereafter, the coefficients in the block (2023) after the inverse secondary transform (2022) may be processed with the inverse primary transform (2020) to obtain a reconstructed residual block.
[0163] Процесс (2100) в примере на фиг. 21 аналогичен процессу (2000), за исключением того, что во время прямого вторичного преобразования (2012) обрабатывается меньше, а именно 48, коэффициентов. В частности, 48 коэффициентов в субблоках А/В/С обрабатываются с меньшей матрицей преобразования размером 16×48. Использование меньшей матрицы преобразования может уменьшить размер памяти для хранения матрицы преобразования и соответственно сложность вычислений.[0163] The process (2100) in the example of FIG. 21 is similar to the process (2000), except that fewer, namely 48, coefficients are processed during the direct secondary transform (2012). In particular, the 48 coefficients in the A/B/C subblocks are processed with a smaller 16x48 transform matrix. The use of a smaller transformation matrix can reduce the size of the memory for storing the transformation matrix and thus the computational complexity.
[0164] Фиг. 22 показывает пример таблицы (2200) синтаксиса уровня CU, где синтаксический элемент lfnst_idx, указывающий на выбор ядра LFNST, сигнализируется в конце синтаксиса уровня CU.[0164] FIG. 22 shows an example of a CU level syntax table (2200) where the lfnst_idx syntax element indicating the LFNST core selection is signaled at the end of the CU level syntax.
[0165] 4.3 Примеры вычисления RST[0165] 4.3 RST Calculation Examples
[0166] Основная идея сокращенного преобразования (RT, Reduced Transform) состоит в отображении N-мерного вектора в R-мерный вектор другого пространства, где R/N (R<N) - коэффициент уменьшения.[0166] The main idea of the reduced transformation (RT, Reduced Transform) is to map an N-dimensional vector to an R-dimensional vector of another space, where R/N (R<N) is the reduction factor.
[0167] Матрица RST представляет собой матрицу R×N, показанную ниже:[0167] The RST matrix is the R×N matrix shown below:
где R строк преобразования являются R базисными элементами N-мерного пространства. Матрица обратного преобразования для RT является транспонированной матрицей прямого преобразования.where the R transformation rows are the R basis elements of an N-dimensional space. The inverse transformation matrix for RT is the transpose of the forward transformation matrix.
[0168] Фиг. 23 показывает процесс (2301) сокращенного преобразования и процесс (2302) сокращенного обратного преобразования. Матрица Τ представляет собой матрицу преобразования RST, имеющую размер R×N, а матрица Тт представляет собой транспонированную матрицу Т, имеющую размер N×R.[0168] FIG. 23 shows a shortened transform process (2301) and a shortened inverse transform process (2302). The matrix Τ is an RST transformation matrix having the size R×N, and the matrix T t is the transposed matrix T having the size N×R.
[0169] В преобразовании RST8x8 используется коэффициент уменьшения, равный 4 (размер 1/4). Например, вместо размера 64×64, который представляет собой обычный размер матрицы неразделяемого преобразования 8×8, используется прямая матрица 16×64. Обратная матрица RST размером 64×16 используется на стороне декодера для формирования коэффициентов ядра (первичного) преобразования в верхних левых областях 8×8. Прямое преобразование RST8×8 использует матрицы 16×64 (или 8×64 для блока 8×8), так что образуются ненулевые коэффициенты только в верхней левой области 4×4 внутри данной области 8×8. Другими словами, если применяется преобразование RST, то область 8×8, за исключением верхней левой области 4×4, будет иметь только нулевые коэффициенты. Для преобразования RST4×4 может применяться прямое умножение матриц 16×16 (или 8×16 для блока 4×4).[0169] The RST8x8 conversion uses a reduction factor of 4 (
[0170] Кроме того, для преобразования RST8×8, чтобы дополнительно уменьшить размер матрицы преобразования, вместо всех верхних левых 8×8 коэффициентов (заштрихованные субблоки на фиг. 24А) блока (2410) остатка в качестве входных данных для вычисления вторичного преобразования коэффициенты трех верхних левых субблоков 4×4 (заштрихованные субблоки на фиг. 24В) блока (2410) остатка используют в качестве входных данных для вычисления вторичного преобразования.[0170] In addition, for the RST8x8 transform to further reduce the size of the transform matrix, instead of all the top left 8x8 coefficients (shaded sub-blocks in FIG. 24A) of the residual block (2410) as input to calculate the secondary transform, the coefficients The top left 4×4 subblocks (shaded subblocks in FIG. 24B) of the residual block (2410) are used as input to calculate the secondary transform.
[0171] В примере, обратное преобразование RST применяется, когда удовлетворяются следующие два условия: (i) соответствующий размер блока больше или равен данному пороговому значению (W>=4 && Н>=4), и (ii) флаг пропуска преобразования равен нулю. Например, если ширина (W) и высота (Н) блока коэффициентов преобразования больше 4, то преобразование RST8×8 применяется к верхней левой области 8×8 блока коэффициентов преобразования. В противном случае преобразование RST4×4 применяется к верхней левой области размером min(8, W) × min(8, Η) блока коэффициентов преобразования.[0171] In an example, the inverse RST is applied when the following two conditions are satisfied: (i) the corresponding block size is greater than or equal to a given threshold (W>=4 && H>=4), and (ii) the transform skip flag is zero . For example, if the width (W) and height (H) of the transform coefficient block is greater than 4, then an RST8×8 transform is applied to the top left 8×8 region of the transform coefficient block. Otherwise, the RST4x4 transform is applied to the upper left region of size min(8, W) × min(8, Η) of the transform coefficient block.
[0172] В примере, когда индекс RST равен 0, преобразование RST не применяется. В противном случае преобразование RST применяется, и в примере выбирается ядро с индексом RST. В примере, преобразование RST применяется для CU внутреннего предсказания как в слайсах внутреннего предсказания, так и в слайсах внешнего предсказания, и для яркости, и для цветности. Если включено двойное дерево, индексы RST для яркости и цветности сигнализируются по отдельности. Для слайса с внешним кодированием (двойное дерево отключено) один индекс RST сигнализируется и используется как для яркости, так и для цветности. Когда выбран режим ISP, преобразование RST отключено, и индекс RST не сигнализируется.[0172] In an example, when the RST index is 0, no RST transformation is applied. Otherwise, the RST transformation is applied and the kernel with the RST index is selected in the example. In the example, an RST transform is applied to the intra prediction CUs in both intra prediction slices and inter prediction slices for both luma and chrominance. If dual tree is enabled, the RST indexes for luma and chrominance are signaled separately. For an outer-encoded slice (dual tree disabled), one RST index is signaled and used for both luma and chrominance. When ISP mode is selected, RST conversion is disabled and the RST index is not signaled.
[0173] 4.4 Пример выбора матриц преобразования RST[0173] 4.4 RST transformation matrix selection example
[0174] В одном примере матрица преобразования RST может быть выбрана из четырех наборов преобразований, каждый из которых состоит из двух преобразований. Какой набор преобразований применяется, можно определить на основе применяемого режима внутреннего предсказания следующим образом. В примере матрица RST может быть выбрана из четырех наборов преобразований, каждый из которых состоит из двух преобразований. Какой набор преобразований применяется, можно определить на основе применяемого режима внутреннего предсказания следующим образом. Когда указан один из трех режимов линейной модели перекрестных компонентов (CCLM, cross component linear model), можно выбрать набор 0 преобразований. В противном случае выбор набора преобразований может быть выполнен согласно таблице (2500), показанной на фиг. 25. Индекс для доступа к таблице (2500), обозначенный IntraPredMode, может находиться в диапазоне [-14, 83], который представляет собой преобразованный индекс режима, используемый, например, для широкоугольного внутреннего предсказания.[0174] In one example, the transformation matrix RST may be selected from four sets of transformations, each consisting of two transformations. Which set of transforms is applied can be determined based on the applied intra prediction mode as follows. In the example, the RST matrix can be selected from four sets of transformations, each consisting of two transformations. Which set of transforms is applied can be determined based on the applied intra prediction mode as follows. When one of the three cross component linear model (CCLM) modes is specified, a set of 0 transformations can be selected. Otherwise, the selection of a set of transformations may be performed according to the table (2500) shown in FIG. 25. An index for table access (2500), denoted IntraPredMode, may be in the range [-14, 83], which is a converted mode index used for wide-angle intra prediction, for example.
[0175] 5. Режим внутреннего предсказания на основе матрицы (MIP, Matrix-Based Intra Prediction)[0175] 5. Matrix-Based Intra Prediction (MIP) mode
[0176] В некоторых вариантах осуществления изобретения используется режим внутреннего предсказания на основе матрицы (MIP). Фиг. 26 показывает пример процесса (2600) режима MIP. Для предсказания отсчетов прямоугольного блока (2610) шириной W и высотой Η, MIP использует одну строку из Η реконструированных соседних граничных отсчетов слева от блока (2610) и одну строку из W реконструированных соседних граничных отсчетов над блоком (2610) в качестве входных данных. Если реконструированные отсчеты недоступны, реконструированные отсчеты могут быть сформированы так же, как и при обычном внутреннем предсказании.[0176] In some embodiments of the invention, a matrix-based intra prediction (MIP) mode is used. Fig. 26 shows an example of a MIP mode process (2600). To predict samples of a rectangular block (2610) of width W and height Η, MIP uses one row of Η reconstructed adjacent boundary samples to the left of the block (2610) and one row of W reconstructed adjacent boundary samples above the block (2610) as input. If reconstructed samples are not available, reconstructed samples can be generated in the same way as in normal intra prediction.
[0177] Формирование сигналов предсказания может быть основано на следующих трех этапах (2601)-(2603). На этапе (2601) из граничных отсчетов четыре отсчета в случае W=H=4 и восемь отсчетов во всех других случаях извлекают посредством усреднения.[0177] Prediction signal generation may be based on the following three steps (2601)-(2603). In step (2601), from the boundary samples, four samples in the case of W=H=4 and eight samples in all other cases are extracted by averaging.
[0178] На этапе (2602) выполняют умножение матрицы на вектор Ak'bdryred с последующим добавлением смещения bk с усредненными отсчетами bdryred в качестве входных данных. В результате получают сокращенный сигнал предсказания на субдискретизированном наборе (2621) отсчетов в исходном блоке. Матрица Аk и смещение bk могут быть выбраны на основе индекса к режима MIP.[0178] At step (2602), a matrix multiplication by the Ak'bdry red vector is performed, followed by adding a bias bk with averaged bdry red samples as input. As a result, a reduced prediction signal is obtained on the downsampled set (2621) of samples in the original block. Matrix A k and offset b k may be selected based on the index k of the MIP mode.
[0179] На этапе (2603) сигнал предсказания в оставшихся позициях (2622) формируют из сигнала предсказания в субдискретизированном наборе (2621) посредством линейной интерполяции, которая представляет собой одноэтапную линейную интерполяцию в каждом направлении.[0179] In step (2603), the prediction signal in the remaining positions (2622) is generated from the prediction signal in the downsampled set (2621) by linear interpolation, which is a one-stage linear interpolation in each direction.
[0180] Матрицы Ak и векторы bk смещения, необходимые для формирования сигнала предсказания, могут быть взяты из трех наборов S0, S1; S2 матриц. Набор S0 состоит из 18 матриц i ∈ {0, …, 17), каждая из которых имеет 16 строк и 4 столбца, и 18 векторов смещения i ∈ [0, …, 17} размером 16. Матрицы и векторы смещения этого набора используются для блоков размером 4×4. Набор S1 состоит из 10 матриц i ∈ [0, …, 9), каждая из которых имеет 16 строк и 8 столбцов, и 10 векторов смещения i ∈ [0, …, 9), каждый размером 16. Матрицы и векторы смещения этого набора используются для блоков размером 4×8, 8×4 и 8×8. Наконец, набор S2 состоит из 6 матриц i ∈ [0, …, 5), каждая из которых имеет 64 строки и 8 столбцов, и 6 векторов смещения i ∈ [0, …, 5} размером 64. Матрицы и векторы смещения этого набора или часть этих матриц и векторов смещения используются для всех других форм блоков.[0180] Matrices A k and offset vectors b k necessary to generate a prediction signal can be taken from three sets S 0 , S 1; S 2 matrices. The set S 0 consists of 18 matrices i ∈ {0, …, 17), each of which has 16 rows and 4 columns, and 18 displacement vectors i ∈ [0, …, 17} of
[0181] Как показано, для блока 8×8 (2610) предсказание MIP использует четыре средних значения по каждой оси границы. Полученные восемь входных отсчетов попадают в умножение матрицы на вектор. Матрицы взяты из набора S1. Это дает 16 отсчетов (2621) на нечетных позициях блока предсказания. Таким образом, всего выполняется (8⋅16)/(8⋅8)=2 умножения на отсчет. После добавления смещения эти отсчеты интерполируются по вертикали с использованием сокращенных отсчетов верхней границы. Горизонтальная интерполяция выполняется с использованием исходных отсчетов левой границы. В этом случае процесс интерполяции не требует никаких умножений.[0181] As shown, for an 8×8 block (2610), MIP prediction uses four averages along each boundary axis. The resulting eight input samples fall into the multiplication of the matrix by the vector. The matrices are taken from the set S 1 . This gives 16 samples (2621) at odd positions of the prediction block. Thus, in total, (8⋅16)/(8⋅8)=2 multiplications per sample are performed. After adding an offset, these samples are interpolated vertically using the reduced upper bound samples. Horizontal interpolation is performed using the original samples of the left border. In this case, the interpolation process does not require any multiplications.
[0182] 5.1 Сигнализация режима MIP[0182] 5.1 MIP mode signaling
[0183] В некоторых вариантах осуществления изобретения для каждого пакета кодирования (CU) в режиме внутреннего предсказания в битовом потоке может передаваться флаг, указывающий, применяется ли режим MIP для соответствующего пакета предсказания (PU) или нет. Если режим MIP применяется, индекс predmode режима MIP сигнализируется с использованием списка МРМ, включающего 3 режима МРМ.[0183] In some embodiments of the invention, for each coding packet (CU) in the intra prediction mode, a flag may be transmitted in the bitstream indicating whether the MIP mode is applied to the corresponding prediction packet (PU) or not. If a MIP mode is applied, the MIP mode predmode index is signaled using an MPM list including 3 MPM modes.
[0184] Получение режимов МРМ может осуществляться с использованием режимов внутреннего кодирования верхнего и левого PU следующим образом. Имеются три фиксированных таблицы отображения map_angular_to_mipidx, idx ∈ {0,1,2}, причем каждая таблица связывает каждый традиционный режим внутреннего предсказания predmodeAngular с конкретным режимом MIP, как показано в следующей формуле.[0184] Deriving the MPM modes may be performed using the upper and left PU intra coding modes as follows. There are three fixed mapping tables map_angular_to_mip idx , idx ∈ {0,1,2}, with each table associating each traditional Angular predmode intra-prediction mode with a specific MIP mode, as shown in the following formula.
где map_angular_to_mip - это фиксированная таблица соответствия. Индекс таблицы отображения определяется на основе ширины W и высоты Η пакета PU, и всего доступно три индекса, как описано ниже,where map_angular_to_mip is a fixed lookup table. The mapping table index is determined based on the width W and the height Η of the PU packet, and there are three indexes in total, as described below,
которые указывают, из какого из трех наборов должны быть взяты параметры ΜΙΡ выше.which indicate from which of the three sets the ΜΙΡ parameters above should be taken.
[0185] В некоторых примерах, чтобы сформировать список МРМ для текущего блока, который кодируется в режиме ΜΙΡ, сначала получают указанный выше режим ΜΙΡ, а именно и левый режим ΜΙΡ, а именно [0185] In some examples, in order to generate the MPM list for the current block, which is encoded in the ΜΙΡ mode, the above ΜΙΡ mode is first obtained, namely and the left regime ΜΙΡ, namely
[0186] Значение может быть получено следующим образом:[0186] Meaning can be obtained like this:
- Если верхний PU, PUabove, доступен и принадлежит тому же CTU, где находится текущий PU, и PUabove кодируется с помощью MIP с использованием режима MIP,- If the top PU, PU above , is available and belongs to the same CTU as the current PU, and PU above is MIP encoded using MIP mode,
- Если верхний PU, PUabove, доступен и принадлежит тому же CTU, где находится текущий PU, и PUabove кодируется с использованием обычного режима внутреннего предсказания - If the top PU, PU above , is available and belongs to the same CTU as the current PU, and PU above is encoded using normal intra prediction mode
- В противном случае- Otherwise
что означает, что этот режим недоступен.which means that this mode is not available.
[0187] Значение получают тем же способом, что и но без проверки, принадлежит ли левый PU тому же CTU, где находится текущий PU.[0187] Meaning obtained in the same way as but without checking if the left PU belongs to the same CTU as the current PU.
[0188] Наконец, с учетом полученных и трех заранее заданных фиксированных списка МРМ по умолчанию listidx, idx ∈ [0,1,2], каждый из которых содержит три различных режима MIP, создается список МРМ. Список МРМ создается на основе заданного списка по умолчанию listidx(PU) и путем замены -1 значениями по умолчанию, а также удаления повторяющихся режимов MIP.[0188] Finally, taking into account the obtained and three predefined fixed default MPM lists list idx , idx ∈ [0,1,2], each containing three different MIP modes, an MPM list is created. The MPM list is created based on the given default list list idx(PU) and by replacing -1 with the default values, as well as removing duplicate MIP modes.
[0189] В качестве примера фиг. 27 показывает таблицу синтаксиса уровня CU, где флаги, сигнализирующие режимы MIP, показаны в рамке (2701).[0189] As an example, FIG. 27 shows a CU level syntax table where flags signaling MIP modes are shown in box (2701).
[0190] 5.2 Получение списка МРМ для обычных режимов внутреннего предсказания[0190] 5.2 Obtaining the MPM List for Regular Intra Prediction Modes
[0191] В некоторых вариантах осуществления изобретения режимы MIP согласованы с кодированием на основе МРМ традиционных режимов внутреннего предсказания следующим образом. Процессы получения списка МРМ яркости и цветности для обычных режимов внутреннего предсказания используют отдельные фиксированные таблицы map_mip_to_angularidx, idx ∈ {0,1,2}, которые сопоставляют predmodeMIP режима MIP с одним из обычных режимов внутреннего предсказания,[0191] In some embodiments of the invention, the MIP modes are consistent with MPM-based coding of traditional intra prediction modes as follows. The luma and chrominance MPM list derivation processes for normal intra prediction modes use separate fixed tables map_mip_to_angular idx , idx ∈ {0,1,2} that map the MIP mode's predmode MIP to one of the normal intra prediction modes,
где map_mip_to_angular - это фиксированная таблица соответствия. Для получения списка МРМ яркости всякий раз, когда соседний блок яркости кодируется с помощью режима MIP predmodeMIP, этот блок обрабатывается, как если бы он использовал традиционный режим внутреннего предсказания predmodeAngu]ar. Для получения списка МРМ цветности всякий раз, когда текущий блок яркости использует режим MIP, то же отображение используется для преобразования режима MIP в обычный режим внутреннего предсказания.where map_mip_to_angular is the fixed lookup table. To obtain a luminance MPM list, whenever an adjacent luminance block is encoded using the MIP mode predmode MIP , that block is processed as if it were using the traditional intra prediction mode predmode Angu]ar . To obtain a chroma MPM list, whenever the current luminance block uses the MIP mode, the same mapping is used to convert the MIP mode to the normal intra prediction mode.
[0192] III. Включение неявного выбора преобразования на основе синтаксических элементов высокого уровня или синтаксических элементов уровня блока[0192] III. Enabling implicit conversion selection based on high-level syntax elements or block-level syntax elements
[0193] В некоторых вариантах осуществления изобретения могут использоваться две схемы кодирования с преобразованием - неявное преобразование (или называемое неявным выбором преобразования) и явное преобразование (или называемое явным выбором преобразования).[0193] In some embodiments of the invention, two transform coding schemes, implicit transform (or referred to as implicit transform selection) and explicit transform (or referred to as explicit transform selection), can be used.
[0194] При неявном преобразовании группа преобразований, не являющихся DCT-2, (например, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) может быть выбрана без сигнализации индекса преобразования. Например, группа преобразований, не являющихся DCT-2, может быть выбрана с использованием уже кодированной информации, которая доступна как для кодера, так и для соответствующего декодера. Уже кодированная информация может включать, помимо прочего, режим внутреннего предсказания (например, планарный режим, режим DC, угловые режимы), размер блока, ширину блока, высоту блока, соотношение сторон блока, размер области блока, режим внутреннего кодирования (например, используется ли множество опорных линий (MRL), ISP, MIP), позиции выбранных кандидатов на пространственное слияние (например, верхний кандидат на слияние, левый кандидат на слияние), режим внешнего предсказания (например, комбинация внешнего предсказания в зависимости от позиции (inter-PDPC, inter position dependent prediction combination), режим комбинированного внешнего и внутреннего предсказания (СIIР, combined inter intra prediction)).[0194] In implicit mapping, a group of non-DCT-2 transforms (eg, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) can be selected without signaling the transform index. For example, a group of non-DCT-2 transforms may be selected using already encoded information that is available to both the encoder and the corresponding decoder. Already encoded information may include, but is not limited to, intra prediction mode (e.g., planar mode, DC mode, angle modes), block size, block width, block height, block aspect ratio, block area size, intra coding mode (e.g., whether reference line set (MRL), ISP, MIP), positions of selected spatial merge candidates (e.g., top merge candidate, left merge candidate), inter-prediction mode (e.g., position dependent inter-prediction combination (inter-PDPC, inter position dependent prediction combination), combined inter intra prediction (CIIP) mode).
[0195] Напротив, при явном преобразовании одно преобразование может быть выбрано из группы возможных типов преобразований (например, DCT-2, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) с индексом, сигнализируемым для указания, какой тип преобразования выбран.[0195] In contrast, in an explicit transform, one transform may be selected from a group of possible transform types (e.g., DCT-2, DST-1, DCT-5, DST-7, DCT-8, DST-4, DCT-4) with an index signaled to indicate which type of transformation is selected.
[0196] 1. Включение неявного преобразования, когда явный MTS отключен[0196] 1. Enable implicit conversion when explicit MTS is disabled
[0197] В некоторых вариантах осуществления изобретения, как описано в разделе II.3.2, для блока остатка с внутренним предсказанием, который не кодируется ISP, неявный выбор преобразования может быть включен, когда явный MTS отключен для блоков остатка как с внутренним, так и с внешним предсказанием, как указано синтаксическими элементами высокого уровня (HLS). Например, когда оба синтаксических элемента SPS sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0, декодер может решить включить неявный выбор преобразования для изображений или блоков, связанных с синтаксическими элементами SPS.[0197] In some embodiments of the invention, as described in Section II.3.2, for an intra prediction residual block that is not ISP encoded, implicit transform selection may be enabled when explicit MTS is disabled for both intra and inter prediction residual blocks. extrinsic prediction as indicated by High Level Syntax Elements (HLS). For example, when both sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag SPS syntax elements are equal to 0, a decoder may decide to enable implicit transform selection for pictures or blocks associated with SPS syntax elements.
[0198] В качестве примера фиг. 28А-28В в совокупности показывают текст (2800), определяющий процесс кодирования с преобразованием для выполнения явного или неявного выбора преобразования для текущего блока на основе соответствующих синтаксических элементов, принятых из битового потока. Текст (2800) может использоваться как часть стандарта кодирования видеоданных. Два раздела (2801) и (2802) показаны на фиг. 28А, и один раздел (2803) и две таблицы (2804) и (2805) показаны на фиг. 28В.[0198] As an example, FIG. 28A-28B collectively show text (2800) specifying a transform encoding process for performing implicit or implicit transform selection for the current block based on corresponding syntax elements received from the bitstream. Text (2800) may be used as part of a video coding standard. Two sections (2801) and (2802) are shown in FIG. 28A and one partition (2803) and two tables (2804) and (2805) are shown in FIG. 28V.
[0199] В разделе (2801) описаны входные и выходные данные процесса кодирования с преобразованием. В частности, местоположение, размер, цветовая составляющая, коэффициенты преобразования с деквантованием текущего блока являются входными данными, а отсчеты остатка после обработки обратного преобразования с использованием выбранных преобразований являются выходными данными.[0199] Section (2801) describes the input and output of the transform encoding process. In particular, the location, size, chrominance, dequantizing transform coefficients of the current block are inputs, and the residual samples after inverse transform processing using the selected transforms are outputs.
[0200] В разделе (2802) описано получение переменной, обозначенной implicitMtsEnabled. Переменная указывает, включен ли неявный выбор. Как описано, если синтаксический элемент SPS, sps_mts_enabled_flag, равен 1 (что указывает на то, что MTS включен для изображений или блоков, связанных с этим синтаксическим элементом SPS), значение implicitMtsEnabled равно 1, когда выполняется одно из трех следующих условий: (i) для кодирования текущего блока используется ISP; (ii) SBT включено, и обе стороны текущего блока меньше или равны 32, что указывает на использование SBT; или (iii) оба значения sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0 (что указывает на то, что явный MTS отключен как для блоков с внутренним кодированием, так и для блоков с внешним кодированием), и текущий блок является блоком с внутренним кодированием. В противном случае значение implicitMtsEnabled устанавливается равным 0, что указывает на то, что неявный выбор преобразования отключен для текущего блока.[0200] Section (2802) describes obtaining a variable denoted implicitMtsEnabled. The variable specifies whether implicit selection is enabled. As described, if the SPS syntax element, sps_mts_enabled_flag, is equal to 1 (indicating that MTS is enabled for images or blocks associated with that SPS syntax element), the value of implicitMtsEnabled is equal to 1 when one of the following three conditions is met: (i) ISP is used to encode the current block; (ii) SBT is on and both sides of the current block are less than or equal to 32, indicating the use of SBT; or (iii) sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are both 0 (indicating that explicit MTS is disabled for both intra- and outer-encoding blocks) and the current block is an intra-encoding block. Otherwise, the implicitMtsEnabled value is set to 0, indicating that implicit transform selection is disabled for the current block.
[0201] Как описано в разделе (2802), согласно условию (i), для блока с внутренним предсказанием, кодированного в режиме ISP, неявное преобразование может быть включено для кодирования этого блока с внутренним предсказанием. Согласно условию (iii), для блока с внутренним предсказанием, не кодированного в режиме ISP, когда явный MTS отключен как для блоков с внутренним предсказанием, так и для блоков с внешним предсказанием, может быть включено неявное преобразование для кодирования блока с внутренним предсказанием, не кодированного в режиме ISP.[0201] As described in section (2802), according to condition (i), for an intra prediction block encoded in ISP mode, an implicit transform may be included to encode that intra prediction block. According to condition (iii), for an intra prediction block not coded in ISP mode, when explicit MTS is disabled for both intra prediction blocks and inter prediction blocks, an implicit transform can be enabled to encode the intra prediction block without encoded in ISP mode.
[0202] В разделе (2803) вертикальные и горизонтальные преобразования определяются в соответствии с переменной implicitMtsEnabled, входными данными для процесса и соответствующими синтаксическими элементами. Например, когда значения sps_explicit_mts_intra_enabled_flag и sps_explicit_mts_inter_enabled_flag равны 0, текущему блоку (то есть блоку компонента яркости и с внутренним предсказанием) может быть задано ядро горизонтального преобразования (обозначенное trTypeHor) и ядро вертикального преобразования (обозначенное trTypeVer) согласно выражениям (3-1) и (3-2), соответственно.[0202] In section (2803), vertical and horizontal transformations are determined in accordance with the variable implicitMtsEnabled, the input to the process, and the corresponding syntax elements. For example, when the values of sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_inter_enabled_flag are 0, the current block (that is, the luma component and intra-prediction block) can be given a horizontal transformation kernel (denoted trTypeHor) and a vertical transformation kernel (denoted trTypeVer) according to expressions (3-1) and ( 3-2), respectively.
[0203] В таблицах (2804) и (2805) числа 1 и 2 для указания горизонтального или вертикального типов ядра преобразования указывают преобразование DST-7 и преобразование DCT-8, соответственно, в то время как число 0 указывает преобразование DCT-2. В некоторых примерах преобразования DST-4 могут использоваться вместо преобразований DST-7.[0203] In tables (2804) and (2805), the
[0204] В примерах на фиг. 28А-28В для блоков, управляемых элементами HLS sps_explicit_mts_intra_enabled_flag и sps_explicit_mts _nter_enabled_flag, явный MTS для блоков с внешним кодированием и неявное преобразование для блоков с внутренним кодированием (не кодированных ISP) не могут использоваться совместно. Однако неявный выбор преобразования в блоке остатка внутреннего предсказания не обязательно должен зависеть от элемента HLS (например, sps_explicit_mts_inter_enabled_flag), управляющего включением MTS для остатков внешнего предсказания. Таким образом, в некоторых вариантах осуществления изобретения для блока с внутренним кодированием, который не предсказывается в режиме ISP, возможность применения неявного преобразования зависит от того, может ли MTS применяться для остатка внутреннего предсказания (например, значение sps_explicit_mts_intra_enabled_flag), но не зависит от того, может ли MTS применяться для остатка внешнего предсказания (значение sps_explicit_mts_inter_enabled_flag). С таким механизмом управления разрешается одновременно включать использование MTS с внешним кодированием (явного MTS, применяемого для блока остатка с внешним предсказанием) и неявного преобразования (для остатков внутреннего предсказания).[0204] In the examples in FIG. 28A-28B, for blocks controlled by sps_explicit_mts_intra_enabled_flag and sps_explicit_mts_nter_enabled_flag HLS elements, explicit MTS for outer-encoded blocks and implicit transform for intra-encoded (non-ISP-encoded) blocks cannot be used together. However, the implicit transform selection in the intra prediction residual block need not depend on the HLS element (eg, sps_explicit_mts_inter_enabled_flag) controlling MTS enable for inter prediction residuals. Thus, in some embodiments of the invention, for an intra coding block that is not predicted in ISP mode, the possibility of applying an implicit transform depends on whether MTS can be applied to the intra prediction residual (for example, the value of sps_explicit_mts_intra_enabled_flag), but does not depend on whether whether MTS can be used for inter prediction residual (sps_explicit_mts_inter_enabled_flag value). With such a control mechanism, it is allowed to simultaneously enable the use of inter-coding MTS (an explicit MTS applied to an inter-predictive residual block) and an implicit transform (for intra prediction residuals).
[0205] Например, первый и второй элементы HLS могут быть приняты в декодере. Первый и второй элементы HLS управляют одним и тем же набором изображений или областей (например, видеопоследовательностью, изображением, слайсом, тайлом и т.п.), которые могут включать блоки остатка с внутренним кодированием и блоки остатка с внешним кодированием. Первый элемент HLS указывает, включен или отключен явный MTS для соответствующих блоков остатка с внутренним кодированием, а второй элемент HLS указывает, включен или отключен явный MTS для соответствующих блоков остатка с внешним кодированием. Что касается термина "MTS с внешним кодированием", явный MTS, применяемый для блока остатка с внутренним кодированием, может называться MTS с внутренним кодированием.[0205] For example, the first and second HLS elements may be received at a decoder. The first and second HLS elements manage the same set of pictures or areas (eg, video sequence, picture, slice, tile, etc.), which may include intra-coded residual blocks and outer-coded residual blocks. The first HLS element indicates whether explicit MTS is enabled or disabled for the corresponding intra-residual blocks, and the second HLS element indicates whether explicit MTS is enabled or disabled for the corresponding outer-encoded residual blocks. With regard to the term "Outer MTS", the explicit MTS applied to the Intra Residual Block may be referred to as Intra MTS.
[0206] Когда первый элемент HLS указывает на то, что явный MTS отключен для блоков остатка с внутренним кодированием, декодер может соответственно решить включить неявное преобразование (или неявный MTS) для блоков с внутренним кодированием, без учета значения второго элемента HLS. Например, второй элемент HLS может иметь значение 0 или 1, что не влияет на включение неявного преобразования для блока остатка с внутренним кодированием.[0206] When the first HLS element indicates that explicit MTS is disabled for intra-residual blocks, the decoder may accordingly decide to enable implicit transform (or implicit MTS) for intra-blocks, without regard to the value of the second HLS element. For example, the second element of the HLS may have a value of 0 or 1, which does not affect the inclusion of implicit conversion for the intra-residue block.
[0207] В качестве примера на фиг. 29 показаны модификации (2900) текста (2800), которые соответствуют схеме включения неявного преобразования, где могут совместно использоваться неявное преобразование для блоков остатка с внутренним кодированием и явное преобразование для блоков остатка с внешним кодированием. В модификациях (2900) удаленный текст отмечен зачеркиванием, а добавленный текст - подчеркиванием. Как показано, условие для значения sps_explicit_mts_inter_enabled_flag, равного 0, было удалено.[0207] As an example, in FIG. 29 shows modifications (2900) of text (2800) that correspond to an implicit conversion inclusion scheme where implicit conversion for intra-residual blocks and explicit conversion for outer-coded residual blocks can be combined. In modifications (2900), deleted text is marked with a strikethrough, and added text is marked with an underline. As shown, the condition for the value of sps_explicit_mts_inter_enabled_flag to be 0 has been removed.
[0208] 2. Отключение неявного преобразования, когда включены другие инструменты кодирования[0208] 2. Disabling implicit conversion when other encoding tools are enabled
[0209] В некоторых вариантах осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием (который не предсказывается в режиме ISP) зависит от того, включен ли конкретный инструмент кодирования, как указано посредством элемента HLS.[0209] In some embodiments of the invention, the possibility of applying an implicit transform to an intra-coding block (which is not predicted in ISP mode) depends on whether a particular encoding tool is included, as indicated by the HLS element.
[0210] 2.1 Когда включено NSST[0210] 2.1 When NSST is enabled
[0211] В варианте осуществления изобретения неявное преобразование может быть отключено для блока с внутренним кодированием (который не предсказывается в режиме ISP), когда элемент HLS указывает на то, что NSST включено. Например, как описано в разделе II.4.1, матрица Τ преобразования используется в уравнении (3) для обработки вторичного преобразования. Матрица Τ преобразования может включать постоянные элементы и может быть сформирована с допущением определенной статистики целевых блоков коэффициентов, таких как блоки коэффициентов, полученные в результате явного выбора преобразования. Таким образом, блок коэффициентов, полученный в результате неявного выбора преобразования, может не совпадать с NSST с точки зрения статистики соответствующих коэффициентов. Например, применение NSST к результатам неявного преобразования может не улучшить производительность кодирования. По этой причине может быть желательно отключение неявного преобразования при включенном NSST.[0211] In an embodiment of the invention, implicit conversion may be disabled for an intra-coded block (which is not predicted in ISP mode) when the HLS element indicates that NSST is enabled. For example, as described in section II.4.1, the transformation matrix Τ is used in equation (3) to process the secondary transformation. The transformation matrix Τ may include constant elements and may be generated assuming certain statistics of target coefficient blocks, such as coefficient blocks resulting from explicit transformation selection. Thus, the block of coefficients resulting from the implicit transformation selection may not match the NSST in terms of statistics of the corresponding coefficients. For example, applying NSST to the results of an implicit conversion may not improve encoding performance. For this reason, it may be desirable to disable implicit conversion when NSST is enabled.
[0212] В этом описании термин NSST может использоваться для обозначения семейства схем кодирования с неразделяемым вторичным преобразованием, таких как первоначальная схема NSST, RST, LFNST и т.п.[0212] In this description, the term NSST may be used to refer to a family of non-separable second transform coding schemes, such as the original NSST scheme, RST, LFNST, and the like.
[0213] Например, декодер может принимать два элемента HLS: один элемент HLS (например, sps_explicit_mts_intra_enabled_flag) указывает на то, что явный MTS отключен, в то время как другой элемент HLS (например, sps_lfnst_enabled_flag) указывает на то, что NSST включено. Соответственно, декодер может решить не включать неявное преобразование для блоков с внутренним кодированием, управляемых этими двумя элементами HLS. Напротив, если один элемент HLS указывает на то, что явный MTS отключен, а другой элемент HLS указывает на то, что NSST также отключено, декодер может решить включить неявное преобразование для соответствующих блоков с внутренним кодированием.[0213] For example, a decoder may receive two HLS elements: one HLS element (eg, sps_explicit_mts_intra_enabled_flag) indicates that explicit MTS is disabled, while another HLS element (eg, sps_lfnst_enabled_flag) indicates that NSST is enabled. Accordingly, the decoder may decide not to enable implicit transformation for the intra-blocks controlled by these two HLS elements. Conversely, if one HLS element indicates that explicit MTS is disabled and another HLS element indicates that NSST is also disabled, the decoder may decide to enable implicit transformation for the corresponding intra-blocks.
[0214] В качестве примера на фиг. 30 показаны модификации (3000) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда NSST отключено. Как показано, к условию (iii) добавлено дополнительное ограничение "значение sps_lfnst_enabled_flag равно 0" для получения переменной implicitMtsEnabled.[0214] As an example, in FIG. 30 shows modifications (3000) of text (2800) that correspond to a scenario in which implicit conversion is enabled when NSST is disabled. As shown, condition (iii) has an additional constraint "the value of sps_lfnst_enabled_flag is 0" added to obtain the implicitMtsEnabled variable.
[0215] 2.2 Когда включено MIP[0215] 2.2 When MIP is enabled
[0216] Подобно сценарию, в котором включено NSST, в некоторых вариантах осуществления изобретения неявное преобразование отключено для блока с внутренним кодированием (который не предсказывается в режиме ISP), когда элемент HLS указывает на то, что включено MIP. Например, применение режима внутреннего кодирования MIP для блока может привести к тому, что блок остатка будет иметь статистику, отличную от блоков остатка, кодированных с помощью обычных режимов внутреннего кодирования. Таким образом, блок остатка, кодированный с помощью MIP, может не совпадать с неявным преобразованием, которое может предполагать статистику остатка, полученную в результате обычных режимов внутреннего кодирования. Следовательно, отключение неявного преобразования может быть желательным, когда MIP включено.[0216] Similar to the scenario in which NSST is enabled, in some embodiments of the invention implicit conversion is disabled for an intra block (which is not predicted in ISP mode) when the HLS element indicates that MIP is enabled. For example, applying the MIP intra-coding mode to a block may result in the residual block having different statistics than residual blocks encoded with conventional intra-coding modes. Thus, a MIP-encoded residual block may not match the implicit transform, which may assume residual statistics resulting from conventional intra-coding modes. Therefore, disabling implicit conversion may be desirable when MIP is enabled.
[0217] Например, декодер может принимать два элемента HLS: один элемент HLS (например, sps_explicit_mts_intra_enabled_flag) указывает на то, что явный MTS отключен, в то время как другой элемент HLS (например, sps_mip_enabled_flag) указывает на то, что MIP включено. Соответственно, декодер может решить не включать неявное преобразование для блоков с внутренним кодированием, управляемых этими двумя элементами HLS. Напротив, если как явный MTS, так и MIP отключены, как указано двумя элементами HLS, декодер может решить включить неявное преобразование для соответствующих блоков с внутренним кодированием.[0217] For example, a decoder may receive two HLS elements: one HLS element (eg, sps_explicit_mts_intra_enabled_flag) indicates that explicit MTS is disabled, while another HLS element (eg, sps_mip_enabled_flag) indicates that MIP is enabled. Accordingly, the decoder may decide not to enable implicit transformation for the intra-blocks controlled by these two HLS elements. Conversely, if both explicit MTS and MIP are disabled, as indicated by two HLS elements, the decoder may decide to enable implicit mapping for the respective intra-coded blocks.
[0218] В качестве примера на фиг. 31 показаны модификации (3100) текста (2800), которые соответствуют сценарию, в котором неявное преобразование включено, когда MIP отключено. Как показано, к условию (iii) добавлено дополнительное ограничение "значение sps_mip_enabled_flag равно 0" для получения переменной implicitMtsEnabled.[0218] As an example, in FIG. 31 shows modifications (3100) of text (2800) that correspond to a scenario in which implicit conversion is enabled when MIP is disabled. As shown, condition (iii) has an additional constraint "the value of sps_mip_enabled_flag is 0" added to get the implicitMtsEnabled variable.
[0219] 3. Включение неявного преобразования на основе указаний синтаксических элементов уровня блока[0219] 3. Enabling implicit conversion based on indications of block-level syntax elements
[0220] В некоторых вариантах осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием (который не предсказывается в режиме ISP) зависит от того, применяется ли MTS, NSST или MIP для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока.[0220] In some embodiments, the ability to apply an implicit transform to an intra block (which is not predicted in ISP mode) depends on whether MTS, NSST, or MIP is applied to the intra block, as indicated by the block level syntax elements.
[0221] 3.1 Когда MTS и NSST не применяются[0221] 3.1 When MTS and NSST do not apply
[0222] В варианте осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием зависит от того, не применяются ли MTS и NSST для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока.[0222] In an embodiment of the invention, the ability to apply an implicit transformation to an intra block depends on whether MTS and NSST are applied to the intra block, as indicated by the block level syntax elements.
[0223] Например, декодер может принимать первый и второй синтаксические элементы уровня CU (или уровня блока), связанные с текущим блоком, который является блоком с внутренним кодированием и не предсказывается в режиме ISP. Текущий блок может быть расположен в позиции с координатами [х0] [у0] внутри изображения.[0223] For example, the decoder may receive first and second CU-level (or block-level) syntax elements associated with the current block, which is an intra-coded block and is not predicted in ISP mode. The current block can be located at the position with coordinates [x0] [y0] inside the image.
[0224] Первый синтаксический элемент уровня CU (например, tu_mts_idx [х0] [у0]) может указывать на то, что преобразования DCT-2 могут использоваться для текущего блока вместо преобразований, используемых в MTS (например, DST-7, DCT-8, DCT-4 и т.п.). Например, в таблице (2804), кoгда tu_mts_idx[x0][y0] имеет значение 0, переменные trTypeHor и trTypeVer имеют значение 0, что указывает на то, что горизонтальное и вертикальное преобразования являются преобразованиями DCT-2, а преобразования DST-7 или DCT-8 не применяются. Второй синтаксический элемент уровня CU (например, Ifnst_idx[x0][y0]) может указывать на то, что NSST не применяется к текущему блоку. На основе вышеупомянутых первого и второго синтаксических элементов уровня CU декодер может решить включить неявный MTS для текущего блока.[0224] The first CU level syntax element (eg, tu_mts_idx[x0] [y0]) may indicate that DCT-2 transforms may be used for the current block instead of transforms used in MTS (eg, DST-7, DCT-8 , DCT-4, etc.). For example, in table (2804), when tu_mts_idx[x0][y0] is 0, the variables trTypeHor and trTypeVer are 0, indicating that the horizontal and vertical transformations are DCT-2 transformations and DST-7 or DCT-8 do not apply. The second CU level syntax element (eg, Ifnst_idx[x0][y0]) may indicate that NSST is not applied to the current block. Based on the aforementioned first and second CU layer syntax elements, the decoder may decide to include an implicit MTS for the current block.
[0225] Напротив, если первый и второй синтаксические элементы уровня CU указывают на то, что применяется MTS (tu_mts _idx[x0][y0] имеет значение 1, 2, 3 или 4), или применяется NSST (lfnst_idx[x0][y0] имеет ненулевое значение), декодер может решить отключить неявный MTS.[0225] On the contrary, if the first and second syntax elements of the CU level indicate that MTS is applied (tu_mts _idx[x0][y0] is 1, 2, 3 or 4), or NSST is applied (lfnst_idx[x0][y0 ] is non-zero), the decoder MAY decide to turn off the implicit MTS.
[0226] В качестве примера на фиг. 32 показаны модификации (3200) текста (2800), которые соответствуют сценарию, в котором ни MTS, ни NSST не применяются к текущему блоку. Как показано, исходное условие (iii) в тексте (2800) заменено условием, что два синтаксических элемента уровня CU tu_mts_idx[х0][у0] и lfnst_idx[х0][у0] равны 0.[0226] As an example, in FIG. 32 shows modifications (3200) of text (2800) that correspond to a scenario in which neither MTS nor NSST is applied to the current block. As shown, the original condition (iii) in text (2800) is replaced by the condition that the two CU level syntax elements tu_mts_idx[x0][y0] and lfnst_idx[x0][y0] are equal to 0.
[0227] 3.2 Когда MTS, NSST и MIP не применяются[0227] 3.2 When MTS, NSST and MIP are not applied
[0228] В варианте осуществления изобретения возможность применения неявного преобразования для блока с внутренним кодированием зависит от того, не применяются ли MTS, NSST и MIP для блока с внутренним кодированием, как указано синтаксическими элементами уровня блока. По сравнению с разделом III.3.1, дополнительно рассматривается еще один инструмент кодирования - MIP.[0228] In an embodiment of the invention, the ability to apply an implicit transformation to an intra block depends on whether MTS, NSST, and MIP are applied to the intra block, as indicated by the block level syntax elements. Compared to section III.3.1, one more coding tool, MIP, is additionally considered.
[0229] Например, декодер может принимать первый, второй и третий синтаксические элементы уровня CU (или уровня блока), связанные с текущим блоком, который кодирован с помощью внутреннего кодирования и не предсказан в режиме ISP. Текущий блок может быть расположен в позиции с координатами [х0 [у0] внутри изображения.[0229] For example, the decoder may receive first, second, and third CU-level (or block-level) syntax elements associated with the current block that is intra-coded and not predicted in ISP mode. The current block can be located at the position with coordinates [x0[y0] within the image.
[0230] Первый синтаксический элемент уровня CU (например, tu__mts_idx[x0][y0]) может указывать на то, что преобразования DCT-2 могут использоваться для текущего блока вместо преобразований, используемых в MTS. Второй синтаксический элемент уровня CU (например, lfhst_idx[x0][y0]) может указывать на то, что NSST не применяется к текущему блоку. Третий синтаксический элемент уровня CU (например, tu_mip_flag) может указывать на то, что предсказание MIP не применяется для текущего блока. На основе вышеупомянутых трех синтаксических элементов уровня CU декодер может решить включить неявный MTS для текущего блока.[0230] The first CU level syntax element (eg, tu__mts_idx[x0][y0]) may indicate that DCT-2 transforms may be used for the current block instead of the transforms used in the MTS. The second CU level syntax element (eg, lfhst_idx[x0][y0]) may indicate that NSST is not applied to the current block. The third CU layer syntax element (eg, tu_mip_flag) may indicate that MIP prediction is not applied to the current block. Based on the above three CU layer syntax elements, the decoder may decide to include an implicit MTS for the current block.
[0231] Напротив, если указанные выше три синтаксических элемента уровня CU указывают на то, что применяется MTS (tu_mts_idx[x0][y0] имеет значение 1, 2, 3 или 4), применяется NSST (lfnst_idx[x0][y0] имеет ненулевое значение) или применяется MIP (tu_mip_flag имеет значение 1), декодер может решить отключить неявный MTS.[0231] In contrast, if the above three CU level syntax elements indicate that MTS is applied (tu_mts_idx[x0][y0] is 1, 2, 3, or 4), NSST is applied (lfnst_idx[x0][y0] is non-zero) or MIP is applied (tu_mip_flag is set to 1), the decoder may decide to disable implicit MTS.
[0232] В качестве примера на фиг. 33 показаны модификации (3300) текста (2800), которые соответствуют сценарию, в котором ничто из MTS, NSST или MIP не применяется для текущего блока. Как показано, исходное условие (iii) в тексте (2800) заменено условием, что все три синтаксических элемента уровня CU tu_mts_idx[х0][у0], intra_mip_flag[х0][у0] и lfnst_idx [х0][у0] равны 0.[0232] As an example, in FIG. 33 shows modifications (3300) of text (2800) that correspond to a scenario in which none of the MTS, NSST, or MIP is applied to the current block. As shown, the original condition (iii) in text (2800) is replaced by the condition that all three CU level syntax elements tu_mts_idx[x0][y0], intra_mip_flag[x0][y0] and lfnst_idx[x0][y0] are equal to 0.
[0233] 4. Примеры способов кодирования с преобразованием[0233] 4. Examples of Transform Encoding Methods
[0234] Фиг. 34-36 показывают блок-схемы способов (3400), (3500) и (3600) кодирования с преобразованием согласно некоторым вариантам осуществления изобретения. Способы (3400), (3500) и (3600) могут использоваться при обработке обратного преобразования в декодере для формирования блока остатка для восстанавливаемого блока. В различных вариантах осуществления изобретения способы (3400), (3500) и (3600) могут выполняться схемами обработки, такими как схемы обработки в оконечных устройствах (210), (220), (230) и (240), схема обработки, которая выполняет функции видеодекодера (310), схема обработки, которая выполняет функции видеодекодера (410), и т.п. В некоторых вариантах осуществления изобретения способы (3400), (3500) и (3600) могут быть реализованы в программных инструкциях, так что при исполнении программных инструкций схема обработки выполняет способы (3400), (3500) и (3600).[0234] FIG. 34-36 show flowcharts of transform coding methods (3400), (3500), and (3600) according to some embodiments of the invention. Methods (3400), (3500), and (3600) may be used in inverse transform processing at a decoder to generate a residual block for the reconstructed block. In various embodiments of the invention, methods (3400), (3500) and (3600) may be performed by processing circuits, such as processing circuits in terminal devices (210), (220), (230) and (240), processing circuitry that performs video decoder functions (310), a processing circuit that performs video decoder functions (410), and the like. In some embodiments, methods (3400), (3500) and (3600) may be implemented in program instructions such that when the program instructions are executed, the processing circuit performs methods (3400), (3500) and (3600).
[0235] 4.1 Способ (3400): Включение неявного преобразования, когда явный MTS отключен[0235] 4.1 Method (3400): Enabling Implicit Translation When Explicit MTS Is Disabled
[0236] Способ (3400) начинается на этапе (S3401) и переходит к этапу (S3410).[0236] Method (3400) starts at step (S3401) and proceeds to step (S3410).
[0237] На этапе (S3410) в декодере принимают первый элемент HLS. Первый элемент HLS может указывать, отключен ли явный MTS для блока с внутренним кодированием. Например, блок с внутренним кодированием находится в процессе реконструкции и, таким образом, может упоминаться как текущий блок. Первый элемент HLS может быть связан с набором блоков кодирования, которые включают текущий блок.[0237] In step (S3410), the first element of the HLS is received at the decoder. The first element of the HLS may indicate whether explicit MTS is disabled for the intra-coded block. For example, an intra-coded block is in the process of being reconstructed and thus may be referred to as the current block. The first HLS element may be associated with a set of coding blocks that include the current block.
[0238] На этапе (S3420) в декодере принимают второй элемент HLS. Второй элемент HLS может указывать, включен ли явный MTS для блока с внешним кодированием. Например, второй элемент HLS может быть связан с тем же набором блоков кодирования, что и первый элемент HLS. Как текущий блок, так и блок с внешним кодированием включены в набор блоков кодирования.[0238] In step (S3420), a second HLS element is received at the decoder. The second element of the HLS may indicate whether explicit MTS is enabled for the outer-encoded block. For example, the second HLS element may be associated with the same coding block set as the first HLS element. Both the current block and the outer-encoded block are included in the coding block set.
[0239] На этапе (S3430) декодер может решить включить неявный MTS для текущего блока, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что явный MTS включен для блока с внешним кодированием. Способ (3400) может перейти к этапу (S3499) и завершиться на этапе (S3499).[0239] In step (S3430), the decoder may decide to enable implicit MTS for the current block when the first HLS element indicates that explicit MTS is disabled for the intra-coded block and the second HLS element indicates that explicit MTS is enabled for the block with external coding. Method (3400) may proceed to step (S3499) and end at step (S3499).
[0240] 4.2 Способ (3500): Отключение неявного преобразования, когда включены другие инструменты кодирования[0240] 4.2 Method (3500): Disabling implicit conversion when other encoding tools are enabled
[0241] Способ (3500) начинается на этапе (S3501) и переходит к этапу (S3510).[0241] Method (3500) starts at step (S3501) and proceeds to step (S3510).
[0242] На этапе (S3510) в декодере принимают первый элемент HLS. Первый элемент HLS может указывать, включен ли явный MTS для блока с внутренним кодированием. Блок с внутренним кодированием может быть реконструируемым в настоящий момент блоком. Первый элемент HLS управляет набором блоков кодирования, включающим упомянутый блок с внутренним кодированием.[0242] In step (S3510), the first element of the HLS is received at the decoder. The first element of the HLS may indicate whether explicit MTS is included for the intra-coded block. The intra-coded block may be a currently reconstructed block. The first element of the HLS manages a set of coding blocks including said intra coding block.
[0243] На этапе (S3520) в декодере принимают второй элемент HLS. Второй элемент HLS может указывать, отключено ли NSST или MIP для блока с внутренним кодированием. Например, второй элемент HLS может управлять тем же набором блоков кодирования, что и первый элемент HLS.[0243] In step (S3520), a second HLS element is received at the decoder. The second element of the HLS may indicate whether NSST or MIP is disabled for the intra block. For example, the second HLS element may manage the same set of coding blocks as the first HLS element.
[0244] На этапе (S3530) декодер может определить, включить ли неявный MTS для обработки блока с внутренним кодированием на основе первого и второго элементов HLS. Например, декодер может решить включить неявный MTS для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, а второй элемент HLS указывает на то, что NSST или MIP отключено для блока с внутренним кодированием. В качестве альтернативы, декодер может решить отключить неявный MTS для блока с внутренним кодированием, когда первый элемент HLS указывает на то, что явный MTS отключен для блока с внутренним кодированием, но второй элемент HLS указывает на то, что NSST или MIP включено для блока с внутренним кодированием. Способ (3500) может перейти к этапу (S3599) и завершиться на этапе (S3599).[0244] In step (S3530), the decoder may determine whether to enable the implicit MTS for intra block processing based on the first and second HLS elements. For example, a decoder may decide to enable implicit MTS for an intra-block when the first HLS element indicates that explicit MTS is disabled for the intra-block and the second HLS element indicates that NSST or MIP is disabled for the intra-block. . Alternatively, a decoder may decide to disable implicit MTS for the intra-block when the first HLS element indicates that explicit MTS is disabled for the intra-block, but the second HLS element indicates that NSST or MIP is enabled for the intra-block. internal coding. Method (3500) may proceed to step (S3599) and end at step (S3599).
[0245] 4.3 Способ (3600): Включение неявного преобразования на основе указаний синтаксических элементов уровня блока[0245] 4.3 Method (3600): Enabling implicit conversion based on indications of block-level syntax elements
[0246] Способ (3600) начинается на этапе (S3601) и переходит к этапу (S3610).[0246] Method (3600) starts at step (S3601) and proceeds to step (S3610).
[0247] На этапе (S3610) в декодере принимают блок с внутренним кодированием. Блок с внутренним кодированием может быть связан с первым синтаксическим элементом уровня блока, указывающим, применяется ли MTS, и вторым синтаксическим элементом уровня блока, указывающим, применяется ли NSST. Например, блок с внутренним кодированием принадлежит CU, который включает синтаксические элементы уровня CU, включая первый и второй синтаксические элементы уровня блока.[0247] In step (S3610), an intra-coding block is received at the decoder. An intra-coded block may be associated with a first block level syntax element indicating whether MTS is applied and a second block level syntax element indicating whether NSST is applied. For example, an intra-coded block belongs to a CU that includes CU-level syntax elements, including first and second block-level syntax elements.
[0248] На этапе (S3620) декодер может определить, включить ли неявный MTS для блока с внутренним кодированием, на основе первого и второго синтаксических элементов уровня блока. Например, декодер может решить включить неявный MTS для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, а второй синтаксический элемент уровня блока указывает на то, что NSST не применяется. В качестве альтернативы, декодер может решить отключить неявный MTS для блока с внутренним кодированием, когда первый синтаксический элемент уровня блока указывает на то, что MTS не применяется, но второй синтаксический элемент уровня блока указывает на то, что применяется NSST. Способ (3600) может перейти к этапу (S3699) и завершиться на этапе (S3699).[0248] In step (S3620), the decoder may determine whether to enable the implicit MTS for the intra-coded block based on the first and second block-level syntax elements. For example, a decoder may decide to enable implicit MTS for an intra-coded block when the first block-level syntax element indicates that MTS is not applied and the second block-level syntax element indicates that NSST is not applied. Alternatively, a decoder may decide to disable implicit MTS for an intra-coded block when the first block-level syntax element indicates that MTS is not applied, but the second block-level syntax element indicates that NSST is applied. Method (3600) may proceed to step (S3699) and end at step (S3699).
[0249] IV. Компьютерная система[0249] IV. computer system
[0250] Вышеописанные способы могут быть реализованы в виде компьютерного программного обеспечения, использующего машиночитаемые инструкции и физически хранящегося на одном или более машиночитаемых носителях. Например, на фиг. 37 показана компьютерная система, пригодная для осуществления некоторых вариантов осуществления изобретения.[0250] The above methods may be implemented in computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 37 shows a computer system suitable for practicing some embodiments of the invention.
[0251] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing units), графическими процессорами (GPU, Graphics Processing Units) и т.п.[0251] Computer software may be coded using any suitable machine code or computer language that may be assembled, compiled, linked, or similarly processed to produce code containing instructions that can be executed directly or through interpretation, execution of microcode, etc. etc., one or more computer central processing units (CPU, central processing units), graphic processors (GPU, Graphics Processing Units), etc.
[0252] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.[0252] 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.
[0253] Компоненты компьютерной системы, показанные на фиг. 37, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым компонентом или комбинацией компонентов, показанных в примере осуществления компьютерной системы.[0253] The computer system components shown in FIG. 37 are illustrative in nature and are not intended to impose any limitation on the scope of application or functionality of computer software implementing embodiments of the present invention. The component configuration should also not be interpreted as having any dependency or requirement in connection with any component or combination of components shown in the exemplary computer system.
[0254] Компьютерная система может включать некоторые устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двумерного видео, трехмерного видео, включая стереоскопическое видео).[0254] The computer system may include some human-machine interface input devices. Such an input device may be responsible for input by one or more users through, for example, tactile input (e.g., keystrokes, waving, glove movements), audio input (e.g., voice, claps), visual input (e.g., gestures), olfactory input (not shown). Interface devices may also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, external sound), images (e.g. scanned images, photographic images received from a still camera), video (eg 2D video, 3D video including stereoscopic video).
[0255] Входной человеко-машинный интерфейс устройства может включать одно или более из следующего (показано по одному): клавиатура (3701), мышь (3702), сенсорная панель (3703), сенсорный экран (3710), информационная перчатка (не показана), джойстик (3705), микрофон (3706), сканер (3707) и камера (3708).[0255] The input human-machine interface of the device may include one or more of the following (shown one at a time): keyboard (3701), mouse (3702), touchpad (3703), touch screen (3710), information glove (not shown) , joystick (3705), microphone (3706), scanner (3707) and camera (3708).
[0256] Компьютерная система также может включать в себя некоторые устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (3710), информационной перчатки (не показана) или джойстика (3705), а также устройства тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: динамики (3709), наушники (не показаны)), устройства визуального вывода (например, экраны (3710), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из них способны к двумерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографическому выводу, очки виртуальной реальности (не показаны), голографические дисплеи, дымовые баки (не показаны) и принтеры (не показаны).[0256] The computer system may also include some human interface output devices. Such output devices may stimulate the senses of one or more users through, for example, tactile output, sound, light, and smell/taste. Such output devices may include tactile output devices (e.g., haptic feedback via touch screen (3710), data glove (not shown) or joystick (3705), as well as tactile feedback devices that do not serve as input devices), audio output devices (for example: speakers (3709), headphones (not shown)), visual output devices (for example, screens (3710), including CRT screens, LCD screens, plasma screens, OLED screens, each with touch screen input capabilities or without, each with or without haptic feedback capabilities, some of which are capable of 2D visual output or more than 3D output via, for example, stereographic output, virtual reality goggles (not shown), holographic displays, smoke tanks (not shown). ) and printers (not shown).
[0257] Компьютерная система также может включать доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие CD/DVD ROM/RW (3720) с носителями (3721) CD/DVD и т.п., карты (3722) флэш-памяти, сменный жесткий диск или твердотельный диск (3723), традиционные магнитные носители, например, ленту и магнитный диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.[0257] The computer system may also include human accessible storage devices and associated media, such as optical media including CD/DVD ROM/RW (3720) with CD/DVD media (3721) and the like, cards (3722 ) flash memory, removable hard drive or solid state drive (3723), traditional magnetic media such as tape and magnetic disk (not shown), dedicated ROM/ASIC/PLD based devices such as security dongles (not shown), and etc.
[0258] Специалисты в данной области техники также должны понимать, что термин "машиночитаемые носители", используемый в связи с настоящим изобретением, не охватывает среды передачи, несущие волны или другие временные сигналы.[0258] Those skilled in the art should also understand that the term "computer-readable media" as used in connection with the present invention does not encompass transmission media, carrier waves, or other time signals.
[0259] Компьютерная система также может включать интерфейс (3754) к одной или более сетям (3755) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть также локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают локальные сети, например, Ethernet, беспроводные сети LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные сети, включающие CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (3749) (например, USB-порты компьютерной системы); другие обычно встраиваются в ядро компьютерной системы путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.[0259] The computer system may also include an interface (3754) to one or more communication networks (3755). Networks can be, for example, wireless, wired, optical. Networks can also be local, global, urban, transport and industrial, real-time, latency, etc. Examples of networks include local area networks, such as Ethernet, wireless LANs, cellular networks, including GSM, 3G, 4G, 5G, LTE, etc., digital wide area networks of wired or wireless television, including cable television, satellite television and terrestrial broadcasting, transport and industrial networks, including CANBus, etc. Some networks typically require external network interface adapters that are connected to some general purpose data ports or peripheral buses (3749) (for example, computer system USB ports); others are typically built into the core of a computer system by connecting to a system bus as described below (eg, an Ethernet interface to a PC computer system, or a cellular network interface to a smartphone computer system). Using any of these networks, a computer system can communicate with other entities. Such communication may be unidirectional with receive-only capability (eg broadcast), unidirectional with transmit-only capability (eg CANbus to some CANbus devices), or bidirectional, eg to other computer systems using a local area network or a wide area digital network. Several protocols and protocol stacks may be used on each of these networks and the network interfaces described above.
[0260] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (3740) компьютерной системы.[0260] The aforementioned human-machine interface devices, human-accessible storage devices, and network interfaces can be connected to the core (3740) of the computer system.
[0261] Ядро (3740) может включать один или более центральных процессоров (CPU) (3741), графические процессоры (GPU) (3742), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Arrays) (3743), аппаратные ускорители (3744) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (3745), оперативной памятью (3746), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками, недоступными пользователю, SSD и т.п.(3747), могут соединяться посредством системной шины (3748). В некоторых компьютерных системах системная шина (3748) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных процессоров CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (3748) ядра, либо через периферийную шину (3749). Архитектуры периферийной шины включают PCI, USB и т.п.[0261] The core (3740) may include one or more central processing units (CPUs) (3741), graphics processing units (GPUs) (3742), specialized programmable processing modules in the form of Field Programmable Gate Arrays (FPGAs) ( 3743), hardware accelerators (3744) for some tasks, etc. These devices, together with read-only memory (ROM) (3745), random access memory (3746), high-capacity internal storage, such as internal hard drives that are not accessible to the user, SSD, etc. (3747), can be connected via the system bus (3748). In some computer systems, the system bus (3748) may be available in the form of one or more physical connectors to allow for expansions with additional CPUs, GPUs, or the like. Peripherals can be connected either directly to the system bus (3748) of the kernel, or via a peripheral bus (3749). Peripheral bus architectures include PCI, USB, and the like.
[0262] Устройства CPU (3741), GPU (3742), FPGA (3743) и ускорители (3744) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в памяти ROM (3745) или RAM (3746). Временные данные также могут храниться в памяти RAM (3746), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (3747) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU (3741), GPU (3742), хранилищем (3747) данных большой емкости, памятью ROM (3745), RAM (3746) и т.п.[0262] CPU (3741), GPU (3742), FPGA (3743), and accelerator (3744) devices may execute some instructions that together may constitute the aforementioned computer code. This computer code may be stored in ROM (3745) or RAM (3746). Temporary data may also be stored in the RAM memory (3746), while permanent data may be stored in, for example, an internal high capacity data storage (3747). Fast storage and retrieval from any storage device can be achieved through the use of cache memory, which can be closely associated with one or more processors CPU (3741), GPU (3742), mass storage (3747), ROM memory (3745) , RAM (3746), etc.
[0263] На машиночитаемых носителях может храниться компьютерный код для осуществления различных выполняемых компьютером операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.[0263] Computer-readable media may store computer code for performing various computer-executable operations. The media and computer code may be specially created for the purposes of the present invention or may be well known and available to those skilled in the art of computer software.
[0264] В порядке примера, но не ограничения изобретения, компьютерная система, имеющая архитектуру, и, в частности, ядро (3740) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных машиночитаемых носителей. Такие машиночитаемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым постоянным хранилищем ядра (3740), например, внутренним хранилищем (3747) данных большой емкости или ROM (3745). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (3740). Машиночитаемый носитель может включать одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (3740) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные способы или конкретные части описанных здесь конкретных способов, включая задание структур данных, хранящихся в памяти RAM (3746), и модификацию таких структур данных согласно способам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (3744)), которая может действовать вместо программного обеспечения или совместно с программным обеспечением для выполнения конкретных способов или конкретных частей описанных здесь конкретных способов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на машиночитаемые носители может охватывать схему (например, интегральную схему (IС, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе схемы, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.[0264] By way of example, and not limitation of the invention, a computer system having an architecture, and in particular, a core (3740), can provide functionality through execution by processor(s) (including(and) CPU, GPU, FPGA, accelerators, etc.) software embodied in one or more tangible computer-readable media. Such computer-readable media may be media associated with the user-accessible mass storage described above, as well as some persistent kernel storage (3740), such as internal mass storage (3747) or ROM (3745). Software implementing various embodiments of the present invention may be stored on such devices and executed by the core (3740). The computer-readable medium may include one or more storage devices or microcircuits, in accordance with specific needs. The software may direct the core (3740), and in particular its processors (including CPUs, GPUs, FPGAs, and the like), to perform specific methods or specific portions of the specific methods described herein, including setting data structures stored in RAM memory (3746 ), and modifying such data structures according to the methods specified by the software. Additionally or alternatively, the computer system may provide functionality through logic hardwired or otherwise embodied in circuitry (e.g., an accelerator (3744)), which may operate in place of, or in conjunction with software, to perform specific methods or specific portions of the specific methods described herein. ways. A reference to software may cover logic, and vice versa when appropriate. Reference to computer-readable media may encompass a circuit (eg, an integrated circuit (IC)) where software is stored for execution, a circuit embodying logic for execution, or both circuits, as appropriate. The present invention encompasses any suitable combination of hardware and software.
Приложение А: СокращенияAppendix A: Abbreviations
АМТ: адаптивное множество преобразованийAMT: Adaptive Transform Set
ASIC: специализированная интегральная схемаASIC: Application Specific Integrated Circuit
BMS: набор эталоновBMS: a set of standards
CANBus: шина сети контроллеровCANBus: controller network bus
CCLM: линейная модель перекрестных компонентовCCLM: Linear Cross Component Model
CD: компакт-дискCD: CD
СОТ: составное ортонормированное преобразованиеCOT: Composite Orthonormal Transform
CPU: центральный процессорCPU: central processing unit
CRT: электронно-лучевая трубкаCRT: cathode ray tube
СТВ: блок дерева кодированияCTB: coding tree block
CTU: пакет дерева кодированияCTU: coding tree package
CU: пакет кодированияCU: coding package
DVD: цифровой видеодискDVD: Digital Video Disc
ЕМТ: расширенное множество преобразованийEMT: extended set of transformations
FPGA: программируемая пользователем вентильная матрицаFPGA: Field Programmable Gate Array
GOP: группа изображенийGOP: group of images
GPU: графический процессорGPU: GPU
GSM: глобальная система мобильной связиGSM: Global System for Mobile Communications
HDR: расширенный динамический диапазонHDR: High Dynamic Range
HEVC: высокоэффективное кодирование видеоданныхHEVC: High Efficiency Video Coding
HLS: синтаксис высокого уровняHLS: high level syntax
HRD: гипотетический эталонный декодерHRD: Hypothetical Reference Decoder
IBC: копия блока с внутренним кодированиемIBC: Intra-Coded Block Copy
IС: интегральная схемаIC: integrated circuit
IDT: тождественное преобразованиеIDT: identity transformation
ISP: внутреннее кодирование с субразделениемISP: subdivision intra coding
JEM: модель совместного исследованияJEM: collaborative research model
JVET: объединенная команда исследования видеоJVET: Joint Video Research Team
KLT: преобразование Карунена-ЛоэваKLT: Karhunen-Loeve transform
LAN: локальная сетьLAN: local area network
LCD: жидкокристаллический дисплейLCD: liquid crystal display
LFNST: низкочастотное неразделяемое вторичное преобразованиеLFNST: Low Frequency Non-Separable Secondary Transform
LTE: долгосрочное развитиеLTE: long-term development
MIP: режим внутреннего предсказания на основе матрицыMIP: matrix-based intra prediction mode
MRL (или MRLP): предсказание с множеством опорных линийMRL (or MRLP): multi-reference line prediction
MTS: выбор множества преобразованийMTS: Selecting Multiple Transforms
MV: вектор движенияMV: motion vector
NSST: неразделяемое вторичное преобразованиеNSST: non-separable secondary transformation
OLED: органический светодиодOLED: organic light emitting diode
РВ: блок предсказанияRW: prediction block
PCI: соединение периферийных компонентовPCI: Peripheral Component Connection
PLD: программируемое логическое устройствоPLD: Programmable Logic Device
PPS: набор параметров изображенияPPS: Image Parameter Set
PU: пакет предсказанияPU: prediction package
RAM: оперативная памятьRAM: random access memory
ROM: постоянная памятьROM: Read Only Memory
RST: преобразование уменьшенного размераRST: Reduced Size Transform
SBT: преобразование субблоковSBT: sub-block conversion
SDR: стандартный динамический диапазонSDR: standard dynamic range
SEI: дополнительная информация улучшенияSEI: Additional Enhancement Information
SNR: отношение "сигнал-шум"SNR: signal to noise ratio
SPS: набор параметров последовательностиSPS: Sequence Parameter Set
SSD: твердотельный накопительSSD: solid state drive
SVT: пространственно-изменяющееся преобразованиеSVT: Spatially Variable Transform
TSM: режим пропуска преобразованияTSM: Skip Conversion Mode
TU: пакет преобразованияTU: conversion package
USB: универсальная последовательная шинаUSB: Universal Serial Bus
VPS: набор параметров видеоVPS: set of video options
VUI: информация о возможности использования видеоVUI: Video Usability Information
VVC: универсальное кодирование видеоданных.VVC: Universal Video Data Coding.
[0265] Хотя здесь были описаны некоторые варианты осуществления изобретения, возможны изменения, перестановки и различные эквивалентные замены в пределах объема изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.[0265] Although some embodiments of the invention have been described here, changes, permutations, and various equivalent substitutions are possible within the scope of the invention. Thus, those skilled in the art can provide numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the invention and thus fall within its spirit and scope.
Claims (43)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US62/860,149 | 2019-06-11 | ||
US16/878,390 | 2020-05-19 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2023101177A Division RU2023101177A (en) | 2019-06-11 | 2020-05-22 | Method and apparatus for encoding video data |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2788835C1 true RU2788835C1 (en) | 2023-01-24 |
Family
ID=
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100086049A1 (en) * | 2008-10-03 | 2010-04-08 | Qualcomm Incorporated | Video coding using transforms bigger than 4x4 and 8x8 |
US20130094572A1 (en) * | 2011-10-07 | 2013-04-18 | Qualcomm Incorporated | Performing transform dependent de-blocking filtering |
US20170094313A1 (en) * | 2015-09-29 | 2017-03-30 | Qualcomm Incorporated | Non-separable secondary transform for video coding |
RU2636692C2 (en) * | 2012-03-16 | 2017-11-27 | Квэлкомм Инкорпорейтед | High-level syntactic expansions for high-efficient video coding |
US20190020886A1 (en) * | 2013-07-31 | 2019-01-17 | Nokia Technologies Oy | Method and apparatus for video coding and decoding |
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100086049A1 (en) * | 2008-10-03 | 2010-04-08 | Qualcomm Incorporated | Video coding using transforms bigger than 4x4 and 8x8 |
US20130094572A1 (en) * | 2011-10-07 | 2013-04-18 | Qualcomm Incorporated | Performing transform dependent de-blocking filtering |
RU2636692C2 (en) * | 2012-03-16 | 2017-11-27 | Квэлкомм Инкорпорейтед | High-level syntactic expansions for high-efficient video coding |
US20190020886A1 (en) * | 2013-07-31 | 2019-01-17 | Nokia Technologies Oy | Method and apparatus for video coding and decoding |
US20170094313A1 (en) * | 2015-09-29 | 2017-03-30 | Qualcomm Incorporated | Non-separable secondary transform for video coding |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP7379647B2 (en) | Methods, apparatus, media, and programs for video coding and decoding | |
JP7187702B2 (en) | Video encoding method, apparatus and computer program | |
KR102410293B1 (en) | Method and apparatus for decoding a video sequence | |
JP7279168B2 (en) | Video decoding method and device | |
JP7465918B2 (en) | Method and apparatus for video decoding performed by a decoder and method for video encoding performed by an encoder - Patents.com | |
KR20210068511A (en) | Method and apparatus for video coding | |
JP7258168B2 (en) | Method and its apparatus and computer program for video coding | |
US11032543B2 (en) | Method and apparatus for video coding | |
KR20220085836A (en) | Video coding method and device | |
US11831911B2 (en) | Method and apparatus for video coding | |
KR102461780B1 (en) | Method and apparatus for video coding | |
WO2020190835A1 (en) | Method and apparatus for video coding | |
JP2023546962A (en) | Encoding end-of-block flags between components | |
RU2788835C1 (en) | Method and apparatus for encoding video data | |
RU2779901C1 (en) | Method and device for improved implicit conversion selection | |
RU2780422C1 (en) | Method and apparatus for video encoding | |
RU2779825C1 (en) | Method and device for interaction between the internal prediction mode and the block differential pulse-code modulation mode | |
RU2784813C1 (en) | Method and apparatus for video encoding | |
RU2777188C1 (en) | Method and device for video encoding | |
RU2787810C1 (en) | Method and apparatus for colour conversion in versatile video coding (vvc) | |
KR20230065344A (en) | Subblock cross-component linear model prediction | |
JP2024507377A (en) | Video processing methods, devices, and programs | |
KR20230002978A (en) | Adaptive scanning with multiple transform selections |