RU2816154C2 - Lossless compression mode for universal video encoding - Google Patents

Lossless compression mode for universal video encoding Download PDF

Info

Publication number
RU2816154C2
RU2816154C2 RU2021137094A RU2021137094A RU2816154C2 RU 2816154 C2 RU2816154 C2 RU 2816154C2 RU 2021137094 A RU2021137094 A RU 2021137094A RU 2021137094 A RU2021137094 A RU 2021137094A RU 2816154 C2 RU2816154 C2 RU 2816154C2
Authority
RU
Russia
Prior art keywords
encoding
transform
remainder
flag
lossless
Prior art date
Application number
RU2021137094A
Other languages
Russian (ru)
Other versions
RU2021137094A (en
Inventor
Танги ПУАРЬЕ
Фабрис ЛЕЛЕАННЕК
Карам НАСЕР
Эдуард ФРАНСУА
Original Assignee
Интердиджитал Вс Холдингз Франс, Сас
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Интердиджитал Вс Холдингз Франс, Сас filed Critical Интердиджитал Вс Холдингз Франс, Сас
Publication of RU2021137094A publication Critical patent/RU2021137094A/en
Application granted granted Critical
Publication of RU2816154C2 publication Critical patent/RU2816154C2/en

Links

Abstract

FIELD: physics.
SUBSTANCE: invention relates to video encoding means. Video encoding system discloses a lossless encoding mode comprising a plurality of encoding tools, some of which by definition cause loss, and some can be adapted and made without loss or almost without loss of quality. In order to enable lossless coding mode in such a system, it is proposed to disconnect tools, which by definition cause losses, and to use only lossless tools, to adapt some tools to obtain lossless coding, and adapt some tools to obtain almost lossless coding, so that secondary lossless coding can be applied after encoding the remainder. First information indicating that conversion omission is used is obtained. Second information is obtained indicating that conventional residue coding is used for blocks with transformation skipping. It is determined that conventional coding of the remainder is to be used instead of coding of the remainder with a transformation skip, which should be used for the block.
EFFECT: high efficiency of video encoding.
7 cl, 19 dwg

Description

Область техники, к которой относится настоящее изобретениеField of technology to which the present invention relates

Это изобретение лежит в области сжатия видеоинформации и, по меньшей мере, один вариант осуществления связан, более конкретно, с режимом сжатия без потерь для универсального кодирования видео (VVC).This invention is in the field of video compression and at least one embodiment is more specifically related to a lossless compression mode for Versatile Video Coding (VVC).

Предшествующий уровень техники настоящего изобретенияBACKGROUND OF THE INVENTION

Для достижения высокого коэффициента сжатия схем кодирования изображения и видео применяют прогнозирование и преобразование для использования пространственных и временных избыточностей в видеоконтенте. Обычно применяется внутрикадровое (интра) или межкадровое (интер) прогнозирование для использования корреляций внутри кадров изображений или между ними, затем различия между блоком оригинального изображения и блоком прогнозируемого изображения, часто называемые ошибками прогнозирования или остатками прогнозирования, преобразуются, подвергаются квантованию и энтропийно кодируются. Во время кодирования оригинальный блок изображения обычно разбивается/разделяется на субблоки с использованием разделения квадродеревьями, например. Для восстановления видео сжатые данные декодируются процессами, обратными по отношению к процессам прогнозирования, преобразования, квантования и энтропийного кодирования.To achieve high compression ratios, image and video coding schemes use prediction and transformation to exploit spatial and temporal redundancies in video content. Typically, intra- or inter-frame prediction is used to exploit correlations within or between image frames, then the differences between a block of the original image and a block of the predicted image, often called prediction errors or prediction residuals, are transformed, quantized, and entropy encoded. During encoding, the original image block is usually split/divided into sub-blocks using quad-tree partitioning, for example. To reconstruct video, compressed data is decoded using processes that are inverse to prediction, transform, quantization, and entropy encoding.

Краткое раскрытие настоящего изобретенияBrief Disclosure of the Present Invention

В системе кодирования видео предложен режим кодирования без потерь, содержащий множество инструментов кодирования, некоторые из которых по определению вызывают потери, а некоторые из которых можно адаптировать и сделать без потерь качества или почти без потерь. Для включения в такой системе видеокодирования режима кодирования без потерь предложено отключать инструменты, которые по определению вызывают потери, и использовать только инструменты без потерь, также адаптировать некоторые инструменты для получения кодирования без потерь, и адаптировать некоторые инструменты для получения кодирования почти без потерь, так что вторичное кодирование без потерь можно применить после кодирования остатка и посредством этого обеспечить кодирование без потерь.The video encoding system offers a lossless encoding mode containing a variety of encoding tools, some of which are inherently lossy, and some of which can be adapted and made lossless or almost lossless. To enable lossless encoding mode in such a video encoding system, it is proposed to disable tools that by definition cause losses and use only lossless tools, also adapt some tools to obtain lossless encoding, and adapt some tools to obtain almost lossless encoding, so that secondary lossless encoding can be applied after encoding the remainder and thereby provide lossless encoding.

Согласно конкретному варианту осуществления, способ для определения типа кодирования остатка предусматривает, в случае, когда информация указывает, что использовалось кодирование остатка с пропуском преобразования, получение флага, указывающего специальный режим, и если указывающий специальный режим флаг равен Истина, определение, что необходимо использовать обычное кодирование остатка вместо кодирования остатка с пропуском преобразования, которое следовало бы использовать.According to a specific embodiment, a method for determining a remainder encoding type includes, in the case where the information indicates that skip-transformation remainder encoding was used, obtaining a flag indicating the special mode, and if the special mode indicating flag is True, determining that the normal mode should be used. encoding the remainder instead of encoding the remainder and omitting the transformation that should have been used.

Согласно первому аспекту, способ для определения типа кодирования остатка предусматривает, в случае, когда информация указывает, что использовалось кодирование остатка с пропуском преобразования, получение флага, указывающего на специальный режим, и если указывающий специальный режим флаг равен Истина, определение, что необходимо использовать обычное кодирование остатка вместо кодирования остатка с пропуском преобразования, которое следовало бы использовать.According to a first aspect, a method for determining a remainder encoding type includes, in the case where the information indicates that skip conversion remainder encoding was used, obtaining a flag indicating a special mode, and if the special mode indicating flag is True, determining that a normal mode should be used. encoding the remainder instead of encoding the remainder and omitting the transformation that should have been used.

Согласно второму аспекту, способ кодирования видео предусматривает, для блока видео, определение типа кодирования остатка согласно способу первого аспекта.According to a second aspect, a video encoding method includes, for a video block, determining a residue encoding type according to the method of the first aspect.

Согласно третьему аспекту способ декодирования видео предусматривает, для блока видео, определение типа кодирования остатка согласно способу первого аспекта.According to a third aspect, a video decoding method includes, for a video block, determining a residue encoding type according to the method of the first aspect.

Согласно четвертому аспекту, устройство кодирования видео содержит кодер, выполненный с возможностью определять тип кодирования остатка согласно способу первого аспекта.According to a fourth aspect, the video encoding device includes an encoder configured to determine a residue encoding type according to the method of the first aspect.

Согласно пятому аспекту, устройство декодирования видео содержит декодер, выполненный с возможностью определять тип кодирования остатка согласно способу первого аспекта.According to a fifth aspect, the video decoding apparatus includes a decoder configured to determine a residue encoding type according to the method of the first aspect.

Один или несколько представленных вариантов осуществления также описывают энергонезависимый носитель данных для компьютера, на котором хранятся инструкции для кодирования или декодирования видеоданных согласно, по меньшей мере, части любых из описанных выше способов. Один или несколько вариантов осуществления также описывают продукт в виде компьютерной программы, содержащий инструкции для выполнения, по меньшей мере, части любых из описанных выше способов.One or more of the presented embodiments also describes a non-volatile storage medium for a computer that stores instructions for encoding or decoding video data according to at least a portion of any of the methods described above. One or more embodiments also describe a computer program product containing instructions for performing at least a portion of any of the methods described above.

Краткое описание фигурBrief description of the figures

На фиг. 1А показана блок-схема кодера видео согласно варианту осуществления настоящего изобретения.In fig. 1A is a block diagram of a video encoder according to an embodiment of the present invention.

На фиг. 1В показана блок-схема декодера видео согласно варианту осуществления настоящего изобретения.In fig. 1B is a block diagram of a video decoder according to an embodiment of the present invention.

На фиг. 2 в виде блок-схемы показан пример системы, в которой реализованы различные аспекты и варианты осуществления.In fig. 2 illustrates in block diagram form an example of a system in which various aspects and embodiments are implemented.

На фиг. 3А и 3В показаны обозначения, относящиеся к угловому интра прогнозированию.In fig. 3A and 3B show notation related to angular intra prediction.

На рис. 4 показаны горизонтальное и вертикальное преобразования для каждого положения SBT.In Fig. Figure 4 shows the horizontal and vertical transformations for each SBT position.

На рис. 5 показана архитектура LMCS в перспективе декодера.In Fig. Figure 5 shows the LMCS architecture from a decoder perspective.

На фиг. 6 показано применение вторичного преобразования.In fig. Figure 6 shows the application of secondary transformation.

На фиг. 7 показано уменьшенное вторичное преобразование (RST).In fig. Figure 7 shows the reduced secondary transform (RST).

На фиг. 8 показано прямое и обратное уменьшенные преобразования.In fig. 8 shows the forward and inverse reduced transforms.

На фиг. 9 показан пример прямого процесса RST8×8 с матрицей 16×48.In fig. Figure 9 shows an example of a direct RST8x8 process with a 16x48 matrix.

На фиг. 10А и 10В показан пример блок-схемы алгоритма согласно, по меньшей мере, одному варианту осуществления.In fig. 10A and 10B show an example of a flowchart according to at least one embodiment.

На фиг. 11 показано применение прямой и затем обратной функции для восстановления яркости Luma.In fig. Figure 11 shows the use of a forward and then an inverse function to restore Luma brightness.

На фиг. 12 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда получено, что пропуск преобразования равен Истина для закодированных без потерь блоков.In fig. 12 shows an example flowchart of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag flags, and encoding the remainder when the transform skip is found to be True for lossless encoded blocks.

На фиг. 13 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда получено, что пропуск преобразования равен Ложь для закодированных без потерь блоков.In fig. 13 shows an example flowchart of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag flags, and encoding the remainder when the transform skip is determined to be False for lossless encoded blocks.

На фиг. 14 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда пропуск преобразования всегда анализируется для закодированных без потерь блоков.In fig. 14 shows an example block diagram of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag, and remainder encoding where transform skip is always parsed for lossless encoded blocks.

На фиг. 15 показана упрощенная блок-схема вторичного кодирования без потерь.In fig. 15 shows a simplified block diagram of secondary lossless encoding.

На фиг. 16 показан пример блок-схемы варианта осуществления процесса синтаксического анализа флагов region_transquant_bypass_flag и split_cu_flag, когда используется сигнализация на уровне региона.In fig. 16 shows an example flowchart of an embodiment of the process for parsing the region_transquant_bypass_flag and split_cu_flag flags when region-level signaling is used.

На фиг. 17 показаны различные разбиения для яркости Luma и цветности Chroma в случае двойного дерева.In fig. Figure 17 shows different partitions for Luma and Chroma in the dual tree case.

Подробное раскрытие настоящего изобретенияDetailed Disclosure of the Present Invention

Различные варианты осуществления относятся к способу пост-обработки предсказанного значения отсчета из блока изображения, это значение предсказывается согласно углу интра прогнозирования, причем значение отсчета изменяется после прогнозирования, так что оно определяется на основе взвешенной разности между значением левого опорного отсчета и полученного предсказанного значения для отсчета, причем значение левого опорного отсчета определяется на основе угла интра прогнозирования. На основе этого способа пост-обработки предложены способ кодирования, способ декодирования, устройство кодирования, устройство декодирования.Various embodiments relate to a method for post-processing a predicted sample value from an image block, the value being predicted according to an intra prediction angle, the sample value being changed after prediction so that it is determined based on a weighted difference between the value of the left reference sample and the resulting predicted value for the sample , and the value of the left reference sample is determined based on the intra-prediction angle. Based on this post-processing method, an encoding method, a decoding method, an encoding device, and a decoding device are proposed.

Более того, представленные аспекты, хотя описание их принципов относится к спецификациям конкретных версий VVC (универсальное кодирование видео) или HEVC (высокоэффективное видеокодирование), не ограничены стандартами VVC или HEVC, и могут применяться, например, для других стандартов и рекомендаций, как уже существующих, так и разрабатываемых для будущего, и для расширений любых таких стандартов и рекомендаций (включая VVC и HEVC). Если не оговорено иное, или это технически не исключено, описанные в настоящем документе аспекты можно использовать по отдельности или в комбинации.Moreover, the presented aspects, although the description of their principles relates to the specifications of specific versions of VVC (Versatile Video Coding) or HEVC (High Efficiency Video Coding), are not limited to the VVC or HEVC standards, and can be applied, for example, to other standards and recommendations as already existing , and those being developed for the future, and for extensions to any such standards and recommendations (including VVC and HEVC). Unless otherwise stated or technically excluded, the aspects described herein may be used individually or in combination.

На фиг. 1А показан кодер видео 100. Рассматриваются варианты этого кодера 100, но кодер 100 описан ниже в целях наглядности без описания всех ожидаемых вариантов. Перед началом кодирования видео последовательность может пройти через процесс обработки до кодирования (101), например, применяя преобразование цвета к исходному цветному изображению (к примеру, преобразование из RGB 4:4:4 в YCbCr 4:2:0), или выполняя переназначение компонентов исходного изображения, чтобы получить более пригодное для сжатия распределение сигнала (например, выравнивание гистограммы для одного из компонентов цвета). Метаданные могут быть ассоциированы с предварительной обработкой и прикреплены к потоку битов.In fig. 1A shows a video encoder 100. Variations of this encoder 100 are discussed, but the encoder 100 is described below for purposes of illustration without describing all expected variations. Before encoding the video, the sequence may go through a pre-encoding process (101), for example, applying a color transformation to the original color image (for example, converting from RGB 4:4:4 to YCbCr 4:2:0), or performing component remapping source image to obtain a more compressible signal distribution (for example, histogram equalization for one of the color components). Metadata may be associated with preprocessing and attached to the bitstream.

В кодере 100 изображение кодируется элементами кодера, как описано ниже. Подлежащее кодированию изображение разделяется на части (102) и обрабатывается по единицам, например, по единицам кодирования (CU). Каждая единица кодируется с использованием, например, режима либо интра, либо интер. Если блок кодируется в режиме интра, то выполняется интра прогнозирование (160). В режиме интер выполняются оценка (175) движения и компенсация (170) движения. Кодер решает (105), какой один из режимов интра или интер нужно использовать для кодирования единицы, и указывает решение интра/интер с помощью, например, флага режима прогнозирования. Остатки прогнозирование вычисляются, например, посредством вычитания (110) предсказанного блока из исходного блока изображения.In encoder 100, the image is encoded by encoder elements, as described below. The image to be encoded is divided into parts (102) and processed into units, for example, coding units (CU). Each unit is encoded using, for example, either intra or inter mode. If the block is encoded in intra mode, then intra prediction is performed (160). In inter mode, motion estimation (175) and motion compensation (170) are performed. The encoder decides (105) which one of the intra or inter modes should be used to encode the unit, and indicates the intra/inter decision using, for example, a prediction mode flag. The prediction residuals are calculated, for example, by subtracting (110) the predicted block from the original image block.

Остатки прогнозирования затем подвергаются преобразованию (125) и квантованию (130). Квантованные коэффициенты преобразования, а также векторы движения и другие элементы синтаксиса энтропийно кодируются (145) для вывода в поток битов. Кодер может пропустить стадию преобразования и выполнить квантование непосредственно непреобразованного сигнала остатка. Кодер может обойти оба процесса преобразования и квантования, т.е. остаток кодируется непосредственно без применения процессов преобразования или квантования.The prediction residuals are then transformed (125) and quantized (130). The quantized transform coefficients, as well as motion vectors and other syntax elements, are entropy encoded (145) for output to the bitstream. The encoder can skip the transform stage and perform quantization directly on the unconverted residual signal. The encoder can bypass both the conversion and quantization processes, i.e. the remainder is encoded directly without the use of conversion or quantization processes.

Кодер декодирует закодированный блок для создания опорного блока для последующих прогнозов. Квантованные коэффициенты преобразования деквантуются (140) и подвергаются обратному преобразованию (150) для декодирования остатков прогнозирования. При объединении (155) декодированных остатков прогнозирования и предсказанного блока восстанавливается блок изображения. Циклические фильтры (165) применяются к восстановленному изображению для выполнения, например, деблокирующей фильтрации/фильтрации SAO (адаптивное смещение отсчета), адаптивной циклической фильтрации (ALF) для снижения артефактов кодирования. Отфильтрованное изображение хранится в буфере опорного изображения (180).The encoder decodes the encoded block to create a reference block for subsequent predictions. The quantized transform coefficients are dequantized (140) and inverted (150) to decode the prediction residuals. By combining (155) the decoded prediction residuals and the predicted block, the image block is reconstructed. Cyclic filters (165) are applied to the reconstructed image to perform, for example, deblocking/SAO (sample adaptive offset) filtering, adaptive cyclic filtering (ALF) to reduce encoding artifacts. The filtered image is stored in a reference image buffer (180).

На фиг. 1В показана блок-схема видеодекодера 200. В декодере 200 поток битов декодируется элементами декодера, как описано ниже. Видеодекодер 200 обычно выполняет процесс декодирования обратно по отношению к процессу кодирования, как показано на фиг. 1В. Кодер 100 также обычно выполняет видеодекодирование как часть процесса кодирования видеоданных. В частности, на вход декодера поступает битовый поток видеосигнала, который может быть создан видеокодером 100. Поток битов сначала энтропийно декодируется (230) для получения коэффициентов преобразования, векторов движения и другой закодированной информации. Информации о разделении изображения указывает, как было выполнено разделение изображения. Следовательно, декодер может разделить (235) изображение согласно информации о разделении декодируемого изображения. Коэффициенты преобразования деквантуются (240) и подвергаются обратному преобразованию (250) для декодирования остатков прогнозирования. При объединении (255) декодированных остатков прогнозирования и предсказанного блока восстанавливается блок изображения. Предсказанный блок можно получить (270) из интра прогнозирования (260) или из прогнозирования с компенсацией движения (т.е. интер прогнозирования) (275). Циклические фильтры (265) применяются к восстановленному изображению. Отфильтрованное изображение хранится в буфере опорного изображения (280).In fig. 1B shows a block diagram of a video decoder 200. In the decoder 200, a bitstream is decoded by decoder elements as described below. The video decoder 200 typically performs the decoding process in reverse to the encoding process, as shown in FIG. 1B. Encoder 100 also typically performs video decoding as part of the video encoding process. Specifically, the decoder input is provided with a video bit stream that may be generated by video encoder 100. The bit stream is first entropy decoded (230) to obtain transform coefficients, motion vectors, and other encoded information. The image division information indicates how the image division was performed. Therefore, the decoder can divide (235) the image according to the division information of the decoded image. The transform coefficients are dequantized (240) and inverted (250) to decode the prediction residuals. By combining (255) the decoded prediction residuals and the predicted block, the image block is reconstructed. The predicted block may be obtained (270) from intra prediction (260) or from motion compensated prediction (ie, inter prediction) (275). Cyclic filters (265) are applied to the reconstructed image. The filtered image is stored in a reference image buffer (280).

Декодированное изображение может в дальнейшем пройти обработку (285) постдекодированием, например, обратным цветовым преобразованием (к примеру, преобразование из YCbCr 4:2:0 в RGB 4:4:4) или выполнением обратного переназначения, т.е. процесса, обратного процессу переназначения, выполненному при обработке до кодирования (101). В обработке пост-декодирования могут использоваться метаданные, полученные в обработке до кодирования, и сигнализируемые в потоке битов.The decoded image may be further processed (285) by post-decoding, for example, by performing an inverse color conversion (eg, converting from YCbCr 4:2:0 to RGB 4:4:4) or performing an inverse remapping, i.e. a process reverse to the reassignment process performed in pre-encoding processing (101). Post-decoding processing may use metadata obtained in pre-encoding processing and signaled in the bitstream.

На фиг. 2 в виде блок-схемы показан пример системы, в которой реализованы различные аспекты и варианты осуществления. Система 1000 может быть реализована как устройство, включающее в себя описанные ниже различные компоненты, и оно выполняется с возможностью осуществлять один или несколько аспектов, описанных в настоящем документе. Примеры таких устройств включают, помимо прочего, различные электронные устройства, например, персональные компьютеры, ноутбуки, смартфоны, планшеты, телевизионные приставки для цифровой мультимедиа, цифровые телевизионные приемники, системы видеозаписи для личного пользования, подключенные домашние электроприборы и серверы. Элементы системы 1000, по отдельности или в комбинации, могут быть воплощены в виде единственной интегральной схемы (ИС), нескольких ИС и/или дискретных компонентов. Например, по меньшей мере, в одном варианте осуществления, элементы обработки и кодера/декодера системы 1000 распределены по многочисленным ИС и/или дискретным компонентам. Согласно различным вариантам осуществления система 1000 каналами передачи данных связана с одной или несколькими другими системами или другими электронными устройствами, с помощью, например, шины передачи данных или через специальные порты ввода и/или вывода. Согласно различным вариантам осуществления система 1000 выполнена с возможностью осуществлять один или несколько аспектов, описанных в настоящем документе.In fig. 2 illustrates in block diagram form an example of a system in which various aspects and embodiments are implemented. System 1000 may be implemented as a device including various components described below, and is configured to implement one or more of the aspects described herein. Examples of such devices include, but are not limited to, various electronic devices such as personal computers, laptops, smartphones, tablets, digital media set-top boxes, digital television receivers, personal video recording systems, connected home appliances, and servers. The elements of the system 1000, individually or in combination, may be implemented as a single integrated circuit (IC), multiple ICs, and/or discrete components. For example, in at least one embodiment, the processing and encoder/decoder elements of system 1000 are distributed across multiple ICs and/or discrete components. According to various embodiments, the system 1000 is connected by data links to one or more other systems or other electronic devices, using, for example, a data bus or through dedicated input and/or output ports. According to various embodiments, the system 1000 is configured to implement one or more of the aspects described herein.

Система 1000 содержит, по меньшей мере, один процессор 101, выполненный с возможностью выполнять инструкции, загруженные в него для реализации, например, различных аспектов, описанных в настоящем документе. Процессор 1010 может содержать в себе встроенную память, интерфейс ввода-вывода и различные другие схемы, известные в этой области техники. Система 1000 содержит, по меньшей мере, одно запоминающее устройство 1020 (к примеру, устройство энергозависимой памяти и/или энергонезависимой памяти). Система 1000 содержит запоминающее устройство 1040, которое может включать в себя энергонезависимую память и/или энергозависимую память, включая, помимо прочего, электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ), постоянное запоминающее устройство (ПЗУ), программируемое постоянное запоминающее устройство (ППЗУ), оперативное запоминающее устройство (ОЗУ), динамическое оперативное запоминающее устройство (ДОЗУ), статическое оперативное запоминающее устройство (СОЗУ), флеш-память, накопитель на магнитном диске и/или накопитель на оптическом диске. Запоминающее устройство 1040 может включать в себя внутреннее запоминающее устройство, подключенное запоминающее устройство (включая съемные и несъемные запоминающие устройства) и/или доступное по сети запоминающее устройство, в качестве не имеющих ограничительного характера примеров.The system 1000 includes at least one processor 101 configured to execute instructions loaded thereon to implement, for example, various aspects described herein. The processor 1010 may include on-chip memory, an input/output interface, and various other circuitry known in the art. System 1000 includes at least one storage device 1020 (eg, a volatile memory and/or non-volatile memory device). The system 1000 includes a storage device 1040, which may include non-volatile memory and/or volatile memory, including, but not limited to, electrically erasable programmable read-only memory (EEPROM), read-only memory (ROM), programmable read-only memory (PROM), random access memory (RAM), dynamic random access memory (DRAM), static random access memory (SRAM), flash memory, magnetic disk drive and/or optical disk drive. Storage device 1040 may include internal storage, connected storage (including removable and non-removable storage), and/or network accessible storage, as non-limiting examples.

Система 1000 содержит модуль 1030 кодера/декодера, выполненный с возможностью, например, обрабатывать данные для создания кодированного видео или декодированного видео, и модуль 1030 кодера/декодера может содержать свой собственный процессор и память. Модуль 1030 кодера/декодера является примером модуля, который может быть включен в устройство для выполнения функций кодирования и/или декодирования. Как известно, устройство может включать в себя один или оба модуля кодирования и декодирования. Дополнительно, модуль 1030 кодера/декодера может быть реализован как отдельный элемент системы 1000 или может быть встроен в процессор 1010 в качестве комбинации аппаратных и программных средств, как известно специалистам в этой области техники.The system 1000 includes an encoder/decoder module 1030 configured to, for example, process data to create encoded video or decoded video, and the encoder/decoder module 1030 may include its own processor and memory. Encoder/decoder module 1030 is an example of a module that may be included in a device to perform encoding and/or decoding functions. As is known, the device may include one or both encoding and decoding modules. Additionally, encoder/decoder module 1030 may be implemented as a separate element of system 1000 or may be integrated into processor 1010 as a combination of hardware and software, as is known to those skilled in the art.

Код программы, которую нужно загрузить в процессор 1010 или в кодер/декодер 1030 для выполнения различных аспектов, описанных в настоящем документе, может храниться в запоминающем устройстве 1040 и в дальнейшем загружаться в память 1020 для выполнения процессором 1010. Согласно различным вариантом осуществления один или несколько процессоров 1010, память 1020, запоминающее устройство 1040 и модуль 1030 кодера/декодера могут хранить один или несколько различных массивов данных во время выполнения процессов, описанных в настоящем документе. Такие хранящиеся массивы данных могут включать в себя, помимо прочего, входное видео, декодированное видео или части декодированного видео, поток битов, матрицы, переменные и промежуточные или окончательные результаты обработки уравнений, формул, операций и рабочей логики.Program code to be loaded into processor 1010 or encoder/decoder 1030 to perform various aspects described herein may be stored in memory 1040 and subsequently loaded into memory 1020 for execution by processor 1010. According to various embodiments, one or more processors 1010, memory 1020, storage device 1040, and encoder/decoder module 1030 may store one or more different sets of data while performing the processes described herein. Such stored data may include, but is not limited to, input video, decoded video or portions of decoded video, bitstream, matrices, variables, and intermediate or final results of processing equations, formulas, operations, and operational logic.

Согласно некоторым вариантом осуществления память, внутри процессора 1010 и/или модуля 1030 кодера/декодера используется для хранения инструкций и для предоставления рабочей памяти для обработки, которая необходима во время кодирования или декодирования. Однако согласно другим вариантом осуществления, память, внешняя к устройству обработки (например, устройством обработки может быть либо процессор 1010, либо модуль 1030 кодера/декодера), используется для одной или нескольких из этих функций. Внешняя память может быть памятью 1020 и/или запоминающим устройством 1040, например, динамической энергозависимой памятью и/или энергонезависимой флеш-памятью. Согласно некоторым вариантом осуществления, внешняя энергонезависимая флеш-память используется для хранения операционной системы, например, телевизора. Согласно, по меньшей мере, одному варианту осуществления, быстрая внешняя динамическая энергозависимая память, например ОЗУ, используется в качестве рабочей памяти для операций кодирования и декодирования видео, например для MPEG-2 (MPEG означает Moving Picture Experts Group (экспертная группа по движущемуся изображению), MPEG-2 также называется стандартом ISO/IEC 13818, а 13818-1 также известен как Н.222, а 13818-2 также известен как Н.262), HEVC (HEVC означает High Efficiency Video Coding (высокоэффективное видеокодирование), также известен как Н.265 и MPEG-H часть 2), или VVC (Versatile Video Coding (универсальное кодирование видео), это новый стандарт, который разрабатывается организацией JVET, т.е. Joint Video Experts Team (объединенная группа экспертов по видео)).In some embodiments, memory within processor 1010 and/or encoder/decoder module 1030 is used to store instructions and to provide working memory for processing that is needed during encoding or decoding. However, according to another embodiment, memory external to the processing device (eg, the processing device may be either processor 1010 or encoder/decoder module 1030) is used for one or more of these functions. The external memory may be memory 1020 and/or storage device 1040, such as dynamic volatile memory and/or non-volatile flash memory. In some embodiments, external non-volatile flash memory is used to store an operating system, such as a television. According to at least one embodiment, fast external dynamic volatile memory, such as RAM, is used as working memory for video encoding and decoding operations, such as MPEG-2 (MPEG stands for Moving Picture Experts Group) , MPEG-2 is also known as ISO/IEC 13818, and 13818-1 is also known as H.222, and 13818-2 is also known as H.262, HEVC (HEVC stands for High Efficiency Video Coding, also known as like H.265 and MPEG-H part 2), or VVC (Versatile Video Coding, this is a new standard that is being developed by the JVET organization, i.e. Joint Video Experts Team).

Вход к элементам системы 1000 может быть обеспечен с помощью различных входных устройств, которые показаны как блок 1130. Такие входные устройства включают в себя, помимо прочего, (i) радиочастотный (РЧ) модуль, который принимает РЧ сигнал, переданный, например, в эфир радиовещательной компанией, (ii) компонентный (СОМР) входной модуль (или набор входных модулей СОМР), (iii) входной модуль универсальной последовательной шины (USB), и/или (iv) входной модуль мультимедийного интерфейса высокой четкости (HDMI). Другие примеры, не показанные на фиг. 2, включают в себя композитное видео.Input to elements of the system 1000 may be provided by various input devices, which are shown as block 1130. Such input devices include, but are not limited to, (i) a radio frequency (RF) module that receives an RF signal transmitted, for example, over the air broadcaster, (ii) a component (COMP) input module (or set of COMP input modules), (iii) a universal serial bus (USB) input module, and/or (iv) a high-definition multimedia interface (HDMI) input module. Other examples not shown in FIG. 2, include composite video.

Согласно различным вариантам осуществления, входные устройства блока ИЗО имеют ассоциированные соответствующие входные обрабатывающие элементы, как известно в этой области техники. Например, РЧ модуль может быть ассоциирован с элементами, пригодными для (i) выбора нужной частоты (также называется выбор сигнала или ограничение диапазона сигнала до полосы частот), (ii) преобразования выбранного сигнала с понижением частоты, (iii) снова ограничения диапазона сигнала до более узкой полосы частот для выбора (к примеру) полосы частот сигнала, которую в некоторых вариантах осуществления можно называть каналом, (iv) демодулирования пониженного по частоте и ограниченного по полосе сигнала, (v) выполнения коррекции ошибок, и (vi) демультиплексирования для выбора нужного потока пакетов данных. РЧ модуль, согласно различным вариантам осуществления, содержит один или несколько элементов для выполнения этих функций, например, селекторы частоты, селекторы сигнала, ограничители полосы, селекторы канала, фильтры, понижающие преобразователи частоты, демодуляторы, корректоры ошибок и демультиплексоры. РЧ модуль может содержать тюнер, который выполняет различные из этих функций, включая, например, преобразование принятого сигнала с понижением частоты до более низкой частоты (например, до промежуточный частоты или почти до базовых частот) или до базовых частот. Согласно одному варианту осуществления с телевизионной приставкой, РЧ модуль и его ассоциированный входной обрабатывающий элемент принимает РЧ сигнал, передаваемый по проводной среде (например, по кабелю), и выполняет выбор частоты посредством фильтрации, преобразования с понижением частоты и новой фильтрации до желаемой полосы частот. В различных вариантах осуществления изменен порядок описанных выше (и других) элементов, удалены некоторые из этих элементов, и/или добавлены другие элементы, выполняющий подобные или другие функции. Добавление элементов может включать вставление элементов между существующими элементами, например, вставление усилителей и аналого-цифрового преобразователя. Согласно различным вариантам осуществления РЧ модуль содержит антенну.According to various embodiments, the input devices of the ISO block have associated corresponding input processing elements, as is known in the art. For example, an RF module may be associated with elements suitable for (i) selecting a desired frequency (also called signal selection or limiting the signal range to a frequency band), (ii) downconverting the selected signal, (iii) again limiting the signal range to narrower frequency band to select (for example) the signal bandwidth, which in some embodiments may be referred to as a channel, (iv) demodulating the down-frequency and band-limited signal, (v) performing error correction, and (vi) demultiplexing to select the desired stream of data packets. An RF module, according to various embodiments, includes one or more elements to perform these functions, such as frequency selectors, signal selectors, band limiters, channel selectors, filters, downconverters, demodulators, error correctors, and demultiplexers. The RF module may include a tuner that performs various of these functions, including, for example, downconverting the received signal to a lower frequency (eg, to an intermediate frequency or near base frequencies) or to base frequencies. According to one set-top box embodiment, the RF module and its associated input processing element receives an RF signal transmitted over a wired medium (eg, a cable) and performs frequency selection through filtering, downconverting, and refiltering to a desired frequency band. In various embodiments, the order of the elements described above (and others) is changed, some of these elements are removed, and/or other elements are added that perform similar or different functions. Adding elements may involve inserting elements between existing elements, such as inserting amplifiers and an analog-to-digital converter. In various embodiments, the RF module includes an antenna.

Дополнительно, модули USB и/или HDMI могут включать соответствующие процессоры интерфейса для подключения системы 1000 к другим электронным устройствам по соединениям USB и/или HDMI. Следует понимать, что можно реализовать различные аспекты обработки входного сигнала, например, коррекцию ошибок по коду Рида-Соломона, например, внутри отдельной входной обрабатывающей ИС или внутри процессора 1010 по мере необходимости. Аналогичным образом, аспекты обработки интерфейса USB или HDMI можно реализовать внутри отдельных интерфейсных ИС или внутри процессора 1010 по мере необходимости. Поток демодулированных, прошедших коррекцию ошибок и демультиплексированных данных подается на различные обрабатывающие элементы, включающие, например, процессор 1010 и кодер/декодер 1030, работающие совместно с памятью и элементами хранения данных для обработки потока данных, как необходимо для вывода на выходное устройство.Additionally, the USB and/or HDMI modules may include appropriate interface processors for connecting the system 1000 to other electronic devices via USB and/or HDMI connections. It should be understood that various aspects of input signal processing, such as Reed Solomon error correction, can be implemented, for example, within a separate input processing IC or within processor 1010 as needed. Likewise, aspects of USB or HDMI interface processing can be implemented within separate interface ICs or within processor 1010 as needed. The demodulated, error-corrected, and demultiplexed data stream is provided to various processing elements, including, for example, a processor 1010 and an encoder/decoder 1030, operating in conjunction with memory and storage elements to process the data stream as needed for output to an output device.

Различные элементы системы 1000 могут быть размещены внутри общего корпуса. Внутри общего корпуса различные элементы могут быть соединены вместе и передавать данные между собой с помощью подходящих конфигураций 1140 соединений, например, через внутреннюю шину, как известно в этой области техники, включая шину связи между ИС (I2C), электропроводку и печатные платы.Various elements of the system 1000 may be housed within a common housing. Within a common package, various elements can be connected together and communicate data among themselves using suitable connection configurations 1140, for example, through an internal bus, as is known in the art, including inter-IC communication (I2C), wiring, and printed circuit boards.

Система 1000 включает в себя интерфейс 1050 передачи данных, который позволяет обмениваться данными с другими устройствами по каналу 1060 передачи данных. Интерфейс 1050 передачи данных может включать в себя, помимо прочего, трансивер, выполненный с возможностью передавать и принимать данные по каналу 1060 передачи данных. Интерфейс 1050 передачи данных может включать в себя, помимо прочего, модем или сетевую карту, а канал 1060 передачи данных может быть выполнен, например, на основе проводной и/или беспроводной среды.System 1000 includes a data interface 1050 that allows data to be exchanged with other devices over a data link 1060. Data interface 1050 may include, but is not limited to, a transceiver configured to transmit and receive data over data link 1060. Data interface 1050 may include, but is not limited to, a modem or network card, and data link 1060 may be implemented, for example, over a wired and/or wireless medium.

Данные поступают в потоковом режиме, или предоставляются другим способом, в систему 1000 в различных вариантах осуществления, используя беспроводную сеть, к примеру, сеть Wi-Fi, например, по стандарту IEEE 802.11 (IEEE означает Институт инженеров по электротехнике и электронике). Сигнал Wi-Fi в таких вариантах осуществления принимается по каналу 1060 передачи данных и по интерфейсу 1050 передачи данных, которые адаптированы для Wi-Fi связи. Канал 1060 передачи данных в таких вариантах осуществления типично подсоединен к точке доступа или к маршрутизатору, который предоставляет доступ к внешним сетям, включая Интернет, для разрешения работы потоковых приложений и других протоколов связи по технологии ОТТ. Согласно другим вариантом осуществления, потоковые данные предоставляются системе 1000 с помощью телевизионной приставки, которая доставляет данные по соединению HDMI входного блока 1130. Согласно иным другим вариантом осуществления, потоковые данные предоставляются системе 1000 с помощью РЧ соединения входного блока 1130. Как указано выше, в различных вариантах осуществления данные предоставляются в непотоковом формате. Кроме того, согласно различным вариантам осуществления, используются беспроводные сети, отличные от сети Wi-Fi, например, сотовая сеть или сеть Bluetooth.Data is streamed, or otherwise provided, to the system 1000 in various embodiments using a wireless network, such as a Wi-Fi network, such as IEEE 802.11 (IEEE stands for Institute of Electrical and Electronics Engineers). The Wi-Fi signal in such embodiments is received over a data link 1060 and a data interface 1050, which are adapted for Wi-Fi communications. Data link 1060 in such embodiments is typically connected to an access point or router that provides access to external networks, including the Internet, to enable streaming applications and other over-the-top (OTT) communication protocols. According to another embodiment, the streaming data is provided to the system 1000 using a set-top box that delivers the data over the HDMI connection of the input unit 1130. According to other other embodiments, the streaming data is provided to the system 1000 using the RF connection of the input unit 1130. As discussed above, in various In embodiments, the data is provided in a non-streaming format. In addition, according to various embodiments, wireless networks other than a Wi-Fi network are used, such as a cellular network or a Bluetooth network.

Система 1000 может выдавать выходной сигнал на различные выходные устройства, включая дисплей 1100, громкоговорители 1110 и другие периферийные устройства 1120. Согласно различным вариантам осуществления, дисплей 1100 содержит одно или несколько из следующих устройств, например, сенсорный дисплей, дисплей на органических светодиодах (OLED-дисплей), изогнутый дисплей и/или складной дисплей. Дисплей 1100 может быть для телевизора, планшета, ноутбука, мобильного телефона (сотового телефона) или другого устройства. Дисплей 1100 может также быть интегрирован с другими компонентами (например, как в смартфоне), или может быть отдельным (например, как внешний монитор для ноутбука). Согласно различным вариантам осуществления другие периферийные устройства 1120 включают в себя одно или несколько из следующих устройств: автономный цифровой видеодиск (или универсальный цифровой диск) (сокращение DVR для обоих терминов), проигрыватель дисков, стереосистему и/или систему освещения. Согласно различным вариантам осуществления, используется одно или несколько периферийных устройств 1120, которые предоставляют функции, основанные на выходном сигнале системы 1000. Например, проигрыватель дисков выполняет функцию воспроизведения выходного сигнала системы 1000.The system 1000 may provide an output signal to various output devices, including a display 1100, speakers 1110, and other peripheral devices 1120. In various embodiments, the display 1100 includes one or more of the following devices, for example, a touch display, an organic light-emitting diode (OLED) display, display), curved display and/or foldable display. The display 1100 may be for a television, tablet, laptop, mobile phone (cell phone), or other device. The display 1100 may also be integrated with other components (eg, as in a smartphone), or may be separate (eg, as an external monitor for a laptop). In various embodiments, other peripheral devices 1120 include one or more of the following: a stand-alone digital video disc (or digital versatile disc) (abbreviated DVR for both terms), a disc player, a stereo system, and/or a lighting system. According to various embodiments, one or more peripheral devices 1120 are used that provide functions based on the output of the system 1000. For example, a disc player performs the function of playing the output of the system 1000.

Согласно различным вариантам осуществления, сигналы управления передаются между системой 1000 и дисплеем 1100, громкоговорителями 1110 или другими периферийными устройствами 1120 с помощью протоколов, например, AV. Link, Consumer Electronics Control (CEC - управление бытовой электроникой) или других протоколов связи, которые позволяют осуществлять управление устройством с устройства с вмешательством пользователя или без него. Выходные устройства могут быть подключены к системе 1000 с возможностью обмена данными с помощью специализированных соединений через соответствующие интерфейсы 1070, 1080 и 1090. Альтернативно, выходные устройства можно подсоединить к системе 1000 с помощью канала 1060 передачи данных через интерфейс 1050 передачи данных. Дисплей 1100 и громкоговорители 1110 могут быть объединены в единый блок вместе с другими компонентами системы 1000 в электронном устройстве, например, в телевизоре. Согласно различным вариантам осуществления, интерфейс 1070 дисплея содержит драйвер дисплея, например, микросхему контроллера синхронизации (Т Con).According to various embodiments, control signals are transmitted between the system 1000 and the display 1100, speakers 1110, or other peripheral devices 1120 using protocols such as AV. Link, Consumer Electronics Control (CEC) or other communication protocols that allow device control from the device with or without user intervention. Output devices may be connected to the system 1000 with the ability to communicate using dedicated connections through the respective interfaces 1070, 1080 and 1090. Alternatively, the output devices may be connected to the system 1000 using a data link 1060 through a data interface 1050. The display 1100 and speakers 1110 may be combined into a single unit along with other components of the system 1000 in an electronic device, such as a television. According to various embodiments, display interface 1070 includes a display driver, such as a timing controller (T Con) chip.

Альтернативно, дисплей 1100 и громкоговорители 1110 могут быть отдельными от одного или нескольких других компонентов, например, если РЧ модуль входа 1130 является частью отдельной телевизионной приставки. Согласно различным вариантам осуществления, в которых дисплей 1100 и громкоговорители 1110 являются внешними компонентами, выходные сигналы могут подаваться по специальным выходным соединениям, включая, например, порты HDMI, порты USB или выходы СОМР.Alternatively, the display 1100 and speakers 1110 may be separate from one or more other components, for example, if the RF input module 1130 is part of a separate set-top box. In various embodiments in which the display 1100 and speakers 1110 are external components, the output signals may be provided via dedicated output connections, including, for example, HDMI ports, USB ports, or COMP outputs.

Различные варианты осуществления могут быть выполнены на основе программного обеспечения для компьютера, выполняемого процессором 1010, или на основе аппаратуры (устройств), или на основе комбинации аппаратного и программного обеспечения. В качестве не имеющего ограничительного характера примера, варианты осуществления могут быть реализованы с помощью одной или нескольких интегральных схем. Память 1020 может быть любого типа, подходящего для технической среды, и может быть реализована с использованием любой подходящей технологии хранения данных, к примеру, устройств оптической памяти, устройств магнитной памяти, устройств полупроводниковой памяти, постоянного запоминающего устройства и съемного модуля памяти, в качестве не имеющих ограничительного характера примеров. Процессор 1010 может быть любого типа, подходящего для технической среды, и может включать в себя один или несколько микропроцессоров, компьютеры общего назначения, компьютеры специального назначения и микропроцессоры с многоядерной архитектурой, в качестве не имеющих ограничительного характера примеров.Various embodiments may be implemented in computer software executed by processor 1010, or in hardware(s), or in a combination of hardware and software. By way of non-limiting example, embodiments may be implemented using one or more integrated circuits. Memory 1020 may be of any type suitable for the technical environment and may be implemented using any suitable storage technology, such as optical memory devices, magnetic memory devices, semiconductor memory devices, read only memory, and removable memory module, as not restrictive examples. The processor 1010 may be of any type suitable for the technical environment and may include one or more microprocessors, general purpose computers, special purpose computers, and multi-core microprocessors, as non-limiting examples.

Режим без потери качества доступен в стандарте HEVC. В этом режиме обход процессов преобразование и квантования указывается на уровне CU флагом в начале синтаксической конструкции CU. Если обход включен, то операции преобразования и масштабирования с квантованием пропускаются, и сигнал остатка непосредственно кодируется без какого-либо ухудшения. Благодаря этому такой режим позволяет выполнить идеальное восстановление для представления закодированного блока без потерь качества. Разницы отсчетов кодируются, как если бы они были квантованными уровнями коэффициентов преобразования, т.е. с повторным использованием кодирования блока преобразования с субблоками преобразования, сканами коэффициентов и сигнализацией последнего значащего коэффициента. Этот режим может, к примеру, быть полезным для местного кодирования графического контента, когда артефакты квантования могут быть сильно заметными или они не допускаются вообще. Кодер может также переключиться в этот режим, если объем данных с искажениями при обычном кодировании с преобразованием, типично при использовании низких параметров квантования, оказывается больше объема данных при кодировании с обходом. Для единиц кодирования CU, закодированных в режиме без потерь, отключается пост-фильтрация.Lossless mode is available in the HEVC standard. In this mode, bypass of the conversion and quantization processes is indicated at the CU level by a flag at the beginning of the CU syntax construct. If bypass is enabled, the transform and quantization scaling operations are skipped and the remainder signal is directly encoded without any degradation. Thanks to this, this mode allows for ideal reconstruction to represent the encoded block without loss of quality. The sample differences are encoded as if they were quantized levels of the transform coefficients, i.e. with reuse of transform block coding with transform subblocks, coefficient scans and last significant coefficient signaling. This mode can, for example, be useful for local encoding of graphics content where quantization artifacts may be very noticeable or not tolerated at all. The encoder may also switch to this mode if the amount of corrupted data in conventional transform encoding, typically when using low quantization parameters, is larger than the amount of data in bypass encoding. For CUs encoded in lossless mode, post-filtering is disabled.

Если ИКМ (импульсно-кодовая модуляция) активирована в наборе параметров последовательности (SPS), то она может быть указаны на уровне CU. В случае ее активности для рассматриваемой CU не применяется никакого прогнозирования, никакого квантования и никакого преобразования. Вместо этого значения отсчетов в соответствующих кодируемых блоках непосредственно кодируются в поток битов на уровне глубины битов отсчетов ИКМ, которая настроена в SPS. Уровень гранулярности для применения кодирования ИКМ можно настроить между минимумом для размера блока дерева кодирования яркости Luma и 32×32 с высокой стороны и наименьшим размером блока кодирования Luma с низкой стороны. Если единица кодирования кодируется в режиме ИКМ, размер других единиц кодирования в том же самом дереве кодирования единицы не должен быть меньше, чем размер единицы ИКМ. Поскольку по определению кодирование ИКМ позволяет получить представления без потерь соответствующего блока, биты, затраченные на кодирование ИКМ кодируемой единицы, могут рассматриваться как верхний предел количества битов, необходимого для кодирования CU. Следовательно, кодер может переключиться в режим кодирования ИКМ в случаях, когда применение кодирования остатка на основе преобразования привело бы к превышению этого предела, например, для чрезмерно зашумленного контента.If PCM (Pulse Code Modulation) is enabled in the Sequence Parameter Set (SPS), it can be specified at the CU level. When active, no prediction, no quantization, and no transformation is applied to the CU in question. Instead, the sample values in the corresponding coded blocks are directly encoded into the bitstream at the PCM sample bit depth that is configured in the SPS. The granularity level for applying PCM encoding can be adjusted between the minimum for the Luma luminance encoding tree block size and 32x32 on the high side and the smallest Luma encoding block size on the low side. If a coding unit is encoded in PCM mode, the size of other coding units in the same unit coding tree shall not be less than the size of the PCM unit. Since by definition PCM encoding produces lossless representations of the corresponding block, the bits spent on PCM encoding of the encoded unit can be considered as an upper limit on the number of bits required to encode the CU. Therefore, the encoder can switch to PCM encoding mode in cases where applying transform-based residual encoding would result in exceeding this limit, for example for excessively noisy content.

Режим без потери качества в стандарте HEVC активируется с помощью флага transquant_bypass_enabled_flag (разрешен обход преобразования и квантования), закодированного в наборе параметров изображения (PPS) (см. ниже в Таблице 1). Этот флаг разрешает кодирование флага cu_transquant_bypass_flag на уровне CU (Таблица 2). Флаг cu_transquant_bypass_flag указывает, что процессы квантования, преобразование и циклический фильтр обходятся.HEVC lossless mode is enabled by the transquant_bypass_enabled_flag encoded in the Picture Parameter Set (PPS) (see Table 1 below). This flag enables encoding of the cu_transquant_bypass_flag flag at the CU level (Table 2). The cu_transquant_bypass_flag indicates that the quantization, transform, and cyclic filter processes are bypassed.

Кодирование без потерь может быть полезно для всего кадра, если для всех единиц кодирования CU флаг cu_transquant_bypass_flag имеет значение Истина, но также возможно, что только регион может быть закодирован без потерь. Типично такая ситуация возникает для смешанного контента с обычным видео и наложенным на него текстом и графикой. Регионы текста и графики могут быть закодированный без потерь для получения максимальной читаемости, в то время как обычный контент может быть закодирован с потерями.Lossless encoding can be useful for an entire frame if all CU encoding units have the cu_transquant_bypass_flag set to True, but it is also possible that only a region can be lossless encoded. Typically this situation occurs for mixed content with regular video and text and graphics superimposed on it. Regions of text and graphics can be losslessly encoded for maximum readability, while regular content can be lossily encoded.

Более того, поскольку квантование по определению приводит к потерям, оно отключено при кодировании без потерь. Процесс преобразования (в стандарте HEVC используются DCT-2 и DST-4) выполняется с потерями в HEVC из-за операции округления. Пост-фильтры, например, деблокирующие фильтры и адаптивное смещение отсчета, являются бесполезными, если восстанавливаемый сигнал не содержит потерь.Moreover, since quantization is lossy by definition, it is disabled in lossless encoding. The conversion process (HEVC standard uses DCT-2 and DST-4) is lossy in HEVC due to the rounding operation. Post filters, such as deblocking filters and adaptive sample offset, are useless unless the signal being reconstructed is lossless.

На фиг. 3 показана упрощенная блок-схема процесса кодирования для режимов ИКМ, без потерь и с пропуском преобразования. На вход процесса 300 декодирования поступает поток битов. Данные декодируются из потока битов на стадии 310. В частности, при этом получаются квантованные преобразованные коэффициенты и тип преобразования. На стадии 320 к квантованным преобразованным коэффициентам применяется обратное квантование. На стадии 330 к получившимся преобразованным коэффициентам применяется обратное преобразование. Получившийся остаток на стадии 350 добавляется к предсказанному сигналу, поступающему из интра или интер прогнозирования на стадии 340. Результатом является восстановленный блок. Если на стадии 305 выбран режим I_PCM, значения отсчетов непосредственно декодируются без энтропийного декодирования. Если выбран режим кодирования без потерь, стадии 320 и 330 пропускаются. Если выбран режим пропуска преобразования, стадия 330 пропускается.In fig. Figure 3 shows a simplified block diagram of the encoding process for PCM, lossless and skip-transform modes. The input to the decoding process 300 is a stream of bits. The data is decoded from the bit stream at step 310. In particular, the quantized transform coefficients and the transform type are obtained. At step 320, inverse quantization is applied to the quantized transformed coefficients. At step 330, the inverse transform is applied to the resulting transformed coefficients. The resulting remainder is added at step 350 to the predicted signal coming from the intra or inter prediction at step 340. The result is a reconstructed block. If the I_PCM mode is selected at step 305, the sample values are directly decoded without entropy decoding. If lossless encoding mode is selected, steps 320 and 330 are skipped. If the skip conversion mode is selected, step 330 is skipped.

В самом новом стандарте универсального кодирования видео (VVC) с набором ПО Test Model 4 (VTM4) возможны большие размеры преобразования вплоть до 64±64, что в основном полезно для видео с высоким разрешением, например, для форматов 1080р и 4K. Высокочастотные коэффициенты преобразования обнуляются для блоков преобразования с размером (ширина или высота или как ширина, так и высота) равным 64, так что сохраняются только низкочастотные коэффициенты, что приводит к потере части информации. Точнее сказать, что эта информация теряется, так как она не кодируется в окончательном битовом потоке и поэтому недоступна для декодера. Например, для блока преобразования M×N, где М означает ширину блока, а N означает высоту блока, если М равно 64, сохраняются только 32 левых столбца коэффициентов преобразования. Аналогично, если N равно 64, то сохраняются только 32 верхние строки коэффициентов преобразования. В обоих примерах теряются остальные 32 столбца или строки коэффициентов преобразования. Если для большого блока используется режим пропуска преобразования, то используется весь блок без обнуления никаких значений. На практике это заключается в настройке максимального размера для преобразования, он настроен на 5, как показано во фрагменте синтаксиса из последней спецификации VVC (соответствующая строка выделено полужирным шрифтом), показанного ниже в Таблица 3. Следовательно, используется максимальный фактический размер преобразования, настроенный на 32 (25), например, в последней спецификации VVC. В дальнейшем этот параметр будет называться «max_actual_transf_size» (макс, фактический размер преобразования).The newest Versatile Video Coding (VVC) standard with the Test Model 4 (VTM4) software suite allows for larger transform sizes of up to 64±64, which is mainly useful for high-resolution videos such as 1080p and 4K. High-frequency transform coefficients are set to zero for transform blocks with a size (width or height or both width and height) of 64, so that only the low-frequency coefficients are retained, resulting in the loss of some information. More precisely, this information is lost because it is not encoded in the final bitstream and is therefore not available to the decoder. For example, for an M×N transform block, where M denotes the block width and N denotes the block height, if M is 64, only the left 32 columns of transform coefficients are stored. Likewise, if N is 64, then only the top 32 rows of the conversion coefficients are retained. In both examples, the remaining 32 columns or rows of conversion factors are lost. If skip conversion mode is used for a large block, the entire block is used without clearing any values. In practice, this involves setting the maximum size for the transform, this is set to 5, as shown in the syntax snippet from the latest VVC specification (corresponding line in bold), shown below in Table 3. Therefore, the maximum actual transform size is used, set to 32 (2 5), for example in the latest VVC specification. In the following, this parameter will be called “max_actual_transf_size” (max, actual transformation size).

В дополнение к преобразованию DCT-2, которое используется в HEVC, в VVC добавлена схема выбора нескольких преобразований (MTS), используемая для кодирования остатка как для интер, так и для интра кодированных блоков. В стандарт введены новые матрицы преобразования DST-7 и DCT-8. Для осуществления управления схемой MTS отдельные разрешающие флаги указываются на уровне SPS для интра и интер соответственно. Если схема MTS разрешена на уровне SPS, индекс MTS на уровне CU сигнализируется для указания, что для CU используется пара отдельных преобразований, выбираемых из DCT-2, DST-7, DCT-8. MTS применяется только для сигнала яркости Luma. Индекс MTS на уровне CU сигнализируется, когда выполняются следующие условия: как ширина, так и высота не превышают 32 и флаг CBF равен единице.In addition to the DCT-2 transform used in HEVC, VVC adds a multiple transform selection scheme (MTS) used for remainder encoding for both inter and intra coded blocks. New conversion matrices DST-7 and DCT-8 have been introduced into the standard. To control the MTS circuit, separate enable flags are specified at the SPS level for intra and inter, respectively. If the MTS scheme is enabled at the SPS layer, the MTS index at the CU layer is signaled to indicate that a pair of separate transforms selected from DCT-2, DST-7, DCT-8 is used for the CU. MTS only applies to the Luma signal. The MTS index at the CU level is signaled when the following conditions are met: both the width and height are not greater than 32 and the CBF flag is one.

Для снижения сложности преобразований больших размеров по DST-7 и DCT-8 высокочастотные коэффициенты преобразования обнуляются для блоков преобразования DST-7 и DCT-8 с размером (ширина или высота или как ширина, так и высота) равным 32. Сохраняются только коэффициенты внутри низкочастотного региона 16×16.To reduce the complexity of large-size DST-7 and DCT-8 conversions, high-frequency conversion coefficients are reset to zero for DST-7 and DCT-8 conversion blocks with a size (width or height or both width and height) of 32. Only coefficients within the low-frequency region 16x16.

Ограничение размера блока для пропуска преобразования точно такое же, как для MTS, это означает, что пропуск преобразования применяется для единицы кодирования CU, когда как ширина, так и высота блока не превышают 32.The block size limit for skip conversion is exactly the same as for MTS, meaning that skip conversion is applied for the CU coding unit when both the width and height of the block do not exceed 32.

Для интер прогнозируемой единицы кодирования CU с cu_cbf равным 1 можно сигнализировать флаг cu_sbt_flag для указания того, что декодируется - полный блок остатка или часть блока остатка. В первом случае информация интер MTS дополнительно анализируется для определения типа преобразования CU. Во втором случае часть остатка блока кодируется с принятым адаптивным преобразованием, а вторая часть остатка блока обнуляется.For an inter-predicted CU coding unit with cu_cbf equal to 1, the flag cu_sbt_flag can be signaled to indicate whether a complete remainder block or a portion of a remainder block is being decoded. In the first case, the inter MTS information is further analyzed to determine the CU conversion type. In the second case, part of the block remainder is encoded with the received adaptive transform, and the second part of the block remainder is set to zero.

На рис. 4 показаны горизонтальное и вертикальное преобразования для каждого положения SBT. Преобразование субблока (SBT) является зависящим от положения преобразованием, которое применяется к блокам преобразования яркости Luma. Два положения, SBT-H (горизонтальное) и SBT-V (вертикальное), ассоциируются с различными ядрами преобразования. Более конкретно, горизонтальное и вертикальное преобразования для каждого положения SBT показаны на Error! Reference source not found.. Например, горизонтальным и вертикальным преобразованиями для положения 0 SBT-V являются преобразования DCT-8 и DST-7, соответственно. Когда одна сторона единицы преобразования (TU) остатка больше 32, соответствующее преобразование настраивается на DCT-2. Следовательно, преобразование субблока также указывает разбиение TU на субблоки, cbf и горизонтальное и вертикальное преобразования остатка блока, что можно рассматривать как сокращенный синтаксис для случаев, когда главный остаток блока расположен у одной стороны блока.In Fig. Figure 4 shows the horizontal and vertical transformations for each SBT position. The subblock transform (SBT) is a position-dependent transform that is applied to Luma luma transform blocks. The two positions, SBT-H (horizontal) and SBT-V (vertical), are associated with different transformation kernels. More specifically, the horizontal and vertical transformations for each SBT position are shown in Error! Reference source not found.. For example, the horizontal and vertical transformations for position 0 of SBT-V are the DCT-8 and DST-7 transformations, respectively. When one side of the conversion unit (TU) of the remainder is greater than 32, the corresponding conversion is adjusted to DCT-2. Therefore, a subblock transform also specifies the subblocking of the TU, the cbf, and the horizontal and vertical transformations of the block remainder, which can be considered as a shorthand syntax for cases where the main block remainder is located at one side of the block.

В VTM4 был добавлен инструмент кодирования, называемый сопоставлением яркости с масштабированием цветности (LMCS) в качестве нового обрабатывающего блока перед циклическими фильтрами. У LMCS есть два основных компонента: 1) циклическое сопоставление компонента яркости Luma на основе адаптивных кусочно-линейных моделей; 2) для компонентов цветности Chroma применяется масштабирование остатка Chroma, зависящее от яркости.VTM4 added an encoding tool called luma mapping with chrominance scaling (LMCS) as a new processing block before the cyclic filters. LMCS has two main components: 1) cyclic matching of the Luma luminance component based on adaptive piecewise linear models; 2) for Chroma chromaticity components, the Chroma residual scaling is applied, depending on the brightness.

На рис. 5 показана архитектура LMCS в перспективе декодера. Блоки со светлым серым фоном на фиг. 5 показывают, где обработка выполняется в сопоставленном домене; и это включает обратное квантование, обратное преобразование, интра прогнозирование яркости и сложение прогнозированной яркости с остатком яркости. Блоки без фона на фиг. 5 показывают, где обработка выполняется в оригинальном (т.е. не сопоставленном) домене; и это включает циклические фильтры, например, деблокирования, ALF и SAO, прогнозирование компенсации движения, интра прогнозирование цветности и сложение прогнозированной цветности с остатком цветности, и хранение декодированных изображений в качестве опорных изображений. Блоки с темным серым фоном на фиг. 5 являются новыми функциональными блоками LMCS, включая прямое и обратное сопоставление сигнала яркости и зависящий от яркости процесс масштабирования цветности. Как большинство других инструментов в VVC, инструмент LMCS может быть разрешен/запрещен на уровне последовательности с помощью флага SPS.In Fig. Figure 5 shows the LMCS architecture from a decoder perspective. Blocks with a light gray background in Fig. 5 shows where processing is performed in the mapped domain; and this includes inverse quantization, inverse transform, intra luminance prediction, and adding the predicted luminance to the residual luminance. Blocks without background in Fig. 5 shows where processing is performed in the original (i.e., unmapped) domain; and this includes cyclic filters such as deblocking, ALF and SAO, motion compensation prediction, intra chrominance prediction and adding the predicted chrominance to the chrominance residual, and storing the decoded pictures as reference pictures. Blocks with a dark gray background in Fig. 5 are new LMCS functional blocks, including forward and backward luminance mapping and luminance-dependent chrominance scaling process. Like most other tools in VVC, the LMCS tool can be enabled/disabled at the sequence level using the SPS flag.

Известное также как неразделяющее вторичное преобразование (NSST) или уменьшенное вторичное преобразование (RST), вторичное преобразование применяется между прямым первичным преобразованием и квантованием (в кодере) и между деквантованием и обратным первичным преобразованием (на стороне декодера).Also known as the non-separating secondary transform (NSST) or reduced secondary transform (RST), the secondary transform is applied between the forward primary transform and quantization (at the encoder) and between dequantization and the inverse primary transform (at the decoder side).

На фиг. 6 показано применение вторичного преобразования. В JEM вторичное преобразование 4×4 применяется к малым блокам (т.е., min (ширина, высота) <8), а вторичное преобразование 8×8 применяется к большим блокам (т.е., min (ширина, высота) >4) в каждом блоке 8×8, как показано на фигуре.In fig. Figure 6 shows the application of secondary transformation. In JEM, the 4x4 secondary transform is applied to small blocks (i.e., min(width, height) < 8), and the 8x8 secondary transform is applied to large blocks (i.e., min(width, height) > 4) in each block 8x8, as shown in the figure.

Применение неразделяющего преобразования описано далее с использованием входного сигнала в качестве примера. Входной блок 4×4 представлен в виде следующий матрицы:The application of the non-separating transform is described below using the input signal as an example. The 4x4 input block is represented as the following matrix:

Для применения неразделяющего преобразования этот входной блок X 4×4 сначала представляется в виде вектора XTo apply the non-separating transform, this 4x4 input block X is first represented as a vector X

Неразделяющее преобразование вычисляется как где обозначает вектор коэффициентов преобразования, а Т является матрицей преобразования 16×16. Вектор коэффициентов с размером 16×1 затем реорганизуется в виде блока 4×4 с использованием порядка сканирования для этого блока (горизонтальный, вертикальный или диагональный). Коэффициенты с меньшим индексом будут помещены в блок коэффициентов 4×4 с меньшим индексом сканирования. Всего имеется 35 наборов преобразований и в наборе преобразования используются 3 матрицы неразделяющего преобразования (ядра). Сопоставление из режима интра прогнозирования на набор преобразования определено заранее. Для каждого набора преобразования выбранный кандидат неразделяющего вторичного преобразования указывается в дальнейшем явно сигнализируемым индексом вторичного преобразования. Индекс сигнализируется в битовом потоке один раз на интра единицу кодирования CU после коэффициентов преобразования.The non-separating transformation is calculated as Where denotes the vector of transformation coefficients, and T is the 16×16 transformation matrix. Coefficient vector with a size of 16x1 is then reorganized as a 4x4 block using the scan order for that block (horizontal, vertical or diagonal). Coefficients with a lower index will be placed in a 4x4 coefficient block with a lower scan index. There are 35 transformation sets in total and 3 non-separating transformation matrices (kernels) are used in the transformation set. The mapping from intra prediction mode to the transformation set is predefined. For each transform set, the selected non-sharing secondary transform candidate is further indicated by an explicitly signaled secondary transform index. The index is signaled in the bitstream once per CU intracoding unit after the conversion coefficients.

На фиг. 7 показано уменьшенное вторичное преобразование (RST). С помощью этой технологии матрицы 16×48 и 16×16 применяются для блоков 8×8 и 4×4, соответственно. Для удобства обозначений преобразование 16×48 обозначается как RST8×8, а преобразование 16×16 обозначается как RST4×4. Основной идеей уменьшенного преобразования (RT) является сопоставление N-мерного вектора на R-мерный вектор в другом пространстве, при этом R/N (R<N) называется множителем уменьшения.In fig. Figure 7 shows the reduced secondary transform (RST). With this technology, 16x48 and 16x16 matrices are applied to 8x8 and 4x4 blocks, respectively. For notational convenience, the 16x48 transform is denoted as RST8x8, and the 16x16 transform is denoted as RST4x4. The basic idea of a reduced transform (RT) is to map an N-dimensional vector to an R-dimensional vector in another space, with R/N (R<N) called the reduction factor.

На фиг. 8 показано прямое и обратное уменьшенные преобразования. Матрица RT является матрицей R×N, которая показана ниже:In fig. 8 shows the forward and inverse reduced transforms. The RT matrix is an R×N matrix, which is shown below:

где R строк преобразования являются R базами в N-мерном пространстве. Матрица обратного преобразования для RT является транспонированной к матрице прямого преобразования.where the R conversion strings are the R bases in N-dimensional space. The inverse transformation matrix for RT is transposed to the forward transformation matrix.

На фиг. 9 показан пример прямого процесса RST8×8 с матрицей 16×48. В принятой конфигурации матрицы 16×48 применяются вместо 16×64 с той же самой конфигурацией набора преобразования, каждая из них берет 48 входных данных из трех блоков 4×4 в верхнем левом блоке 8×8, исключая правый нижний блок 4×4 (фиг. 4). С помощью уменьшенной размерности размер памяти для хранения всех матриц снижается с 10 кБ до 8 кБ с оправданным снижением производительности.In fig. Figure 9 shows an example of a direct RST8x8 process with a 16x48 matrix. In the adopted configuration, 16x48 matrices are used instead of 16x64 with the same transformation set configuration, each taking 48 inputs from three 4x4 blocks in the top left 8x8 block, excluding the bottom right 4x4 block (Fig. . 4). With reduced dimensionality, the memory size for storing all matrices is reduced from 10 kB to 8 kB with a justifiable performance penalty.

Более того, в VTM5 был применен инструмент кодирования, называемый совместным кодированием остатков цветности. Когда этот инструмент активирован, единственный совместный блок остатка используется для описания остатков обоих блоков Cb и Cr в той же самой единице преобразования, как показано в формуле 1.Moreover, VTM5 introduced an encoding tool called chrominance residual co-encoding. When this tool is activated, a single joint residue block is used to describe the residues of both Cb and Cr blocks in the same conversion unit, as shown in Formula 1.

Сигналы Cb и Cr затем восстанавливаются посредством вычитания совместного остатка для Cb и добавления его для Cr, как показано в формуле 2.The Cb and Cr signals are then reconstructed by subtracting the joint remainder for Cb and adding it for Cr, as shown in Equation 2.

Флаг кодируется на уровне TU для разрешения совместного кодирования остатка цветности, если флаг сброшен, используется раздельное кодирование остатков Cb и Cr.The flag is encoded at the TU level to allow joint coding of the chrominance residue; if the flag is cleared, separate coding of the Cb and Cr residues is used.

Описанные ниже варианты осуществления были разработаны с учетом следующего. Кодер 100 с фиг. 1, декодер 200 с фиг. 1В и система 1000 с фиг. 2 адаптированы для реализации, по меньшей мере, одного из описанных ниже вариантов осуществления.The embodiments described below have been developed with the following in mind. Encoder 100 of FIG. 1, decoder 200 of FIG. 1B and system 1000 of FIG. 2 are adapted to implement at least one of the embodiments described below.

Согласно, по меньшей мере, одному варианту осуществления, изобретение направлено на режим кодирования без потерь в системе кодирования видео, содержащей множество инструментов кодирования, некоторые из которых по определению вызывают потери, а некоторые из которых можно адаптировать и сделать их без потерь или почти без потерь качества. Для включения режима без потерь в системе кодирования видео, к примеру, в VVC, предложена следующая стратегия:According to at least one embodiment, the invention is directed to a lossless encoding mode in a video encoding system comprising a plurality of encoding tools, some of which are inherently lossy and some of which can be adapted to be lossless or nearly lossless quality. To enable lossless mode in a video encoding system, for example, VVC, the following strategy is proposed:

- Отключить инструменты, которые по определению вызывают потери, и использовать только инструменты без потерь,- Disable tools that by definition cause losses, and use only lossless tools,

- Адаптировать некоторые инструменты для достижения кодирования без потерь,- Adapt some tools to achieve lossless encoding,

- Адаптировать некоторые инструменты для достижения кодирования почти без потерь (разница от оригинального сигнала является конечной и небольшой), так что вторичное кодирование без потерь можно применить после кодирования остатка и за счет этого обеспечить кодирование без потерь.- Adapt some tools to achieve near-lossless encoding (the difference from the original signal is finite and small), so that secondary lossless encoding can be applied after the remainder encoding and thereby achieve lossless encoding.

Кодирование без потерь можно выполнить как на уровне кадра, так и на уровне региона.Lossless encoding can be performed at both the frame and region levels.

На фиг. 10А и 10В показан пример блок-схемы алгоритма согласно, по меньшей мере, одному варианту осуществления. На фигуре показан пример общего процесса принятия решения о том, следует ли данный инструмент отключить на уровне кадра, уровне блока, следует ли адаптировать его, чтобы он был без потерь, или следует ли выполнить вторичное кодирование без потерь для использования этого инструмента, адаптированного до режима почти без потерь. Такой процесс можно реализовать, например, в показанном на фиг. 1А устройстве кодера 100.In fig. 10A and 10B show an example of a flowchart according to at least one embodiment. The figure shows an example of the general decision process of whether a given tool should be disabled at the frame level, block level, whether it should be adapted to be lossless, or whether secondary lossless encoding should be performed to use this tool adapted to the mode almost no losses. Such a process can be implemented, for example, as shown in FIG. 1A encoder device 100.

На первой стадии (400 на фиг. 10А) оценивается, является ли инструмент по определению вызывающим потери или нет.The first stage (400 in FIG. 10A) evaluates whether the instrument is inherently lossy or not.

• Если инструмент вызывает потери, вторая проверка (402 на фиг. 10В) определяет, можно ли отключить инструмент на уровне блока или нет (в таком случае им можно управлять только на уровне кадра).• If the tool causes loss, a second check (402 in FIG. 10B) determines whether the tool can be disabled at the block level or not (in which case it can only be controlled at the frame level).

ο Если инструмент нельзя отключить на уровне блока, на стадии 404 на фиг. 10В проверяется значение флага transquant_bypass_enabled_flag (типично сигнализируется на уровне PPS). Если флаг transquant_bypass_enabled_flag имеет значение Истина, инструмент отключается на стадии 410 на фиг. 10В (это применяется, например, к LMCS). Если флаг transquant_bypass_enabled_flag имеет значение Ложь, инструмент включается на стадии 411 на фиг. 10В. После выполнения любой из стадий 410 или 411 процесс завершается.ο If the tool cannot be disabled at the block level, at step 404 in FIG. 10B checks the value of the transquant_bypass_enabled_flag flag (typically signaled at the PPS level). If the transquant_bypass_enabled_flag is True, the tool is disabled at step 410 in FIG. 10V (this applies to LMCS for example). If the transquant_bypass_enabled_flag is False, the tool is enabled at step 411 in FIG. 10V. After completion of any of steps 410 or 411, the process ends.

ο Если инструмент можно отключить на уровне блока, на стадии 405 на фиг. 10В проверяется значение флага на уровне CU cu_transquant_bypass_flag. Если флаг cu_transquant_bypass_flag имеет значение Истина, инструмент отключается на уровне CU на стадии 408 на фиг. 10В (это применяется, например, к SBT, MTS, LFNTS). Если флаг cu_transquant_bypass_flag имеет значение Ложь, инструмент можно включить на уровне CU на стадии 409 на фиг. 10В. После выполнения любой из стадий 408 или 409 процесс завершается.ο If the tool can be disabled at the block level, at step 405 in FIG. 10B checks the value of the flag at the CU level cu_transquant_bypass_flag. If the cu_transquant_bypass_flag is True, the tool is disabled at the CU level at step 408 in FIG. 10V (this applies for example to SBT, MTS, LFNTS). If the cu_transquant_bypass_flag is False, the tool can be enabled at the CU level at step 409 in FIG. 10V. After completion of either step 408 or 409, the process ends.

• Если инструмент не вызывает потерь по определению, на стадии 401 на фиг. 10А выполняется тест для проверки, является ли он инструментом без потерь или нет.• If the tool does not cause loss by definition, at step 401 in FIG. 10A performs a test to check whether it is a lossless instrument or not.

ο Если инструмент не вызывает потерь, ничего специального не выполняется в алгоритме до конца процесса.ο If the tool does not cause waste, nothing special is done in the algorithm until the end of the process.

ο Если инструмент не может работать без потерь, на стадии 403 на фиг. 10А проверяется, может ли он работать почти без потерь.ο If the tool cannot operate without loss, at step 403 in FIG. 10A tests whether it can operate almost without loss.

Если инструмент не может работать почти без потерь, и он также не вызывает потерь по определению, то это означает, что его можно адаптировать, чтобы он работал без потерь (стадия 406 на фиг. 10А). Это можно применить, например, к MTS, при использовании только преобразований без потерь в наборе преобразований MTS. If the tool cannot operate nearly losslessly, and it is also lossless by definition, then this means that it can be adapted to operate losslessly (step 406 in FIG. 10A). This can be applied to MTS, for example, by using only lossless transforms in the MTS transform set.

Если инструмент не может работать почти без потерь, применяется дополнительная (вторичная) стадия кодирования без потерь (стадия 407 на фиг. 10А). Например, можно применить преобразование без потерь без квантования. If the tool cannot operate nearly losslessly, an additional (secondary) lossless encoding stage is applied (step 407 in FIG. 10A). For example, you can apply a lossless transform without quantization.

ο После выполнения любой из стадий 306 или 307 процесс завершается.ο Once either step 306 or 307 is completed, the process ends.

Далее в этом раскрытии изобретения описано применение этого процесса к конкретным инструментам из спецификации VVC.The application of this process to specific tools from the VVC specification is described later in this disclosure.

Отключение инструментов, несовместимых с кодированием без потерьDisable tools that are not compatible with lossless encoding

Этот первый случай соответствует стадиям 410 (уровень изображения) и 408 (уровень CU) на фиг. 10А. Первый элемент относится к преобразованию с обнулением с большими единицами кодирования CU. Согласно одному варианту осуществления, преобразование с обнулением нельзя использовать в случае закодированной без потерь CU или если используется пропуск преобразования. Это показано в спецификации синтаксиса в Таблице 4, в которой курсивом выделены изменения, предложенные для существующего синтаксиса VVC. Если блок больше, чем max_actual_transf_size × max_actual_transf_size (на практике в текущей версии VVC это 32×32) и закодирован без потерь, тогда кодируются все коэффициенты, в отличие от случая кодированных с потерями блоков, когда кодируется только часть коэффициентов.This first case corresponds to stages 410 (image level) and 408 (CU level) in FIG. 10A. The first element refers to the nulling conversion with large CU coding units. According to one embodiment, the null transform cannot be used in the case of a lossless encoded CU or if skip transform is used. This is shown in the syntax specification in Table 4, in which changes proposed to the existing VVC syntax are highlighted in italics. If the block is larger than max_actual_transf_size × max_actual_transf_size (in practice in the current version of VVC this is 32x32) and is lossless encoded, then all the coefficients are encoded, unlike in the case of lossy encoded blocks where only a portion of the coefficients are encoded.

На практике, в сравнении с текущей спецификации VVC, ограничение размера преобразования применяется, только если флаг transform_skip_flag равен Ложь и флаг cu_transquant_bypass_flag равен Ложь.In practice, compared to the current VVC specification, the transform size limit only applies if the transform_skip_flag is False and the cu_transquant_bypass_flag is False.

Согласно одному варианту разделение на квадродерево получается или принудительно вносится, если на уровне изображения установлен флаг transquant_bypass_enabled_flag и если блок больше чем max_actual_transf_size × max_actual_transf_size (например, 32×32 в текущем VVC). Другими словами, когда требуется кодирование без потерь, блоки больше чем 64×64 систематически разделяются, так что размер блока становится равным 32×32 и поэтому он не подвергается обнулению. Измененный синтаксис показан в Таблице 5.In one embodiment, a quadtree split is obtained or forced if the transquant_bypass_enabled_flag is set at the image level and if the block is larger than max_actual_transf_size × max_actual_transf_size (eg, 32x32 in the current VVC). In other words, when lossless encoding is required, blocks larger than 64x64 are systematically divided so that the block size becomes 32x32 and therefore does not undergo zeroing. The modified syntax is shown in Table 5.

Согласно другому варианту, флаг cu_transquant_bypass_flag кодируется, только если текущая CU не превышает max_actual_transf_size × max_actual_transf_size (например, 32×32 в текущем VVC). Это означает, что блоки большего размера нельзя закодировать без потерь. Соответствующий синтаксис показан в Таблице 6.According to another option, the cu_transquant_bypass_flag is encoded only if the current CU does not exceed max_actual_transf_size × max_actual_transf_size (for example, 32x32 in the current VVC). This means that larger blocks cannot be encoded losslessly. The corresponding syntax is shown in Table 6.

Второй элемент относится к преобразованию субблока (SBT). Поскольку SBT использует разделение дерева преобразования с одним из блоков преобразования TU, который считается не имеющим остатка, этот инструмент не может гарантировать восстановление единицы кодирования CU без потерь. Согласно одному варианту осуществления, SBT отключен на уровне CU, когда активирован режим без потерь (то есть когда флаг transquant_bypass_enabled_flag равен Истина). Соответствующее изменение синтаксиса показано в Таблице 7. Декодирование по связанному с SBT синтаксису и активизация SBT возможны, только если флаг tramquant_bypass_enabled_flag равен Ложь.The second element refers to the subblock transform (SBT). Since SBT uses transform tree partitioning with one of the TU transform blocks considered to have no remainder, this tool cannot guarantee lossless recovery of the CU coding unit. According to one embodiment, SBT is disabled at the CU level when lossless mode is enabled (that is, when the transquant_bypass_enabled_flag is True). The corresponding syntax change is shown in Table 7. Decoding with SBT-related syntax and enabling SBT is only possible if the tramquant_bypass_enabled_flag is False.

Согласно альтернативному варианту осуществления, SBT можно использовать только для разбиения TU на субблоки. Согласно этому варианту осуществления, остаток может быть закодирован для каждого субблока, в то время как в начальном проекте у некоторых блоков коэффициенты принудительно получают значение 0. Горизонтальные и вертикальные преобразования пригодны для пропуска преобразования. Соответствующее изменение синтаксиса показано в Таблице 8.According to an alternative embodiment, SBT can only be used to partition the TU into sub-blocks. According to this embodiment, the remainder can be encoded for each sub-block, while in the initial design some blocks are forced to have coefficients set to 0. Horizontal and vertical transformations are suitable for skipping the transformation. The corresponding syntax change is shown in Table 8.

На фиг. 11 показано применение прямой и затем обратной функции для восстановления яркости Luma. Фактический третий элемент относится к восстановлению яркости (LMCS). Восстановление является преобразованием с потерями, поскольку из-за применения операций округления применение прямой и затем обратной функции не гарантирует получение исходного сигнала. В LMCS опорное изображение хранится в оригинальном домене. В случае интра процесс прогнозирования проводится в «восстановленном» домене и после восстановления отсчетов применяется обратное восстановление, как раз перед стадиями циклической фильтрации. В случае интер после компенсации движения прогнозированный сигнал восстанавливается прямым преобразованием. Затем после восстановления отсчетов применяется обратное восстановление, как раз перед стадиями циклической фильтрации.In fig. Figure 11 shows the use of a forward and then an inverse function to restore Luma brightness. The actual third element relates to luminance recovery (LMCS). Reconstruction is a lossy conversion because, due to rounding operations, applying the forward and then the inverse function does not guarantee the original signal. In LMCS, the reference image is stored in the original domain. In the case of intra, the prediction process is carried out in the "reconstructed" domain and after the samples are restored, inverse reconstruction is applied, just before the round-robin filtering stages. In the case of inter, after motion compensation, the predicted signal is restored by direct transformation. Then, after the samples have been reconstructed, reverse reconstruction is applied, just before the round-robin filtering stages.

Согласно одному варианту осуществления, LMCS отключено на уровне слайсов, если кодирование без потерь разрешено в PPS. Соответствующее изменение синтаксиса показано в Таблице 9.In one embodiment, LMCS is disabled at the slice level if lossless coding is enabled in the PPS. The corresponding syntax change is shown in Table 9.

Четвертый элемент относится к выбору нескольких преобразований (MTS) и пропуску преобразования, а вариант осуществления связан с установкой флага пропуска преобразования в Истина. Преобразования DCT и DST вносят потери, даже если стадия квантования равна 1, это происходит из-за ошибок округления, которые приводят к незначительным потерям. Согласно первому варианту осуществления, если CU закодирована без потерь (проверяется по значению флага cu_transquant_bypass_flag на уровне CU), можно использовать только пропуск преобразования. Флаг transform_skip_flag устанавливается в 1 и tu_mts_idx не кодируется. Соответствующее изменение синтаксиса показано в Таблице 10. В случае если флаг transform_skip_flag установлен в 1, кодирование остатка для пропуска преобразования используется для блоков без потерь.The fourth element relates to multiple transform selection (MTS) and skip transform, and an embodiment relates to setting the skip transform flag to True. DCT and DST conversions introduce losses even if the quantization stage is 1, this is due to rounding errors that result in negligible losses. According to the first embodiment, if the CU is lossless encoded (checked by the value of the cu_transquant_bypass_flag flag at the CU level), only bypass transform can be used. The transform_skip_flag is set to 1 and tu_mts_idx is not encoded. The corresponding syntax change is shown in Table 10. When transform_skip_flag is set to 1, transform skip remainder encoding is used for lossless blocks.

В VTM-5.0 можно использовать два различных процесса кодирования остатка, первый используется для кодирования остатка без пропуска преобразования и он эффективен для кодирования остатка блоков с обычным контентом, второй используется для кодирования остатка с пропуском преобразования и он эффективен для кодирования блоков контента экрана. Соответствующее изменение синтаксиса показано в Таблице 11.In VTM-5.0, two different remainder encoding processes can be used, the first is used for remainder encoding without skipping transformation and is effective for encoding the remainder of blocks with normal content, the second is used for encoding remainder without skipping transformation and is effective for encoding screen content blocks. The corresponding syntax change is shown in Table 11.

На фиг. 12 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда получено, что пропуск преобразования равен Истина для закодированных без потерь блоков. На первой стадии 800 анализируется флаг cu_transquant_bypass_flag, и если флаг имеет значение Истина, флаг transform_skip_flag устанавливается в Истина на стадии 801, иначе флаг transform_skip_flag анализируется на стадии 802. Если флаг transform_skip_flag имеет значение Ложь, на стадии 803 выполняется обычный анализ остатка, иначе, если флаг равен Истина, остаток с пропуском преобразования анализируется на стадии 804.In fig. 12 shows an example flowchart of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag flags, and encoding the remainder when the transform skip is found to be True for lossless encoded blocks. In a first step 800, the cu_transquant_bypass_flag is parsed, and if the flag is True, the transform_skip_flag is set to True in step 801, otherwise the transform_skip_flag is parsed in step 802. If the transform_skip_flag is False, normal residual parsing is performed in step 803, otherwise if flag is True, the skip conversion remainder is analyzed at step 804.

На фиг. 13 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда получено, что пропуск преобразования равен Ложь для закодированных без потерь блоков. На первой стадии 900 анализируется флаг cu_transquant_bypass_flag, и если флаг имеет значение Истина, флаг transform_skip_flag устанавливается в Ложь на стадии 901 и на стадии 904 используется обычное кодирование остатка, иначе флаг transform_skip_flag анализируется на стадии 902. Если флаг transform_skip_flag имеет значение Ложь, на стадии 904 выполняется обычный анализ остатка, иначе, если флаг равен Истина, остаток с пропуском преобразования анализируется на стадии 903.In fig. 13 shows an example flowchart of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag flags, and encoding the remainder when the transform skip is determined to be False for lossless encoded blocks. In a first step 900, the cu_transquant_bypass_flag is parsed, and if the flag is True, the transform_skip_flag is set to False in step 901 and normal remainder encoding is used in step 904, otherwise the transform_skip_flag is parsed in step 902. If the transform_skip_flag is False, in step 904 normal remainder analysis is performed, otherwise, if the flag is True, the remainder with skip conversion is analyzed at step 903.

Поскольку кодирование остатка для пропуска преобразования разработано для кодирования остатка в закодированных блоках контента экрана, оно может быть менее эффективным для кодирования обычного контента блоков без потери качества. Поэтому согласно другому варианту осуществления, если CU закодирована без потерь, флаг transform_skip_flag сбрасывается в 0 и tu_mts_idx не кодируется. Кодирование остатка для обычного преобразования используется для блоков с кодированием без потерь. Следовательно, в этом специальном режиме (т.е. когда флаг cu_transquant_bypass_flag равен Истина), обычное кодирование будет использоваться даже в случае, когда флаг transform_skip_flag равен Истина, в то время как обычно кодирование остатка с пропуском преобразования должно использоваться, когда флаг transform_skip_flag равен Истина.Because skip-transform remainder encoding is designed to encode the remainder in encoded blocks of screen content, it may be less efficient for encoding regular block content without loss of quality. Therefore, according to another embodiment, if the CU is lossless encoded, the transform_skip_flag is reset to 0 and tu_mts_idx is not encoded. The remainder encoding for the normal transform is used for lossless encoded blocks. Therefore, in this special mode (i.e. when the cu_transquant_bypass_flag is True), normal encoding will be used even when the transform_skip_flag is True, while normally the remainder encoding by pass pass should be used when the transform_skip_flag is True .

Другими словами, согласно этому варианту осуществления, показанному на фиг. 13, предлагается определить тип кодирования остатка, в случае, когда информация указывает, что использовалось кодирование остатка с пропуском преобразования, с помощью получения флага, указывающего на специальный режим, и если такой флаг равен Истина, выбрать использование обычного кодирования остатка вместо кодирования остатка с пропуском преобразования, которое следовало бы использовать. Указывающий на специальный режим флаг может быть получен из другой информации, к примеру, по указанию, что кодирование выполняется без потерь (например, флаг cu_transquant_bypass_flag), или по указанию, что процессы квантования, преобразования и циклической фильтрации обходятся (не используются), или по указанию, что кодирование остатка принудительно установлено на обычное кодирование остатка.In other words, according to this embodiment shown in FIG. 13, it is proposed to determine the type of remainder encoding, in the case where the information indicates that skip remainder encoding was used, by obtaining a flag indicating a special mode, and if such flag is True, select to use normal remainder encoding instead of skip remainder encoding. transformation that should be used. The flag indicating the special mode may be derived from other information, for example, by indicating that encoding is lossless (for example, the cu_transquant_bypass_flag flag), or by indicating that the quantization, transform, and round-robin filtering processes are bypassed (not used), or by indicating that the remainder encoding is forced to the normal remainder encoding.

На фиг. 14 показан пример блок-схемы варианта осуществления, который содержит синтаксический анализ флагов cu_transquant_bypass_flag, transform_skip_flag и кодирование остатка, когда пропуск преобразования всегда анализируется для закодированных без потерь блоков.In fig. 14 shows an example block diagram of an embodiment that includes parsing the cu_transquant_bypass_flag, transform_skip_flag, and remainder encoding where transform skip is always parsed for lossless encoded blocks.

Согласно такому варианту осуществления, для поддержания структуры кодированных без потерь блоков близко к структуре кодированных с потерями блоков можно использовать как обычное кодирование остатка, так и кодирование с пропуском преобразования. В этом случае флаг transform_skip_flag кодируется для закодированных без потерь блоков. Это позволяет достичь конкуренции между двумя различными способами кодирования коэффициентов остатка и лучше адаптировать кодирование остатка к контенту.According to such an embodiment, both conventional remainder encoding and skip-transform encoding can be used to maintain the structure of lossless blocks close to the structure of lossy encoded blocks. In this case, the transform_skip_flag is encoded for lossless encoded blocks. This makes it possible to achieve competition between two different ways of encoding the residual coefficients and to better tailor the residual encoding to the content.

На первой стадии 1400 анализируется флаг cu_transquant_bypass_flag, затем флаг transform_skip_flag анализируется на стадии 1401. Если флаг transform_skip_flag имеет значение Ложь, на стадии 1403 выполняется обычный анализ остатка, иначе, если флаг равен Истина, остаток с пропуском преобразования анализируется на стадии 1402.The cu_transquant_bypass_flag is analyzed in the first step 1400, then the transform_skip_flag is analyzed in step 1401. If the transform_skip_flag is False, normal remainder analysis is performed in step 1403, otherwise, if the flag is True, the skip remainder is analyzed in step 1402.

Фактически метод кодирования остатка с пропуском преобразования оптимизирован для контента, созданного компьютерной программой, когда имеется сильная корреляция между значениями пространственно соседних коэффициентов. Обычно при кодировании с потерями кодирование коэффициентов с пропуском преобразования в основном используется, когда контент создан на компьютере, и оно эффективно для такого типа контента.In fact, the skip-transformation residual encoding method is optimized for computer-generated content when there is a strong correlation between the values of spatially adjacent coefficients. Typically, in lossy encoding, skip-transform coefficient encoding is mainly used when the content is computer generated and is effective for this type of content.

Но согласно этому варианту осуществления, предложено использовать флаг для выбора между обычным методом кодирования коэффициентов и методом кодирования коэффициентов с пропуском преобразования. Фактически кодирование коэффициентов с пропуском преобразования можно использовать для созданного компьютером контента, а обычный метод кодирования коэффициентов для обычного контента. Это позволяет достичь конкуренции между двумя различными способами кодирования коэффициентов остатка и лучше адаптировать метод кодирования остатка к контенту. Этот флаг изменяет только метод кодирования коэффициентов, используемый для кодирования остатка блокаBut according to this embodiment, it is proposed to use a flag to select between a conventional coefficient encoding method and a skip-transform coefficient encoding method. In fact, skip-transform coefficient encoding can be used for computer-generated content, and the conventional coefficient encoding method can be used for regular content. This makes it possible to achieve competition between two different residual coefficient encoding methods and to better adapt the residual encoding method to the content. This flag only changes the coefficient encoding method used to encode the remainder of the block

В VVC для кодирования остатка используются 2 метода:VVC uses 2 methods to encode the remainder:

- обычный метод кодирования коэффициентов используется, когда применяются преобразование и квантование. Этот метод унаследован из HEVC с добавлением некоторых улучшений, он был разработан для кодирования остатка после преобразования, когда энергия сосредоточена в низкочастотной части сигнала.- The usual coefficient encoding method is used when transform and quantization are applied. This method is inherited from HEVC with some improvements and was designed to encode the remainder after conversion when the energy is concentrated in the low-frequency part of the signal.

- метод кодирования коэффициентов с пропуском преобразования используется, когда применяется только квантование. Этот метод был разработан для созданного компьютером контента, когда преобразование часто пропускается, поскольку имеется сильная пространственная корреляция между коэффициентами. Главными характеристиками метода кодирования коэффициентов с пропуском преобразования являются то, что в нем не сигнализируется последний ненулевой коэффициент, начиная с верхнего левого угла блока, для кодирования текущих коэффициентов используется уменьшенный шаблон предыдущих коэффициентов, и знаки коэффициентов кодируются в контексте С ABAC.- the skip-transform coefficient coding method is used when only quantization is applied. This method was developed for computer-generated content where transformation is often skipped because there is a strong spatial correlation between coefficients. The main characteristics of the skip-transform coefficient encoding method are that it does not signal the last non-zero coefficient starting from the top left corner of the block, uses a reduced pattern of previous coefficients to encode the current coefficients, and the signs of the coefficients are encoded in ABAC C context.

На фиг. 12, 13 и 14 показано, что в отличие от текущей спецификации VVC, метод кодирования остатка может быть независим от того факта, выполнялся ли пропуск преобразования или нет. Фактически в текущей спецификации VVC, если элемент синтаксиса transform_skip_flag равен Истина, то это значит, что к остатку блока не применяется никакого преобразования и используется метод кодирования коэффициентов с пропуском преобразования. Между тем в предложенных методах используется обычный метод кодирования коэффициентов, если текущий блок закодирован без потерь (преобразование и квантование пропускаются), для этого флаг transform_skip_flag сбрасывается в Ложь, чтобы использовать лучший метод кодирования коэффициентов в случае кодирования обычного контента. Согласно одному варианту, даже если флаг cu_transquant_bypass_flag равен Истина (в этом случае преобразование и квантование пропускаются), флаг (здесь для этой цели повторно используется флаг transform_skip_flag) кодируется только для указания, какой метод кодирования остатка используется.In fig. 12, 13 and 14 show that, unlike the current VVC specification, the remainder encoding method can be independent of whether a skip conversion is performed or not. In fact, in the current VVC specification, if the transform_skip_flag syntax element is True, it means that no transform is applied to the remainder of the block and the skip-transform coefficient encoding method is used. Meanwhile, the proposed methods use the normal coefficient encoding method if the current block is lossless encoded (transformation and quantization are skipped), to do this, the transform_skip_flag is set to False to use the better coefficient encoding method in the case of normal content encoding. In one embodiment, even if the cu_transquant_bypass_flag is True (in which case the transform and quantization are skipped), the flag (here transform_skip_flag is reused for this purpose) is encoded only to indicate which remainder encoding method is used.

Один вариант осуществления относится к преобразованию без отделения низких частот (LFNTS). Согласно этому варианту осуществления, LFNTS отключается, если текущая единица кодирования CU закодирована без потерь. Соответствующее изменение синтаксиса показано в Таблице 12.One embodiment relates to conversion without low frequency separation (LFNTS). According to this embodiment, LFNTS is disabled if the current CU coding unit is lossless encoded. The corresponding syntax change is shown in Table 12.

Один вариант осуществления связан с совместным кодированием Cb-Cr. Процесс совместного кодирования остатков Cb и Cr не является обратимым. При использовании формулы 1 и формулы 2 с resCb=resCr мы получаем resjoint=0 и recCb=predCb и recCr=predCr. Согласно одному варианту осуществления, совместное кодирование Cb-Cr отключается на уровне CU, если флаг cu_transquant_bypass_flag равен Истина. Соответствующее изменение синтаксиса показано в Таблице 13.One embodiment involves Cb-Cr co-coding. The process of joint coding of Cb and Cr residues is not reversible. When using formula 1 and formula 2 with resCb=resCr we get resjoint=0 and recCb=predCb and recCr=predCr. According to one embodiment, Cb-Cr co-coding is disabled at the CU level if the cu_transquant_bypass_flag is True. The corresponding syntax change is shown in Table 13.

С помощью формулы 1 можно разделить resjoint_Cb и res Joint_Cr как в формуле 3.Using formula 1, you can separate resjoint_Cb and res Joint_Cr as in formula 3.

С таким предложенным изменением процесс становится обратимым, но с потерями из-за округления, как показано в формуле 4.With this proposed change, the process becomes reversible, but with rounding losses, as shown in Formula 4.

Такой вариант можно использовать для кодирования без потерь, когда выполняется вторичный процесс кодирования без потерь, как описано далее.This option can be used for lossless encoding when a secondary lossless encoding process is performed, as described below.

Адаптация инструментов VVC для кодирования без потерьAdapting VVC Tools for Lossless Encoding

Как показано на фиг. 10А, этот случай соответствует стадии 406.As shown in FIG. 10A, this case corresponds to step 406.

Согласно одному варианту осуществления, преобразования без потерь добавляются в набор преобразований MTS. Такие преобразования следует выбирать для кодирования без потерь. Примерами преобразований без потерь являются ненормированное преобразование Уолша-Адамара, ненормированное преобразование Хаара. Примерами преобразований почти без потерь являются нормированное преобразование Уолша-Адамара, нормированное преобразование Хаара.In one embodiment, lossless transforms are added to the MTS transform set. Such transformations should be chosen for lossless encoding. Examples of lossless transformations are the unnormed Walsh-Hadamard transform and the unnormed Haar transform. Examples of almost lossless transformations are the normalized Walsh-Hadamard transform and the normalized Haar transform.

Преобразование без потерь можно получить с помощью преобразования Уолша Адамара или Хаара. Ненормированные преобразования Уолша-Адамара и Хаара составляются из ±1 и нулей, как показано в формуле 5 и в формуле 6. Например, ненормированная матрица Уолша Адамара 4×4 равна:The lossless transform can be achieved using the Walsh Hadamard or Haar transform. The unnormalized Walsh-Hadamard and Haar transforms are made up of ±1 and zeros, as shown in Formula 5 and Formula 6. For example, the 4x4 unnormalized Walsh-Hadamard matrix is:

В то время как ненормированная матрица Хаара 4×4 равна:While the unnormalized 4x4 Haar matrix is:

Восстановление без потерь может быть достигнуто с помощью преобразования либо Уолша-Адамара, либо Хаара. Для объяснения этого рассмотрим пример преобразования 2×2, которое проводится над отчетами остатков (r0 и r1). Матрица преобразования, как Хаара, так и Уолша Адамара, равна:Lossless recovery can be achieved using either the Walsh-Hadamard or Haar transformation. To explain this, consider an example of a 2x2 transformation that is performed on the residual reports (r0 and r1). The transformation matrix of both Haar and Walsh Hadamard is equal to:

Коэффициенты преобразования (с0 и c1) получается следующим образом:The conversion coefficients (c0 and c1) are obtained as follows:

Обратное преобразование проводится следующим образом:The reverse transformation is carried out as follows:

Согласно другому примеру преобразования 4×4 Уолша Адамара для преобразования четырех отсчетов (r0, r1, r2, r3) матрица умножается на вектор коэффициентов для получения коэффициентов преобразования c0, c1, с2 и с3:According to another example of the 4x4 Walsh Hadamard transform for transforming four samples (r0, r1, r2, r3), the matrix is multiplied by the coefficient vector to obtain the transform coefficients c0, c1, c2 and c3:

Обратное преобразование проводится следующим образом:The reverse transformation is carried out as follows:

Наконец, для преобразования 4 отсчетов остатка с помощью преобразования Хаара используется следующее:Finally, the following is used to transform the 4 remainder samples using the Haar transform:

Обратное преобразование проводится следующим образом:The reverse transformation is carried out as follows:

Ненормированные преобразования Хаара или Уолша-Адамара могут иногда увеличить битовый поток, поскольку возрастает динамика коэффициентов. Например, когда используется ненормированная матрица Уолша-Адамара 4×4, энергия коэффициентов может вплоть до 2 раз превышать энергию отсчетов остатков. Следовательно, нормированная матрица получается при делении ненормированной матрицы на 2. Однако выполнение этой операции приводит к потере представления целыми числами. Рассмотрим тот же самый пример для преобразования 4 отсчетов остатков с помощью «нормированного» преобразования Уолша-Адамара:Unnormalized Haar or Walsh-Hadamard transforms can sometimes increase the bit stream as the dynamics of the coefficients increases. For example, when a 4x4 unnormalized Walsh-Hadamard matrix is used, the energy of the coefficients can be up to 2 times the energy of the residual samples. Therefore, a normalized matrix is obtained by dividing an unnormalized matrix by 2. However, performing this operation results in losing the integer representation. Consider the same example for transforming 4 residual samples using the "normalized" Walsh-Hadamard transform:

Поскольку для коэффициентов преобразования используется целое представление, округление вызывает ошибку с величиной +-1/2. Следовательно, требуется дополнительная стадия кодирования, для кодирования остатка после деления на 2. Это можно выполнить следующим образом:Because conversion factors use an integer representation, rounding causes an error of +-1/2. Therefore, an additional encoding step is required to encode the remainder after division by 2. This can be done as follows:

Сначала вычислим остаток от деления для каждого коэффициента:First, calculate the remainder of the division for each coefficient:

Где остатки (remc0, remc1, remc2, remc3) могут принимать значения (-1, 0 или 1).Where the remainders (rem c0 , rem c1 , rem c2 , rem c3 ) can take values (-1, 0 or 1).

Затем остатки кодируются в поток битов. Сначала кодируется значащий бит остатка, который указывает, является ли остаток ненулевым, затем, если он ненулевой, кодируется знак остатка (0 для отрицательного и 1 для положительного). Синтаксис показан в Таблице 15. Дифференциальная импульсно-кодовая модуляция (ДИКМ) также может быть применена для использования корреляции между остатками. После декодирования остатков декодер может вычислить обратное преобразование следующим образом:The remainders are then encoded into a bitstream. First, the significant bit of the remainder is encoded, which indicates whether the remainder is non-zero, then, if it is non-zero, the sign of the remainder is encoded (0 for negative and 1 for positive). The syntax is shown in Table 15. Differential pulse code modulation (DPCM) can also be applied to exploit the correlation between residuals. After decoding the residuals, the decoder can calculate the inverse transform as follows:

Эту технологию можно использовать для других размеров преобразований, но не всегда можно достичь нормализации. Например, для нормализации матрицы преобразования Уолша-Адамара с размером 2×2 ее нужно разделить на квадратный корень из 2, что всегда приводит к потерям, так как остаток теперь не просто +-0,5. Однако деление на 2, например, как в случае размера 4×4, является выгодным, так как оно уменьшает динамику коэффициентов преобразования.This technology can be used for other transform sizes, but normalization may not always be achieved. For example, to normalize a 2x2 Walsh-Hadamard transform matrix, it must be divided by the square root of 2, which always results in a loss since the remainder is no longer just +-0.5. However, division by 2, for example, as in the case of size 4x4, is beneficial since it reduces the dynamics of the conversion coefficients.

Эта технология также применимо к преобразованию Хаара, хотя эта технология не приводит к нормализованному преобразованию из-за неоднородной нормы матрицы преобразования Хаара. Для иллюстрации ниже объясняется преобразование Хаара 4×4.This technique is also applicable to the Haar transform, although this technique does not result in a normalized transform due to the non-uniform norm of the Haar transform matrix. For illustration purposes, the 4x4 Haar transform is explained below.

Остатки вычисляются следующим образом:The remainders are calculated as follows:

Где остатки принимают значения (0, -1 и 1). На стороне декодера декодированные остатки используются в процессе обратного преобразования следующим образом:Where the remainders take the values (0, -1 and 1). On the decoder side, the decoded residuals are used in the deconversion process as follows:

С помощью инструментов Хаара, Уолша-Адамара и пропуска преобразования мы можем получить несколько путей для преобразования данных остатка без потерь. Всего у нас есть 9 вариантов выбора для горизонтального и вертикального преобразования двухмерного сигнала остатка. В следующей таблице приведены более подробные сведения о них:Using the Haar, Walsh-Hadamard, and skip transformation tools, we can obtain multiple paths to transform the residual data without loss. In total, we have 9 choices for horizontal and vertical transformation of the 2D residual signal. The following table provides more details about them:

Непосредственный способ применения этих преобразований заключается в разрешении кодеру выбирать лучшую пару преобразований, которая снижает объем битов, и в кодировании индекса используемой пары, чтобы декодер мог определить примененную пару и выполнить обратное преобразование.The direct way to apply these transforms is to allow the encoder to select the best pair of transforms that reduces the bit footprint, and to encode the index of the pair used so that the decoder can determine the pair applied and perform the reverse transform.

В последнем варианте VTM парами преобразований является либо базовое преобразование DCT2 для горизонтального и вертикального преобразований, либо дополнительный набор из преобразований DST7 и DCT8, известный как выбор нескольких преобразований (MTS). MTS можно включить или выключить с помощью флага высокого уровня. Для согласования с такой конфигурацией преобразованием без потерь по умолчанию является пропуск преобразования для обоих горизонтального и вертикального преобразований, а «несколькими преобразованиями» являются преобразования Уолша-Адамара и Хаара. Они также могут управляться флагом высокого уровня «Lossless MTS Flag». Следовательно, таблицу выбора преобразования можно модифицировать до:In the latest version of VTM, the transform pairs are either the basic DCT2 transform for horizontal and vertical transforms, or an additional set of DST7 and DCT8 transforms known as multiple transform selection (MTS). MTS can be enabled or disabled using a high level flag. To accommodate this configuration, the default lossless transform is skip transform for both horizontal and vertical transforms, and "multiple transforms" are Walsh-Hadamard and Haar transforms. They can also be controlled by the high-level Lossless MTS Flag. Therefore, the transformation selection table can be modified to:

Типично два ненормированных преобразования хорошо подходит для остатков с небольшими размерами. Например, их можно использовать вплоть до размера 8×8 или 4×4.Typically two unnormalized transformations are well suited for residues with small dimensions. For example, they can be used up to 8x8 or 4x4 sizes.

Уровень блока с вторичным кодированием без потерьBlock level with secondary lossless coding

Как показано на фиг. 10А, этот случай соответствует стадии 407.As shown in FIG. 10A, this case corresponds to step 407.

Если CU кодирована с потерями, но ошибка ограничена и находится ниже заданного порога, типично, если абсолютная величина ошибки не больше 1, то, как показано в формуле 20, можно ввести дополнительную стадию кодирования для получения кодирования без потерь. Ошибка измеряется как разница между оригинальным пикселем и восстановленным отсчетом.If the CU is lossy encoded but the error is limited and below a given threshold, typically if the absolute value of the error is not greater than 1, then as shown in Equation 20, an additional encoding stage can be introduced to obtain lossless encoding. The error is measured as the difference between the original pixel and the reconstructed sample.

Например, если используется преобразование DCT или DST со стадией квантования, равной 1, вторичное кодирование без потерь может быть применено после кодирования с потерями.For example, if a DCT or DST transform with a quantization stage of 1 is used, secondary lossless encoding may be applied after the lossy encoding.

На фиг. 15 показана упрощенная блок-схема вторичного кодирования без потерь. На вход процесса поступает поток битов. Данные декодируются из потока битов на стадии 700. В частности, при этом получаются квантованные преобразованные коэффициенты, тип преобразования и новые введенные вторичные коэффициенты. На стадии 701 к квантованным преобразованным коэффициентам применяется обратное квантование. На стадии 702 к получившимся преобразованным коэффициентам применяется обратное преобразование. Получившийся остаток на стадии 703 добавляется к предсказанному сигналу, поступающему из интра или интер прогнозирования на стадии 704. Результатом является восстановленный блок. Если на стадии 710 выбран режим IPCM, значения отсчетов непосредственно декодируются без энтропийного декодирования. Если выбран режим кодирования без потерь, стадии 701 и 702 пропускаются. Если выбран режим пропуска преобразования, стадия 702 пропускается. Если выбран уровень блока с режимом вторичного преобразования, то стадия 701 пропускается, обратное преобразование применяется на стадии 720 для получения первого остатка, затем вторичный остаток без потерь добавляется к первому остатку. Итоговая сумма остатка затем добавляется к предсказанному сигналу на стадии 703.In fig. 15 shows a simplified block diagram of secondary lossless encoding. The process input receives a stream of bits. The data is decoded from the bitstream at step 700. Specifically, the quantized transformed coefficients, the type of transformation, and the newly introduced secondary coefficients are obtained. At step 701, inverse quantization is applied to the quantized transformed coefficients. At step 702, the inverse transform is applied to the resulting transformed coefficients. The resulting remainder is added at step 703 to the predicted signal coming from the intra or inter prediction at step 704. The result is a reconstructed block. If the IPCM mode is selected at step 710, the sample values are directly decoded without entropy decoding. If lossless encoding mode is selected, steps 701 and 702 are skipped. If the skip conversion mode is selected, step 702 is skipped. If a block level with secondary transform mode is selected, then step 701 is skipped, the reverse transform is applied at step 720 to obtain the first remainder, then the lossless secondary remainder is added to the first remainder. The resulting residual amount is then added to the predicted signal at step 703.

Если ошибка ограничена ниже заданного порога, то синтаксис для кодирования этого малого остатка очень простой, в основном, если порог равен 1, только значащий флаг и флаг значения могут быть необходимы для кодирования вторичного остатка, синтаксис показан в Таблице 16.If the error is limited below a given threshold, then the syntax for encoding this small remainder is very simple, basically, if the threshold is 1, only the significant flag and the value flag may be needed to encode the secondary remainder, the syntax is shown in Table 16.

Такое вторичное кодирование без потерь может также быть применено к региону вместо блока.Such secondary lossless coding can also be applied to a region instead of a block.

Сигнализация на уровне регионаRegional Alarms

В случае использования кодирования без потерь имеется большая вероятность кодировать целый регион без потерь, а также не иметь несколько закодированных без потерь блоков, смешанных вместе с блоками, закодированными с потерями. Для обработки таких случаев фактический синтаксис нужно закодировать с флагом cu_tramquant_bypass_flag для каждой единицы кодирования CU, что может быть весьма затратно.When using lossless encoding, there is a greater likelihood of encoding an entire region losslessly and not having multiple lossless blocks mixed in with lossy blocks. To handle such cases, the actual syntax needs to be encoded with a cu_tramquant_bypass_flag for each CU encoding unit, which can be quite expensive.

Согласно первому варианту осуществления, мы предлагаем переместить флаг и кодировать его до флага split_cu_flag, так что дочерняя CU из родительской CU может совместно использовать флаг region_tramquant_bypass_flag, соответствующий синтаксис показан в Таблице 17.According to the first embodiment, we propose to move the flag and encode it before the split_cu_flag flag, so that the child CU from the parent CU can share the region_tramquant_bypass_flag flag, the corresponding syntax is shown in Table 17.

На фиг. 16 показан пример блок-схемы варианта осуществления процесса синтаксического анализа флагов region_transquant_bypass_flag и split_cu_flag, когда используется сигнализация на уровне региона. При анализе синтаксиса для единицы дерева кодирования первая стадия (500) заключается в инициализации двух переменных, isRegionTransquantCoded, которая указывает, был ли уже закодирован флаг для указания кодирования без потерь для текущего региона, и isRegionTransquant, которая указывает, был ли закодирован без потерь текущий регион, в значение «Ложь». Затем на стадии 501 проверяется, включено ли кодирование без потерь на уровне изображения (флаг Transquant_bypass_enabled_flag равен Истина) и что флаг region_transquant_bypass_flag еще не был закодирован для текущего региона (флаг isRegionTransquantCoded равен Ложь). Если выполняются эти условия, то флаг region_transquant_bypass_flag анализируется на стадии 502. В противном случае на стадии 504 анализируется флаг split_cu_flag. После стадии 502 на стадии 503 проверяется, равен ли Истина флаг region_transquant_bypass_flag. Если флаг region_transquant_bypass_flag равен Истина, переменная isRegionTransquant устанавливается в значение Истина на стадии 503. Затем флаг split_cu_flag анализируется на стадии 504. Если флаг split_cu_flag равен Истина, процесс возвращается назад к стадии 500, в противном случае дерево больше не разветвляется и процесс останавливается (стадия 505). Можно проанализировать синтаксис текущей единицы кодирования.In fig. 16 shows an example flowchart of an embodiment of the process for parsing the region_transquant_bypass_flag and split_cu_flag flags when region-level signaling is used. When parsing the syntax for a coding tree unit, the first stage (500) is to initialize two variables, isRegionTransquantCoded, which indicates whether a flag has already been encoded to indicate lossless encoding for the current region, and isRegionTransquant, which indicates whether the current region has been losslessly encoded , to "False". It is then checked at step 501 whether lossless encoding is enabled at the image level (Transquant_bypass_enabled_flag is True) and that the region_transquant_bypass_flag has not yet been encoded for the current region (isRegionTransquantCoded flag is False). If these conditions are met, then the region_transquant_bypass_flag is analyzed at step 502. Otherwise, the split_cu_flag is analyzed at step 504. After step 502, step 503 checks to see if the region_transquant_bypass_flag is True. If the region_transquant_bypass_flag is True, the isRegionTransquant variable is set to True in step 503. The split_cu_flag is then parsed in step 504. If the split_cu_flag is True, the process returns back to step 500, otherwise the tree is no longer forked and the process stops (step 505 ). You can analyze the syntax of the current encoding unit.

Кодирование без потерь в случае двойного дереваLossless coding in case of double tree

На фиг. 17 показаны различные разбиения для яркости Luma и цветности Chroma в случае двоичного дерева. В VVC структура кодирования, которая называется двойное дерево, позволяет отдельно кодировать деревья для яркости Luma и цветности Chroma для внутрикадровых интра слайсов.In fig. Figure 17 shows different partitions for Luma and Chroma in the case of a binary tree. In VVC, an encoding structure called dual tree allows separate encoding of Luma and Chroma trees for intra-frame intra slices.

Согласно одному варианту осуществления, флаг cu_transquant_bypass_flag анализируется для каждого дерева отдельно, что предоставляет больше гибкости для кодирования сигнала без потерь.In one embodiment, the cu_transquant_bypass_flag is analyzed on a per-tree basis, which provides more flexibility for lossless signal encoding.

Согласно другому варианту осуществления, флаг cu_transquant_bypass_flag не кодируется для дерева цветности, но получается из дерева яркости. Для данной единицы кодирования CU цветности, если одна из совмещенных CU яркости закодирована без потерь, текущая CU цветности также кодируется без потерь. На фигуре показаны различные разделы для деревьев яркости и цветности, например, если CU яркости L4 закодирована без потерь, то CU цветности СЗ и С4 также закодированы без потерь. В другом примере, если CU яркости L3 закодирована без потерь, то CU цветности С2 также закодирована без потерь, даже если совмещенная CU яркости L2 содержит потери.According to another embodiment, the flag cu_transquant_bypass_flag is not encoded for the chroma tree, but is derived from the luma tree. For a given chrominance CU encoding unit, if one of the combined luminance CUs is lossless encoded, the current chrominance CU is also lossless encoded. The figure shows different sections for the luma and chroma trees, for example, if the L4 luma CU is lossless encoded, then the N3 and C4 chrominance CUs are also lossless encoded. In another example, if the L3 luminance CU is lossless, then the C2 chrominance CU is also lossless, even if the combined L2 luminance CU is lossy.

В настоящем документе описан ряд аспектов, включая инструменты, функции, варианты осуществления, модели, подходы и т.п. Многие из этих аспектов описаны конкретно и, по меньшей мере, для демонстрации отдельных характеристик, они часто описаны таким образом, который может показаться ограничивающим. Однако это выполнено с целью наглядности описания и не ограничивает изобретение или объем таких аспектов. Фактически все различные аспекты можно комбинировать и взаимно заменять, чтобы создать дальнейшие аспекты. Более того, аспекты также можно комбинировать и взаимно заменять с аспектами, описанными в ранее поданных заявках.A number of aspects are described herein, including tools, functions, embodiments, models, approaches, and the like. Many of these aspects are described specifically and, at least to demonstrate individual characteristics, they are often described in a way that may seem limiting. However, this is for purposes of clarity of description and is not intended to limit the invention or the scope of such aspects. In fact, all the different aspects can be combined and interchanged to create further aspects. Moreover, aspects can also be combined and interchanged with aspects described in previously filed applications.

Аспекты, описанные и рассмотренные в настоящем документе, можно реализовать во многих различных формах. На фиг. 1А, 1В и 2 приведены некоторые варианты осуществления, но предложены и другие варианты осуществления и обсуждение этих фигур не ограничивает охват вариантов осуществления. По меньшей мере, один из аспектов обычно связан с кодированием и декодированием видео, и, по меньшей мере, один другой аспект обычно связан с передачей потока битов, созданных или закодированных. Эти и другие аспекты могут быть реализованы как способ, устройство, носитель данных для компьютера, на котором хранятся инструкции для кодирования или декодирования видеоданных согласно любому из описанных способов, и/или носитель данных для компьютера, на котором хранится поток битов, созданный согласно любому из описанных способов.The aspects described and discussed herein can be implemented in many different forms. In fig. 1A, 1B and 2 illustrate some embodiments, but other embodiments are suggested and the discussion of these figures does not limit the scope of embodiments. At least one aspect is typically associated with encoding and decoding video, and at least one other aspect is typically associated with transmitting a stream of bits created or encoded. These and other aspects may be implemented as a method, apparatus, storage medium for a computer storing instructions for encoding or decoding video data according to any of the described methods, and/or storage medium for a computer storing a bitstream created according to any of described methods.

В настоящем документе описаны различные способы, и каждый из способов предусматривает одну или несколько стадий или действий для осуществления описанного способа. Кроме случаев, когда конкретный порядок стадий или действий требуется для надлежащей реализации способа, порядок и/или использование конкретных стадий и/или действий можно модифицировать или комбинировать.Various methods are described herein, and each method includes one or more steps or steps for carrying out the described method. Unless a particular order of steps or actions is required for proper implementation of the method, the order and/or use of specific steps and/or actions can be modified or combined.

Различные способы и другие аспекты, описанные в настоящем документе, можно использовать для модифицирования модулей, например, модулей компенсации движения и оценки движения (170, 175, 275) кодера 100 и декодера 200 видеоданных, которые показаны на фиг. 1А и фиг. 1В. Более того, представленные аспекты не ограничены стандартами VVC или HEVC, и могут применяться, например, для других стандартов и рекомендаций, как уже существующих, так и разрабатываемых для будущего, и для расширений любых таких стандартов и рекомендации (включая VVC и HEVC). Если не оговорено иное, или это технически не исключено, описанные в настоящем документе аспекты можно использовать по отдельности или в комбинации.Various methods and other aspects described herein can be used to modify modules, such as motion compensation and motion estimation modules (170, 175, 275) of video encoder 100 and video decoder 200, which are shown in FIG. 1A and FIG. 1B. Moreover, the aspects presented are not limited to the VVC or HEVC standards, and may apply, for example, to other standards and recommendations, both existing and those being developed for the future, and to extensions of any such standards and recommendations (including VVC and HEVC). Unless otherwise stated or technically excluded, the aspects described herein may be used individually or in combination.

В настоящем документе используются различные численные значения. Конкретные значения приведены в качестве примеров и описанные аспекты не ограничиваются этими конкретными значениями.Various numerical values are used throughout this document. Specific meanings are given as examples and the aspects described are not limited to these specific meanings.

Различные варианты осуществления включают в себя декодирование. «Декодирование», как используется в настоящем документе, может включать в себя все или часть процессов, выполняемых, например, с принятой закодированной последовательностью данных с целью создания окончательного выходного сигнала, пригодного для просмотра. Согласно различным вариантам осуществления такие процессы включают в себя один или несколько из процессов, обычно выполняемых декодером. Согласно различным вариантам осуществления такие процессы также или альтернативно включают в себя процессы, выполняемые согласно различным вариантам осуществления декодера, описанным в настоящем документе.Various embodiments include decoding. "Decoding" as used herein may include all or part of the processes performed, for example, on a received encoded data sequence to create a final output signal suitable for viewing. In various embodiments, such processes include one or more of the processes typically performed by a decoder. In various embodiments, such processes also or alternatively include processes performed in accordance with various decoder embodiments described herein.

В качестве дальнейших примеров, в одном варианте осуществления «декодирование» означает только энтропийное декодирование, в другом варианте осуществления «декодирование» означает только дифференциальное декодирование, а в ином другом варианте осуществления «декодирование» означает комбинацию энтропийного декодирования и дифференциального декодирования. Предназначена ли фраза «процесс декодирования» для указания конкретно на подмножество операций или на общий более широкий процесс декодирования, будет понятно на основе контекста конкретных описаний и считается, что это будет хорошо понятно специалистам в этой области техники.As further examples, in one embodiment, “decoding” means only entropy decoding, in another embodiment, “decoding” means only differential decoding, and in yet another embodiment, “decoding” means a combination of entropy decoding and differential decoding. Whether the phrase “decoding process” is intended to refer specifically to a subset of operations or to a general broader decoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.

Различные варианты осуществления включают в себя кодирование. Аналогичным образом к приведенному выше обсуждению понятия «декодирование», понятие «кодирование», как оно используется в настоящем документе, может включать в себя все или часть процессов, выполняемых, например, с входной видеопоследовательностью с целью создания закодированного потока битов. Согласно различным вариантам осуществления такие процессы включают в себя один или несколько из процессов, обычно выполняемых кодером. Согласно различным вариантам осуществления такие процессы также или альтернативно включают в себя процессы, выполняемые согласно различным вариантам осуществления кодера, описанным в настоящем документе.Various embodiments include encoding. Similar to the above discussion of the concept of "decoding", the concept of "encoding", as used herein, can include all or part of the processes performed, for example, on an input video sequence to create an encoded bit stream. In various embodiments, such processes include one or more of the processes typically performed by an encoder. In various embodiments, such processes also or alternatively include processes performed in accordance with various encoder embodiments described herein.

В качестве дальнейших примеров, в одном варианте осуществления «кодирование» означает только энтропийное кодирование, в другом варианте осуществления «кодирование» означает только дифференциальное кодирование, а в ином другом варианте осуществления «кодирование» означает комбинацию энтропийного кодирования и дифференциального кодирования. Предназначена ли фраза «процесс кодирования» для указания конкретно на поднабор операций или на общий более широкий процесс кодирования, будет понятно на основе контекста конкретных описаний и считается, что это будет хорошо понятно специалистам в этой области техники.As further examples, in one embodiment, “encoding” means entropy encoding only, in another embodiment, “encoding” means only differential encoding, and in yet another embodiment, “encoding” means a combination of entropy encoding and differential encoding. Whether the phrase “encoding process” is intended to refer specifically to a subset of operations or to a general broader encoding process will be clear based on the context of the specific descriptions and is believed to be well understood by those skilled in the art.

Обратите внимание, что используемые в настоящем документе имена элементов синтаксиса являются описательными терминами. В силу этого они не исключают использование других имен элементов синтаксиса.Please note that the syntax element names used in this document are descriptive terms. As such, they do not preclude the use of other syntax element names.

Если на фигуре показана схема алгоритма, то следует понимать, что она также представляет блок-схему соответствующего устройства. Аналогичным образом, если на фигуре показана блок-схема, то следует понимать, что она также представляет схему алгоритма соответствующего способа/процесса.If the figure shows a flowchart, it should be understood that it also represents a block diagram of the corresponding device. Likewise, when a figure shows a flowchart, it should be understood that it also represents a flowchart of the corresponding method/process.

В различных вариантах осуществления упоминается оптимизация по скорости и искажениям. В частности, во время кодирования обычно учитывается баланс или компромисс между скоростью и искажениями, часто указываемый как ограничения на сложность вычислений. Оптимизация скорости и искажений обычно формулируется как минимизация функции зависимости уровня искажений от скорости передачи, которая является взвешенной суммой скорости и искажений. Имеются различные подходы для решения задачи оптимизации скорости и искажений. Например, подходы могут быть основаны на всестороннем тестировании всех вариантов кодирования, включая все учитываемые режимы или значения параметров кодирования, с полной оценкой расходов на их кодирование и соответствующих искажений в восстановленном сигнале после кодирования и декодирования. Можно также использовать более быстрые подходы, чтобы сэкономить на сложности кодирования, в частности с вычислением приблизительного уровня искажений на основе прогнозирования или по сигналу остатка прогнозирования, а не по восстановленному сигналу. Можно также использовать комбинацию этих двух подходов, например, использовать приблизительный уровень искажений только для некоторых из всех возможных вариантов кодирования, и полный уровень искажений для других вариантов кодирования. В других подходах оценивается только подмножество возможных вариантов кодирования. В более общем случае многие подходы используют любую из ряда технологий для выполнения оптимизации, но оптимизация не обязательно является полной оценкой, как затрат на кодирование, так и соответствующих искажений.In various embodiments, optimization for speed and distortion is mentioned. In particular, during encoding there is usually a balance or trade-off between speed and distortion, often cited as a constraint on computational complexity. Rate and distortion optimization is usually formulated as minimizing the distortion-rate function, which is a weighted sum of the rate and distortion. There are various approaches to solve the problem of optimizing speed and distortion. For example, approaches may be based on comprehensive testing of all encoding options, including all modes or encoding parameter values considered, with a full assessment of their encoding costs and the associated distortions in the recovered signal after encoding and decoding. Faster approaches can also be used to save on coding complexity, particularly by calculating the approximate distortion level based on the prediction or on the prediction residual signal rather than on the reconstructed signal. It is also possible to use a combination of these two approaches, for example using the approximate distortion level for only some of all possible encodings, and the full distortion level for other encodings. Other approaches evaluate only a subset of possible encoding options. More generally, many approaches use any of a number of techniques to perform optimization, but the optimization is not necessarily a complete assessment of both the encoding costs and the associated distortions.

В настоящем документе описан ряд аспектов, включая инструменты, функции, варианты осуществления, модели, подходы и т.п. Многие из этих аспектов описаны конкретно и, по меньшей мере, для демонстрации отдельных характеристик, они часто описаны таким образом, который может показаться ограничивающим. Однако это выполнено с целью наглядности описания и не ограничивает изобретение или объем таких аспектов. Фактически все различные аспекты можно комбинировать и взаимно заменять, чтобы создать дальнейшие аспекты. Более того, аспекты также можно комбинировать и взаимно заменять с аспектами, описанными в ранее поданных заявках.A number of aspects are described herein, including tools, functions, embodiments, models, approaches, and the like. Many of these aspects are described specifically and, at least to demonstrate individual characteristics, they are often described in a way that may seem limiting. However, this is for purposes of clarity of description and is not intended to limit the invention or the scope of such aspects. In fact, all the different aspects can be combined and interchanged to create further aspects. Moreover, aspects can also be combined and interchanged with aspects described in previously filed applications.

Описанные в настоящем документе варианты осуществления и аспекты можно реализовать, например, как способ или процесс, устройство, программное обеспечение, поток данных или сигнал. Даже если обсуждение ведется только в контексте единственной формы варианта осуществления (например, обсуждается только как способ), вариант осуществления обсуждаемых функций также может быть реализован в различных формах (например, как устройство или программа). Устройство можно реализовать, например, в виде соответствующих аппаратных средств, программного обеспечения, и встроенного программного обеспечения. Способы можно реализовать, например, в виде процессора, что обозначает в общем случае обрабатывающие устройства, включая, например, компьютер, микропроцессор, интегральную схему или программируемое логическое устройство. Процессоры также включают в себя устройства связи, в частности, например, компьютеры, сотовые телефоны, портативные/персональные цифровые помощники и другие устройства, которые упрощают передачу информации между конечными пользователями.The embodiments and aspects described herein may be implemented, for example, as a method or process, apparatus, software, data stream, or signal. Even if the discussion is only in the context of a single form of an embodiment (eg, discussed only as a method), an embodiment of the functions discussed may also be implemented in various forms (eg, as a device or a program). The device may be implemented, for example, in the form of corresponding hardware, software, and firmware. The methods may be implemented, for example, in the form of a processor, which generally refers to processing devices including, for example, a computer, microprocessor, integrated circuit, or programmable logic device. Processors also include communications devices, such as computers, cellular phones, portable/personal digital assistants, and other devices that facilitate the transfer of information between end users.

Ссылка на «один вариант осуществления» или «вариант осуществления» или «одну реализацию» или «реализацию», а также их различные варианты, означает, что конкретная функция, структура, характеристика и так далее, описанная в связи с вариантом осуществления, включена, по меньшей мере, в один вариант осуществления. Таким образом, фразы «согласно одному варианту осуществления» или «согласно варианту осуществления» или «в одной реализации» или «в реализации», а также их любые другие варианты, появляющийся в различных местах всего настоящего документа, не обязательно все указывают на тот же самый вариант осуществления.Reference to "one embodiment" or "embodiment" or "one implementation" or "implementation", as well as various variations thereof, means that the particular function, structure, feature, etc., described in connection with the embodiment is included, in at least one embodiment. Thus, the phrases “according to one embodiment” or “according to an embodiment” or “in one implementation” or “in an implementation”, as well as any other variations thereof, appearing at various places throughout this document do not necessarily all indicate the same most embodiment.

Кроме того, в настоящем документе может упоминаться «определение» различных частей информации. Определение информации может включать в себя одно или несколько из, например, следующих действий: оценивание информации, вычисление информации, прогнозирование информации или извлечение информации из памяти.In addition, this document may refer to the “definition” of various pieces of information. Determining information may include one or more of, for example, the following actions: evaluating information, calculating information, predicting information, or retrieving information from memory.

Более того, в настоящем документе может упоминаться «обращение» к различным частям информации. Обращение к информации может включать в себя одно или несколько из, например, следующих действий: получение информации, извлечение информации (например, из памяти), сохранение информации, перемещение информации, копирование информации, вычисление информации, определение информации, прогнозирование информации или оценивание информации.Moreover, this document may refer to “referring” to various pieces of information. Accessing information may include one or more of, for example, the following actions: retrieving information, retrieving information (eg, from memory), storing information, moving information, copying information, computing information, determining information, predicting information, or evaluating information.

Кроме того, в настоящем документе может упоминаться «получение» различных частей информации. Термин «получение», как и «обращение», подразумевает широкую трактовку. Получение информации может включать в себя одно или несколько из, например, следующих действий: обращение к информации или извлечение информации (например, из памяти). Более того, «получение» обычно происходит, тем или иным образом, во время таких операций как, например, сохранение информации, обработка информации, передача информации, перемещение информации, копирование информации, удаление информации, вычисление информации, определение информации, прогнозирование информации или оценивание информации.In addition, this document may refer to “receiving” various pieces of information. The term “receipt,” like “handling,” implies a broad interpretation. Obtaining information may involve one or more of, for example, the following actions: accessing information or retrieving information (for example, from memory). Moreover, "receiving" usually occurs, in one way or another, during such operations as, for example, storing information, processing information, transmitting information, moving information, copying information, deleting information, computing information, determining information, predicting information, or estimating information.

В настоящем документе термины «восстановлен» и «декодирован» могут использоваться взаимозаменяемо, термины «пиксель» и «отсчет» могут использоваться взаимозаменяемо, термины «изображение», «картинка», «кадр», «слайс» и «клетки» могут использоваться взаимозаменяемо. Обычно, но не обязательно, термин «восстановлен» используются на стороне кодера, в то время как термин «декодирован» используется на стороне декодера.In this document, the terms "recovered" and "decoded" may be used interchangeably, the terms "pixel" and "sample" may be used interchangeably, and the terms "image", "picture", "frame", "slice" and "cells" may be used interchangeably. . Typically, but not necessarily, the term "reconstructed" is used on the encoder side, while the term "decoded" is used on the decoder side.

Следует понимать, что использование любой из следующих конструкций «/», «и/или» и «по меньшей мере, один из», например, в случаях «А/В», «А и/или В» и «по меньшей мере, один из А и В» предназначено для описания выбора только первого из перечисленных вариантов (А), или выбора только второго из перечисленных вариантов (В), или выбора обоих вариантов (А и В). В качестве следующего примера, в случаях «А, В и/или С» и «по меньшей мере, один из А, В и С» эти формулировки предназначены для описания выбора только первого из перечисленных вариантов (А), или выбора только второго из перечисленных вариантов (В), или выбора только третьего из перечисленных вариантов (С), или выбора только первого и второго из перечисленных вариантов (А и В), или выбора только первого и третьего из перечисленных вариантов (А и С), или выбора только второго и третьего из перечисленных вариантов (В и С), или выбора всех трех вариантов (А и В и С). Это может быть расширено на любое количество перечисленных вариантов, и это очевидно специалисту обычной квалификации в этой и связанных областях техники.It should be understood that the use of any of the following constructions "/", "and/or" and "at least one of", for example, in the cases of "A/B", "A and/or B" and "at least , one of A and B" is intended to describe choosing only the first of the listed options (A), or choosing only the second of the listed options (B), or choosing both options (A and B). As a further example, in the cases of "A, B and/or C" and "at least one of A, B and C", these statements are intended to describe the selection of only the first of the listed options (A), or the selection of only the second of listed options (B), or selecting only the third of the listed options (C), or selecting only the first and second of the listed options (A and B), or selecting only the first and third of the listed options (A and C), or selecting only the second and third of the listed options (B and C), or choosing all three options (A and B and C). This can be extended to any number of the options listed, and will be apparent to one of ordinary skill in this and related fields of technology.

Также, как используется в настоящем документе, слово «сигнал» предназначено, помимо других вещей, для указания чего-то в соответствующем декодере. Например, согласно некоторым вариантом осуществления, кодер сигнализирует один конкретный параметр компенсации освещения. Таким образом, согласно варианту осуществления тот же самый параметр используется как на стороне кодера, так и на стороне декодера. Следовательно, например, кодер может передавать (явным образом сигнализировать) конкретный параметр декодеру, так что декодер может использовать тот же самый конкретный параметр. И наоборот, если у декодера уже есть конкретный параметр, а также другие, то сигнализацию можно использовать без передачи (подразумеваемая сигнализация), чтобы просто позволить декодеру узнать и выбрать конкретный параметр. За счет исключения передачи любых фактических функций в различных вариантах осуществления достигается экономия битов. Следует понимать, что такая сигнализация может быть выполнена различными способами. Например, один или несколько элементов синтаксиса, флагов и так далее используются для передачи информации соответствующему декодеру согласно различным вариантом осуществления. Хотя в предыдущем примере используется глагольная форма от слова «сигнал», слово «сигнал» может также использоваться в настоящем документе в качестве имени существительного.Also, as used herein, the word "signal" is intended, among other things, to indicate something in the corresponding decoder. For example, according to some embodiments, the encoder signals one particular lighting compensation parameter. Thus, according to the embodiment, the same parameter is used on both the encoder side and the decoder side. Therefore, for example, an encoder may communicate (explicitly signal) a particular parameter to a decoder such that the decoder may use the same particular parameter. Conversely, if the decoder already has a particular parameter as well as others, then signaling can be used without transmission (implied signaling) to simply allow the decoder to learn and select the specific parameter. By eliminating the transfer of any actual functions in various embodiments, bit savings are achieved. It should be understood that such signaling can be accomplished in a variety of ways. For example, one or more syntax elements, flags, and so on are used to convey information to a corresponding decoder according to various embodiments. Although the previous example uses the verb form of the word "signal", the word "signal" can also be used as a noun herein.

Как будет очевидно специалисту обычной квалификации в этой области техники, в реализациях может использоваться множество сигналов разного формата для пересылки информации, которую можно, например, сохранить или передать. Информация может включать в себя, например, инструкции для осуществления способа, или данные, созданные согласно одному из описанных вариантов реализации. Например, сигнал может быть отформатирован для пересылки потока битов описываемого варианта осуществления. Такой сигнал может быть отформатирован, например, как электромагнитная волна (например, используя радиочастотную часть спектра) или как сигнал базовых частот. Форматирование может включать в себя, например, кодирование потока данных и модулирование несущей с помощью закодированного потока данных. Информация, которую переносит сигнал, может быть, например, аналоговой или цифровой информацией. Сигнал, как это известно, можно передавать по ряду различных проводных и беспроводных каналов. Сигнал можно сохранить на носителе данных для процессора.As will be apparent to one of ordinary skill in the art, implementations may use a variety of signals of different formats to convey information that may, for example, be stored or transmitted. The information may include, for example, instructions for carrying out a method, or data generated in accordance with one of the described embodiments. For example, the signal may be formatted to convey the bit stream of the described embodiment. Such a signal may be formatted, for example, as an electromagnetic wave (eg, using the radio frequency portion of the spectrum) or as a base frequency signal. Formatting may include, for example, encoding the data stream and modulating the carrier with the encoded data stream. The information that the signal carries can be, for example, analog or digital information. The signal, as it is known, can be transmitted over a number of different wired and wireless channels. The signal can be stored on a storage medium for the processor.

Claims (10)

1. Способ для определения типа кодирования остатка для блока изображения или видео, этот способ предусматривает:1. A method for determining the remainder encoding type for an image or video block, this method includes: - получение первой информации, указывающей, что используется пропуск преобразования;- receiving first information indicating that skip conversion is used; - получение второй информации, указывающей, что для блоков с пропуском преобразования используется обычное кодирование остатка; и- obtaining second information indicating that normal remainder encoding is used for skip conversion blocks; And - определение, что обычное кодирование остатка нужно использовать вместо кодирования остатка с пропуском преобразования, которое следовало бы использовать для блока.- determination that normal remainder encoding should be used instead of the skip remainder encoding that would be used for the block. 2. Способ по п. 1, в котором кодирование основано на спецификациях универсального кодирования видео.2. The method of claim 1, wherein the encoding is based on Universal Video Coding specifications. 3. Способ для кодирования коэффициентов для блока пикселей изображения или видео, причем тип кодирования остатка определяется по способу по п. 1.3. A method for encoding coefficients for a block of pixels of an image or video, wherein the type of encoding of the remainder is determined by the method of claim 1. 4. Способ для декодирования коэффициентов для блока пикселей изображения или видео, причем тип кодирования остатка определяется по способу по п. 1.4. A method for decoding coefficients for a block of pixels of an image or video, wherein the encoding type of the remainder is determined by the method of claim 1. 5. Устройство для кодирования коэффициентов для блока пикселей изображения или видео, причем тип кодирования остатка определяется по способу по п. 1.5. A device for encoding coefficients for a block of pixels of an image or video, wherein the type of encoding of the remainder is determined by the method according to claim 1. 6. Устройство для декодирования коэффициентов для блока пикселей изображения или видео, причем тип кодирования остатка определяется по способу по п. 1.6. A device for decoding coefficients for a block of pixels of an image or video, wherein the type of encoding of the remainder is determined by the method according to claim 1. 7. Энергонезависимый носитель данных для компьютера, содержащий инструкции программы для реализации стадий способа по п. 1 при выполнении на процессоре.7. A non-volatile storage medium for a computer containing program instructions for implementing the stages of the method according to claim 1 when executed on a processor.
RU2021137094A 2019-06-20 2020-06-16 Lossless compression mode for universal video encoding RU2816154C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
EP19305799.9 2019-06-20

Publications (2)

Publication Number Publication Date
RU2021137094A RU2021137094A (en) 2023-07-20
RU2816154C2 true RU2816154C2 (en) 2024-03-26

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130294524A1 (en) * 2012-05-04 2013-11-07 Qualcomm Incorporated Transform skipping and lossless coding unification
RU2635064C2 (en) * 2013-10-14 2017-11-08 ЭйджЭфАй Инновэйшн Инк. Method of residual differential pulse code modulation for expanding high-efficient video coding (hevc) range
US20180007369A1 (en) * 2014-02-13 2018-01-04 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image
CN108184117A (en) * 2018-01-10 2018-06-19 北京工业大学 Layer bitstreams video quality evaluation model based on content
US10057575B2 (en) * 2011-10-17 2018-08-21 Kt Corporation Adaptive transform method based on in-screen prediction and apparatus using the method

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10057575B2 (en) * 2011-10-17 2018-08-21 Kt Corporation Adaptive transform method based on in-screen prediction and apparatus using the method
US20130294524A1 (en) * 2012-05-04 2013-11-07 Qualcomm Incorporated Transform skipping and lossless coding unification
RU2635064C2 (en) * 2013-10-14 2017-11-08 ЭйджЭфАй Инновэйшн Инк. Method of residual differential pulse code modulation for expanding high-efficient video coding (hevc) range
US20180007369A1 (en) * 2014-02-13 2018-01-04 Samsung Electronics Co., Ltd. Method and apparatus for encoding and decoding image
CN108184117A (en) * 2018-01-10 2018-06-19 北京工业大学 Layer bitstreams video quality evaluation model based on content

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Geert Van der Auwera et al, "Lossless Coding and Loop Filter Control for Transform Skip", JCTVC-J0435, 10th Meeting, Stockholm, July 2012. *
Yih Han Tan et al, "Non-RCE3: Unified lossless residual coding", JCTVC-O0087, 15th Meeting, Geneva, 2013. *

Similar Documents

Publication Publication Date Title
US12010309B2 (en) Lossless mode for versatile video coding
KR20220047725A (en) Transform selection for implicit multiple transformation selection
US20210274182A1 (en) Context-based binary arithmetic encoding and decoding
WO2022063729A1 (en) Template matching prediction for versatile video coding
KR20220036982A (en) Quadratic transformation for video encoding and decoding
US20220046244A1 (en) Directions for wide angle intra prediction
US11463712B2 (en) Residual coding with reduced usage of local neighborhood
US20240236371A1 (en) Video encoding method, video decoding method, device, system, and storage medium
US20230164360A1 (en) Method and device for image encoding and decoding
US20220150501A1 (en) Flexible allocation of regular bins in residual coding for video coding
EP4035389A1 (en) Unification of context-coded bins (ccb) count method
WO2020185492A1 (en) Transform selection and signaling for video encoding or decoding
US20220124337A1 (en) Harmonization of intra transform coding and wide angle intra prediction
RU2816154C2 (en) Lossless compression mode for universal video encoding
US20230041808A1 (en) Residual processing for video encoding and decoding
EP4078953A1 (en) Subblock merge candidates in triangle merge mode
US11539951B2 (en) Method and device for picture encoding and decoding
WO2024068298A1 (en) Mixing analog and digital neural networks implementations in video coding processes
JP2021520698A (en) Video coding and decryption.
JP2022548495A (en) Most Probable Mode Signaling Using Multiple Reference Line Intra Prediction