[go: up one dir, main page]

RU2823558C2 - Encoder, decoder and corresponding methods using adaptive loop filter - Google Patents

Encoder, decoder and corresponding methods using adaptive loop filter Download PDF

Info

Publication number
RU2823558C2
RU2823558C2 RU2021135185A RU2021135185A RU2823558C2 RU 2823558 C2 RU2823558 C2 RU 2823558C2 RU 2021135185 A RU2021135185 A RU 2021135185A RU 2021135185 A RU2021135185 A RU 2021135185A RU 2823558 C2 RU2823558 C2 RU 2823558C2
Authority
RU
Russia
Prior art keywords
syntax element
block
value
alf
truncation
Prior art date
Application number
RU2021135185A
Other languages
Russian (ru)
Other versions
RU2021135185A (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 RU2021135185A publication Critical patent/RU2021135185A/en
Application granted granted Critical
Publication of RU2823558C2 publication Critical patent/RU2823558C2/en

Links

Abstract

FIELD: physics.
SUBSTANCE: invention relates to video encoding and decoding. Result is achieved by the fact that the encoding method implemented by the decoding device comprises a step for obtaining a bit stream, in which at least one bit in the bit stream represents a syntax element for the current block, wherein the syntax element indicates a truncation index of the adaptive loop filter (ALF); parsing the bitstream to obtain a syntax element value for the current block, wherein the syntax element is encoded using a fixed-length code; applying adaptive contour filtering to the current block based on the value of the syntax element for the current block. Here, the fixed-length code means that all possible values of the syntax element are signalled using the same number of bits.
EFFECT: high efficiency of video compression.
21 cl, 24 dwg, 3 tbl

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИCROSS REFERENCE TO RELATED APPLICATIONS

Данная патентная заявка испрашивает приоритет по. предварительной патентной заявке США №. 62/843 431, поданной 4 мая 2019 г. Раскрытие вышеупомянутой патентной заявки включается в данный документ посредством ссылки в полном объеме.This patent application claims priority. US Provisional Patent Application No. 62/843,431, filed May 4, 2019. The disclosure of the above patent application is incorporated herein by reference in its entirety.

ОБЛАСТЬ ТЕХНИКИTECHNICAL FIELD

Варианты осуществления настоящей заявки (раскрытие) в целом относятся к области обработки картинок и, более конкретно, к фильтрации выборок блоков в картинке.Embodiments of the present application (disclosure) generally relate to the field of image processing and, more specifically, to filtering samples of blocks in a picture.

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

Видеокодировка (кодирование и декодирование видео) используется в широком диапазоне применений цифрового видео, например, в широковещательном цифровом телевидении, передаче видео через Интернет и мобильные сети, в диалоговых приложениях в реальном времени, таких как видеочат, видеоконференцсвязь, DVD и Blu-Ray диски, системы сбора и редактирования видеоконтента и видеокамеры приложений безопасности.Video encoding (video encoding and decoding) is used in a wide range of digital video applications, such as digital broadcast television, video transmission over the Internet and mobile networks, real-time conversational applications such as video chat, video conferencing, DVD and Blu-ray discs, systems for collecting and editing video content and video cameras for security applications.

Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодировки видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются в месте назначения устройством декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методы сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества картинки или вообще без таких потерь.The amount of video data required to present even a relatively short video can be significant, which can lead to difficulties when the data must be streamed or otherwise transmitted over a communications network with limited bandwidth. Thus, video data is typically compressed before being transmitted over modern telecommunications networks. Video size can also be an issue when the video is stored on a storage device, as memory resources may be limited. Video compression devices often use software and/or hardware at the source to encode video data before transmission or storage, thereby reducing the amount of data required to represent digital video images. The compressed data is then received at its destination by a video decompression device, which decodes the video data. With limited network resources and ever-increasing demands for higher video quality, improved compression and decompression techniques are desired that improve compression ratios with little or no loss in picture quality.

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

Варианты осуществления настоящей заявки обеспечивают аппаратуры и способы для кодирования и декодирования согласно независимым пунктам формулы изобретения.Embodiments of the present application provide apparatus and methods for encoding and decoding according to independent claims.

Вышеупомянутые и другие цели достигаются изобретением по независимым пунктам формулы изобретения. Дополнительные формы реализации очевидны из зависимых пунктов формулы изобретения, описания и фигур.The above and other goals are achieved by the invention according to independent claims. Additional forms of implementation are obvious from the dependent claims, description and figures.

Согласно первому аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством декодирования, содержащий:According to a first aspect of the present disclosure, there is provided an encoding method implemented by a decoding apparatus, comprising:

получение битового потока, в котором по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF); синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока. Здесь код фиксированной длины означает, что все возможные значения элемента синтаксиса сигнализируются с использованием одного и того же количества битов. Это обеспечивает более простой способ сигнализации параметров усечения. Дополнительно, повышается эффективность кодировки.obtaining a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, wherein the syntax element indicates a truncation index of the truncation value for the adaptive loop filter (ALF); parsing the bitstream to obtain the value of a syntax element for the current block, wherein the syntax element is encoded using a fixed-length code; Apply adaptive contour filtering to the current block based on the value of the syntax element for the current block. Here, a fixed-length code means that all possible values of a syntax element are signaled using the same number of bits. This provides a simpler way to signal truncation parameters. Additionally, encoding efficiency is improved.

В возможной форме реализации способа согласно первому аспекту как таковому значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита.In a possible implementation of the method according to the first aspect, as such, the value of the syntax element for the current block is obtained using only at least one bit.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому по меньшей мере один бит означает два бита.In a possible implementation of the method according to any previous implementation or the first aspect as such, at least one bit means two bits.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, по меньшей мере один бит в битовом потоке представляет значение элемента синтаксиса.In a possible implementation of the method according to any previous implementation or the first aspect as such, at least one bit in the bit stream represents the value of a syntax element.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, элемент синтаксиса предназначен для адаптивного контурного фильтра цветности или адаптивного контурного фильтра яркости.In a possible implementation of the method according to any previous implementation or the first aspect as such, the syntax element is for an adaptive chrominance edge filter or an adaptive luma edge filter.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, значение усечения используется для определения диапазона усечения, используемого для определения диапазона усечения, используемого для ограничения (или усечения) разности между целевым значением выборки и ближайшим значением выборки, а ограниченная разность значений выборки (или усеченная разность значений выборки) используется для модификации целевого значения выборки в процессе ALF.In a possible implementation of the method according to any previous implementation or the first aspect as such, the trim value is used to determine a trim range used to determine the trim range used to limit (or truncate) the difference between the target sample value and the nearest sample value, and the limited value difference samples (or the trimmed difference of the sample values) is used to modify the sample target value during the ALF process.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса содержит получение значения усечения на основе значения элемента синтаксиса; использование значения усечения для ограничения (или усечения) разности между целевым значением выборки текущего блока и ближайшим значением выборки; умножение ограниченной разности значений выборки (или усеченной разности значений выборки) на коэффициент адаптивного контурного фильтра (ALF); использование результата умножения для модификации целевого значения выборки.In a possible implementation of the method according to any previous implementation or the first aspect as such, applying adaptive contour filtering to the current block based on the value of the syntax element comprises obtaining a truncation value based on the value of the syntax element; using a trim value to limit (or truncate) the difference between the current block's sample target value and the nearest sample value; multiplying the limited sample difference (or truncated sample difference) by an adaptive loop filter (ALF) factor; using the result of the multiplication to modify the sample target value.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, значение усечения определяется с использованием индекса усечения, заданного элементом синтаксиса, и отображением между индексами усечения и значениями усечения.In a possible implementation of the method according to any previous implementation or the first aspect as such, the truncation value is determined using the truncation index specified by the syntax element and the mapping between the truncation indices and the truncation values.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому, код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита. Другими словами, по меньшей мере один бит представляет собой двоичное представление значения элемента синтаксиса, а значение элемента синтаксиса является целым числом без знака.In a possible implementation of the method according to any previous implementation or the first aspect as such, the fixed-length code comprises a binary representation of an unsigned integer using at least one bit. In other words, at least one bit is a binary representation of the value of the syntax element, and the value of the syntax element is an unsigned integer.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому элемент синтаксиса применяется к набору блоков, и текущий блок является одним блоком в наборе блоков.In an exemplary implementation of the method according to any previous implementation or the first aspect, as such, the syntax element is applied to a set of blocks, and the current block is one block in the set of blocks.

В возможной форме реализации способа согласно любой предыдущей реализации или первому аспекту как таковому элемент синтаксиса находится на уровне слайса.In a possible implementation of the method according to any previous implementation or the first aspect as such, the syntax element is at the slice level.

Согласно второму аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством декодирования, содержащий:According to a second aspect of the present disclosure, an encoding method implemented by a decoding apparatus is provided, comprising:

получение битового потока, в котором по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса представляет собой индекс значения усечения адаптивного контурного фильтра (ALF) и/или параметр коэффициента ALF; синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита элемента синтаксиса; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.obtaining a bitstream in which at least one bit in the bitstream represents a syntax element for the current block, wherein the syntax element is an adaptive loop filter (ALF) clipping value index and/or an ALF coefficient parameter; parsing the bitstream to obtain a syntax element value for the current block, wherein the syntax element value for the current block is obtained using only at least one bit of the syntax element; Apply adaptive contour filtering to the current block based on the value of the syntax element for the current block.

В возможной форме реализации способа согласно второму аспекту как таковому элемент синтаксиса кодируется с использованием кода фиксированной длины.In a possible implementation of the method according to the second aspect, the syntax element is itself encoded using a fixed length code.

В возможной форме реализации способа согласно предыдущей реализации код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита. Другими словами, по меньшей мере один бит представляет собой двоичное представление значения элемента синтаксиса, а значение элемента синтаксиса является целым числом без знака.In a possible implementation of the method according to the previous implementation, the fixed-length code comprises a binary representation of an unsigned integer using at least one bit. In other words, at least one bit is a binary representation of the value of the syntax element, and the value of the syntax element is an unsigned integer.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации элемент синтаксиса сам определяет значение элемента синтаксиса.In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the syntax element itself determines the meaning of the syntax element.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации, по меньшей мере один бит в битовом потоке представляет значение элемента синтаксиса.In a possible implementation of the method according to the second aspect per se or any previous implementation thereof, at least one bit in the bit stream represents the value of the syntax element.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации, индекс значения усечения ALF указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF).In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the truncation value index ALF indicates the truncation index of the truncation value for the adaptive loop filter (ALF).

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации, параметр коэффициента ALF используется для получения коэффициента ALF.In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the ALF coefficient parameter is used to obtain the ALF coefficient.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации, значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита элемента синтаксиса, означает значение элемента синтаксиса определяется самим элементом синтаксиса.In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the value of the syntax element for the current block is obtained using only at least one bit of the syntax element, meaning the value of the syntax element is determined by the syntax element itself.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации элемент синтаксиса применяется к набору блоков, и текущий блок является одним блоком в наборе блоков.In a possible implementation of the method according to the second aspect per se or any previous implementation thereof, the syntax element is applied to a set of blocks, and the current block is one block in the set of blocks.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации элемент синтаксиса находится на уровне слайса.In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the syntax element is at the slice level.

В возможной форме реализации способа согласно второму аспекту как таковому или любой его предыдущей реализации параметр коэффициента ALF используется для определения коэффициента ALF.In a possible implementation of the method according to the second aspect as such or any previous implementation thereof, the ALF coefficient parameter is used to determine the ALF coefficient.

В возможной форме реализации способа согласно первому аспекту или второму аспекту как таковому или любой его предыдущей реализации элемент синтаксиса представляет собой индекс значения усечения ALF, а по меньшей мере один бит, представляющий элемент синтаксиса, означает два бита.In a possible implementation of the method according to the first aspect or the second aspect as such or any previous implementation thereof, the syntax element is an ALF truncation value index, and at least one bit representing the syntax element is two bits.

В возможной форме реализации способа согласно предыдущей реализации индекс значения усечения ALF идентифицирует одно значение усечения из четырех значений усечения.In a possible implementation of the method according to the previous implementation, the truncation value index ALF identifies one truncation value from four truncation values.

В возможной форме реализации способа согласно первому или второму аспекту как таковому или любой его предыдущей реализации значение индекса значения усечения ALF используется для определения диапазона усечения, причем диапазон усечения используется в процессе адаптивной контурной фильтрации.In an exemplary implementation of the method according to the first or second aspect as such or any previous implementation thereof, the truncation value index value ALF is used to determine a truncation range, wherein the truncation range is used in the adaptive loop filtering process.

Согласно третьему аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством кодирования, содержащий:According to a third aspect of the present disclosure, an encoding method implemented by an encoding apparatus is provided, comprising:

определение значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF); формирование битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины.determining a syntax element value for the current block, wherein the syntax element specifies a truncation index of the truncation value for the adaptive loop filter (ALF); generating a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the syntax element is encoded using a fixed length code.

В возможной форме реализации способа согласно третьему аспекту как таковому, по меньшей мере, один бит элемента синтаксиса получается с использованием только значения элемента синтаксиса для текущего блока.In a possible implementation of the method according to the third aspect, as such, the at least one syntax element bit is obtained using only the value of the syntax element for the current block.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации значение элемента синтаксиса, соответствующее минимальной разности (например, среднеквадратичной ошибке или показателю искажения скорости) между восстановленным блоком (или отфильтрованным блоком) текущего блока и исходным сигналом текущего блока, а восстановленный блок (или фильтрованный блок) является результатом, использующим значение элемента синтаксиса, и минимальная разность ниже, чем любая другая разность, соответствующая любому другому возможному значению элемента синтаксиса.In a possible implementation of the method according to the third aspect as such or any previous implementation thereof, the value of a syntax element corresponding to the minimum difference (eg, mean square error or rate distortion index) between the reconstructed block (or filtered block) of the current block and the original signal of the current block, and the reconstructed the block (or filtered block) is the result using the syntax element value, and the minimum difference is lower than any other difference corresponding to any other possible syntax element value.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации, по меньшей мере один бит в битовом потоке представляет значение элемента синтаксиса.In a possible implementation of the method according to the third aspect per se or any previous implementation thereof, at least one bit in the bit stream represents the value of the syntax element.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации, значение усечения используется для определения диапазона усечения, используемого для ограничения (или усечения) разности между целевым значением выборки и ближайшим значением выборки, а ограниченная разность значений выборки (или усеченная разность значений выборки) используется для модификации целевого значения выборки в процессе ALF.In a possible implementation of the method according to the third aspect as such or any previous implementation thereof, the trim value is used to determine a trim range used to limit (or truncate) the difference between the target sample value and the nearest sample value, and the limited sample value difference (or truncated difference sample values) is used to modify the sample target value during the ALF process.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита. Другими словами, по меньшей мере один бит представляет собой двоичное представление значения элемента синтаксиса, а значение элемента синтаксиса является целым числом без знака.In a possible implementation of the method according to the third aspect as such or any previous implementation thereof, the fixed-length code comprises a binary representation of an unsigned integer using at least one bit. In other words, at least one bit is a binary representation of the value of the syntax element, and the value of the syntax element is an unsigned integer.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации элемент синтаксиса применяется к набору блоков, и текущий блок является одним блоком в наборе блоков.In a possible implementation of the method according to the third aspect per se or any previous implementation thereof, the syntax element is applied to a set of blocks, and the current block is one block in the set of blocks.

В возможной форме реализации способа согласно третьему аспекту как таковому или любой его предыдущей реализации элемент синтаксиса находится на уровне слайса.In a possible implementation of the method according to the third aspect as such or any previous implementation thereof, the syntax element is at the slice level.

Согласно четвертому аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством кодирования, при этом способ содержит:According to a fourth aspect of the present disclosure, an encoding method implemented by an encoding apparatus is provided, the method comprising:

определение значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса является индексом значения усечения адаптивного контурного фильтра (ALF) и/или параметром коэффициента фильтра ALF; генерирование битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом по меньшей мере один бит элемента синтаксиса получается с использованием только значения элемента синтаксиса для текущего блока.determining a syntax element value for the current block, wherein the syntax element is an adaptive loop filter (ALF) clipping value index and/or an ALF filter coefficient parameter; generating a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the at least one bit of the syntax element is obtained using only the value of the syntax element for the current block.

В возможной форме реализации способа согласно четвертому аспекту как таковому или любой его предыдущей реализации элемент синтаксиса кодируется с использованием кода фиксированной длины.In a possible implementation of the method according to the fourth aspect as such or any previous implementation thereof, the syntax element is encoded using a fixed length code.

В возможной форме реализации способа согласно предыдущей реализации код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита. Другими словами, по меньшей мере один бит представляет собой двоичное представление значения элемента синтаксиса, а значение элемента синтаксиса является целым числом без знака.In a possible implementation of the method according to the previous implementation, the fixed-length code comprises a binary representation of an unsigned integer using at least one bit. In other words, at least one bit is a binary representation of the value of the syntax element, and the value of the syntax element is an unsigned integer.

В возможной форме реализации способа согласно четвертому аспекту как таковому или любой его предыдущей реализации по меньшей мере один бит в битовом потоке представляет значение элемента синтаксиса.In a possible implementation of the method according to the fourth aspect per se or any previous implementation thereof, at least one bit in the bit stream represents the value of the syntax element.

В возможной форме реализации способа согласно четвертому аспекту как таковому или любой его предыдущей реализации элемент синтаксиса применяется к набору блоков, и текущий блок является одним блоком в наборе блоков.In a possible implementation of the method according to the fourth aspect per se or any previous implementation thereof, the syntax element is applied to a set of blocks, and the current block is one block in the set of blocks.

В возможной форме реализации способа согласно четвертому аспекту как таковому или любой его предыдущей реализации элемент синтаксиса находится на уровне слайса.In a possible implementation of the method according to the fourth aspect per se or any previous implementation thereof, the syntax element is at the slice level.

В возможной форме реализации способа согласно четвертому аспекту как таковому или любой его предыдущей реализации параметр коэффициента ALF используется для определения коэффициента ALF.In a possible implementation of the method according to the fourth aspect as such or any previous implementation thereof, the ALF coefficient parameter is used to determine the ALF coefficient.

В возможной форме реализации способа согласно третьему аспекту или четвертому аспекту как таковому или любой его предыдущей реализации элемент синтаксиса представляет собой индекс значения усечения ALF, и по меньшей мере один бит, представляющий элемент синтаксиса, означает два бита.In a possible implementation of the method according to the third aspect or the fourth aspect as such or any previous implementation thereof, the syntax element is an index of the ALF truncation value, and at least one bit representing the syntax element is two bits.

В возможной форме реализации способа согласно предыдущей реализации четвертого аспекта индекс значения усечения ALF идентифицирует одно значение усечения из четырех значений усечения.In a possible implementation of the method according to the previous implementation of the fourth aspect, the truncation value index ALF identifies one truncation value from four truncation values.

В возможной форме реализации способа согласно третьему аспекту или четвертому аспекту как таковому или любой его предыдущей реализации, значение индекса значения усечения ALF используется для определения диапазона усечения, причем диапазон усечения используется в процессе адаптивной контурной фильтрации.In a possible implementation of the method according to the third aspect or the fourth aspect as such or any previous implementation thereof, the truncation value index value ALF is used to determine a truncation range, wherein the truncation range is used in the adaptive loop filtering process.

Согласно пятому аспекту настоящего раскрытия предоставляется декодер, содержащий схему обработки для выполнения способа согласно первому или второму аспекту или любой его реализации.According to a fifth aspect of the present disclosure, a decoder is provided comprising processing circuitry for performing a method according to the first or second aspect or any implementation thereof.

Согласно шестому аспекту настоящего раскрытия предоставляется кодер, содержащий схему обработки для выполнения способа согласно третьему или четвертому аспекту или любой его реализации.According to a sixth aspect of the present disclosure, an encoder is provided comprising processing circuitry for performing a method according to the third or fourth aspect or any implementation thereof.

Согласно седьмому аспекту настоящего раскрытия предоставляется компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому одному из аспектов от первого до четвертого, или любой его реализации.According to a seventh aspect of the present disclosure, there is provided a computer program product comprising program code for performing a method according to any one of the first to fourth aspects, or any implementation thereof.

Согласно восьмому аспекту настоящего раскрытия предоставляется энергонезависимый машиночитаемый носитель, несущий программный код, который, когда выполняется компьютерным устройством, заставляет компьютерное устройство выполнять способ согласно любому одному из аспектов с первого до четвертого или любой его реализации.According to an eighth aspect of the present disclosure, there is provided a non-transitory computer-readable medium carrying program code that, when executed by a computer device, causes the computer device to perform a method according to any one of the first to fourth aspects or any implementation thereof.

Согласно девятому аспекту настоящего раскрытия предоставляется декодер, содержащий:According to the ninth aspect of the present disclosure, a decoder is provided comprising:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняются процессорами, конфигурирует декодер для выполнения способа в соответствии с первым или вторым аспектом или любой их реализацией.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to execute a method in accordance with the first or second aspect or any implementation thereof.

Согласно десятому аспекту настоящего раскрытия предоставляется кодер, содержащий:According to the tenth aspect of the present disclosure, an encoder is provided comprising:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа согласно третьему или четвертому аспекту или любому другой его реализации.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures an encoder to perform the method of the third or fourth aspect or any other implementation thereof.

Согласно одиннадцатому аспекту настоящего раскрытия предоставляется декодер, содержащий:According to an eleventh aspect of the present disclosure, a decoder is provided comprising:

блок энтропийного декодирования, сконфигурированный для получения битового потока, в котором по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF);an entropy decoding unit configured to obtain a bit stream, wherein at least one bit in the bit stream represents a syntax element for the current block, wherein the syntax element indicates a truncation index of a truncation value for the adaptive loop filter (ALF);

причем блок энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока для получения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины; и блок фильтрации, сконфигурированный для применения адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.wherein the entropy decoding unit is further configured to parse the bitstream to obtain a syntax element value for the current block, wherein the syntax element is encoded using a fixed length code; and a filtering block configured to apply adaptive loop filtering to the current block based on the value of the syntax element for the current block.

Согласно двенадцатому аспекту настоящего раскрытия предоставляется декодер, содержащий:According to the twelfth aspect of the present disclosure, a decoder is provided comprising:

блок энтропийного декодирования, сконфигурированный для получения битового потока, в котором по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, при этом элемент синтаксиса представляет собой индекс значения усечения адаптивного контурного фильтра (ALF) или параметр коэффициента ALF;an entropy decoding unit configured to obtain a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, wherein the syntax element is an adaptive loop filter (ALF) clipping value index or an ALF coefficient parameter;

причем блок энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока для получения значения элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита элемента синтаксиса; и блок фильтрации, сконфигурированный для применения адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.wherein the entropy decoding unit is further configured to parse the bit stream to obtain a syntax element value for the current block, wherein the syntax element value for the current block is obtained using only at least one bit of the syntax element; and a filtering block configured to apply adaptive loop filtering to the current block based on the value of the syntax element for the current block.

Согласно тринадцатому аспекту настоящего раскрытия предоставляется кодер, содержащий:According to the thirteenth aspect of the present disclosure, an encoder is provided comprising:

блок определения, сконфигурированный для определения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF); блок энтропийного кодирования, сконфигурированный для генерирования битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины.a determination block configured to determine the value of a syntax element for the current block, wherein the syntax element indicates a truncation index of the truncation value for the adaptive loop filter (ALF); an entropy encoding unit configured to generate a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the syntax element is encoded using a fixed length code.

Согласно четырнадцатому аспекту настоящего раскрытия предоставляется кодер, содержащий:According to the fourteenth aspect of the present disclosure, an encoder is provided comprising:

блок определения, сконфигурированный для определения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса является индексом значения усечения ALF или параметром коэффициента фильтра адаптивного контурного фильтра (ALF); блок энтропийного кодирования, сконфигурированный для генерирования битового потока на основе значения элемента синтаксиса, где по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом по меньшей мере один бит элемента синтаксиса получается с использованием только значения элемента синтаксиса для текущего блока.a determination block configured to determine the value of a syntax element for the current block, wherein the syntax element is an ALF truncation value index or an adaptive loop filter (ALF) filter coefficient parameter; an entropy encoding block configured to generate a bit stream based on a syntax element value, wherein at least one bit in the bit stream represents a syntax element, wherein the at least one syntax element bit is obtained using only the syntax element value for the current block.

Согласно пятнадцатому аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством декодирования, содержащий:According to the fifteenth aspect of the present disclosure, an encoding method implemented by a decoding apparatus is provided, comprising:

получение битового потока, где n битов в битовом потоке представляют элемент синтаксиса, указывающий индекс усечения значения усечения для адаптивного контурного фильтра (ALF), где n является целым числом, большим или равным 0;obtaining a bit stream, where n bits in the bit stream represent a syntax element indicating a truncation index of a truncation value for an adaptive loop filter (ALF), where n is an integer greater than or equal to 0;

синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса является двоичным представлением беззнакового целого числа с использованием n битов; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.parsing the bit stream to obtain the value of a syntax element for the current block, wherein the value of the syntax element is a binary representation of an unsigned integer using n bits; Apply adaptive contour filtering to the current block based on the value of the syntax element for the current block.

В возможной форме реализации способа согласно пятнадцатому аспекту как таковому элемент синтаксиса может быть элементом синтаксиса уровня слайса.In a possible implementation form of the method according to the fifteenth aspect, as such, the syntax element may be a slice-level syntax element.

Согласно шестнадцатому аспекту настоящего раскрытия, предоставляется способ кодировки, реализуемый устройством кодирования, содержащий:According to a sixteenth aspect of the present disclosure, an encoding method implemented by an encoding apparatus is provided, comprising:

определение значения элемента синтаксиса, указывающего индекс усечения значения усечения для адаптивного контурного фильтра (ALF), где n является целым числом, большим или равным 0; генерирование битового потока, содержащего n битов, на основе значения элемента синтаксиса, при этом двоичное представление целого числа без знака с использованием n битов является значением элемента синтаксиса.determining a value of a syntax element indicating a truncation index of the truncation value for the adaptive loop filter (ALF), where n is an integer greater than or equal to 0; generating a bitstream containing n bits based on the value of the syntax element, wherein the binary representation of an unsigned integer using n bits is the value of the syntax element.

В возможной форме реализации способа согласно шестнадцатому аспекту как таковому элемент синтаксиса может быть элементом синтаксиса уровня слайса.In a possible implementation form of the method according to the sixteenth aspect, as such, the syntax element may be a slice-level syntax element.

Согласно семнадцатому аспекту настоящего раскрытия предоставляется декодер, содержащий:According to the seventeenth aspect of the present disclosure, a decoder is provided comprising:

блок энтропийного декодирования, сконфигурированный для получения битового потока, где n битов в битовом потоке представляют элемент синтаксиса уровня слайса, указывающий индекс усечения значения усечения для адаптивного контурного фильтра (ALF), где n является целым числом, большим или равным 0; причем блок энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока для получения значения элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса является двоичным представлением целого числа без знака с использованием n битов; блок фильтрации, сконфигурированный для применения адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.an entropy decoding unit configured to obtain a bit stream, where n bits in the bit stream represent a slice-level syntax element indicating a truncation index of a truncation value for an adaptive loop filter (ALF), where n is an integer greater than or equal to 0; wherein the entropy decoding unit is further configured to parse the bit stream to obtain a syntax element value for the current block, wherein the syntax element value is a binary representation of an unsigned integer using n bits; a filtering block configured to apply adaptive loop filtering to the current block based on the value of the syntax element for the current block.

Согласно восемнадцатому аспекту настоящего раскрытия предоставляется кодер, содержащий:According to the eighteenth aspect of the present disclosure, an encoder is provided comprising:

блок определения, сконфигурированный для определения значения элемента синтаксиса уровня слайса, указывающего индекс усечения значения усечения для адаптивного контурного фильтра (ALF), где n является целым числом, большим или равным 0; блок энтропийного кодирования, сконфигурированный для генерирования битового потока, содержащего n битов, на основе значения элемента синтаксиса, при этом двоичное представление целого числа без знака с использованием n битов является значением элемента синтаксиса.a determiner configured to determine a value of a slice-level syntax element indicating a truncation index of a truncation value for an adaptive loop filter (ALF), where n is an integer greater than or equal to 0; an entropy encoding unit configured to generate a bit stream containing n bits based on the value of the syntax element, wherein a binary representation of an unsigned integer using n bits is the value of the syntax element.

Согласно девятнадцатому аспекту настоящего раскрытия предоставляется декодер, содержащий схему обработки для выполнения способа согласно пятнадцатому аспекту или любой его реализации.According to the nineteenth aspect of the present disclosure, a decoder is provided including processing circuitry for performing the method according to the fifteenth aspect or any implementation thereof.

Согласно двадцатому аспекту настоящего раскрытия предоставляется кодер, содержащий схему обработки для выполнения способа согласно шестнадцатому аспекту или любой его реализации.According to the twentieth aspect of the present disclosure, an encoder is provided comprising processing circuitry for executing the method of the sixteenth aspect or any implementation thereof.

Согласно двадцать первому аспекту настоящего раскрытия предоставляется компьютерный программный продукт, содержащий программный код для выполнения способа согласно пятнадцатому аспекту или шестнадцатому аспекту или любой его реализации.According to the twenty-first aspect of the present disclosure, there is provided a computer program product containing program code for executing the method of the fifteenth aspect or the sixteenth aspect or any implementation thereof.

Согласно двадцать второму аспекту настоящего раскрытия предоставляется энергонезависимый машиночитаемый носитель, несущий программный код, который, когда выполняется компьютерным устройством, заставляет компьютерное устройство выполнять способ по любому из пятнадцатого аспекта или шестнадцатого аспекта или любой его реализации.According to the twenty-second aspect of the present disclosure, there is provided a non-transitory computer-readable medium carrying program code that, when executed by a computer device, causes the computer device to perform the method of any of the fifteenth aspect or the sixteenth aspect or any implementation thereof.

Согласно двадцать третьему аспекту настоящего раскрытия предоставляется декодер, содержащий:According to the twenty-third aspect of the present disclosure, a decoder is provided comprising:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа согласно пятнадцатому аспекту или любой его реализации.one or more processors; and a non-transitory computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to execute the method of the fifteenth aspect or any implementation thereof.

Согласно двадцать четвертому аспекту настоящего раскрытия предоставляется кодер, содержащий:According to the twenty-fourth aspect of the present disclosure, there is provided an encoder comprising:

один или несколько процессоров; и энергонезависимый машиночитаемый носитель данных, соединенный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует кодер для выполнения способа согласно шестнадцатому аспекту или любой его реализации.one or more processors; and a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures an encoder to execute the method of the sixteenth aspect or any implementation thereof.

Согласно двадцать пятому аспекту настоящего раскрытия предоставляется энергонезависимый носитель данных, содержащий поток битов, содержащий n битов, при этом двоичное представление целого числа без знака с использованием n битов является значением элемента синтаксиса, а элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF), где n является целым числом, большим или равным 0.According to a twenty-fifth aspect of the present disclosure, a non-volatile storage medium is provided comprising a bitstream comprising n bits, wherein an unsigned binary integer representation using n bits is the value of a syntax element, and the syntax element indicates a truncation index of the truncation value for an adaptive loop filter (ALF) ), where n is an integer greater than or equal to 0.

Согласно двадцать шестому аспекту настоящего раскрытия предоставляется энергонезависимый носитель данных, содержащий поток битов, причем по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины и указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF).According to a twenty-sixth aspect of the present disclosure, a non-volatile storage medium is provided comprising a bit stream, wherein at least one bit in the bit stream represents a syntax element, wherein the syntax element is encoded using a fixed length code and indicates a truncation index of a truncation value for an adaptive loop filter (ALF). ).

В возможной форме реализации способа согласно двадцать шестому аспекту как таковому, в котором элемент синтаксиса сам определяет значение элемента синтаксиса.In a possible implementation form of the method according to the twenty-sixth aspect as such, in which the syntax element itself determines the meaning of the syntax element.

Согласно двадцать седьмому аспекту настоящего раскрытия предоставляется энергонезависимый носитель данных, содержащий поток битов, причем по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса представляет собой индекс значения усечения адаптивного контурного фильтра (ALF) или параметр коэффициента фильтра ALF, и по меньшей мере один бит элемента синтаксиса получается с использованием только значения элемента синтаксиса.According to a twenty-seventh aspect of the present disclosure, a non-volatile storage medium is provided comprising a bitstream, wherein at least one bit in the bitstream represents a syntax element, wherein the syntax element is an adaptive loop filter (ALF) clipping value index or an ALF filter coefficient parameter, and at least one bit of the syntax element is obtained using only the value of the syntax element.

Согласно двадцать восьмому аспекту настоящего раскрытия предоставляется энергонезависимый носитель данных, содержащий поток битов, закодированный способом любого аспекта или любой его реализации.According to the twenty-eighth aspect of the present disclosure, a non-volatile storage medium is provided containing a bitstream encoded in a manner of any aspect or any implementation thereof.

Подробности одного или более вариантов осуществления изложены на прилагаемых чертежах и в нижеследующем описании. Другие особенности, цели и преимущества будут очевидны из описания, чертежей и формулы изобретения.Details of one or more embodiments are set forth in the accompanying drawings and in the following description. Other features, objects and advantages will be apparent from the description, drawings and claims.

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

В следующих вариантах осуществления изобретения описаны более подробно со ссылкой на сопровождающие фигуры и чертежи, на которых:In the following embodiments, the inventions are described in more detail with reference to the accompanying figures and drawings, in which:

Фиг.1A является блок-схемой, показывающей пример системы видеокодировки, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1A is a block diagram showing an example of a video encoding system configured to implement embodiments of the invention; FIG.

Фиг.Фиг.1B является блок-схемой, показывающей другой пример системы видеокодировки, выполненной с возможностью реализации вариантов осуществления изобретения;FIG. 1B is a block diagram showing another example of a video encoding system configured to implement embodiments of the invention; FIG.

Фиг.2 является блок-схемой, показывающей пример видеокодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 2 is a block diagram showing an example of a video encoder configured to implement embodiments of the invention; FIG.

Фиг.3 является блок-схемой, показывающей пример структуры видеодекодера, выполненного с возможностью реализации вариантов осуществления изобретения;FIG. 3 is a block diagram showing an example of a structure of a video decoder configured to implement embodiments of the invention; FIG.

Фиг.4 является блок-схемой, иллюстрирующей пример аппаратуры кодирования или аппаратуры декодирования;FIG. 4 is a block diagram illustrating an example of encoding equipment or decoding equipment;

Фиг.5 является блок-схемой, иллюстрирующей другой пример аппаратуры кодирования или аппаратуры декодирования;FIG. 5 is a block diagram illustrating another example of encoding equipment or decoding equipment;

Фиг.6 показаны формы фильтра ALF, ромб цветности 5×5, ромб яркости 7×7;Figure 6 shows the shapes of the ALF filter, chromaticity diamond 5×5, luminance diamond 7×7;

Фиг.7 иллюстрирует классификацию субдискретизированных блоков ALF;FIG. 7 illustrates the classification of subsampled ALF blocks;

Фиг.8 иллюстрирует сигнализацию параметров усечения яркости и цветности VTM-5.0 ALF;FIG. 8 illustrates VTM-5.0 ALF luminance and chrominance truncation parameter signaling;

Фиг.9 иллюстрирует модифицированную сигнализацию параметров усечения яркости и цветности VTM-5.0 ALF, при этом параметры усечения передаются с использованием кода фиксированной длины из 2 битов;FIG. 9 illustrates modified VTM-5.0 ALF luma and chrominance truncation parameter signaling where the truncation parameters are transmitted using a 2-bit fixed length code; FIG.

Фиг.10 - блок-схема, иллюстрирующая способ согласно первому аспекту настоящего раскрытия;FIG. 10 is a flowchart illustrating a method according to the first aspect of the present disclosure; FIG.

Фиг.11 - блок-схема, иллюстрирующая способ согласно второму аспекту настоящего раскрытия;FIG. 11 is a flow diagram illustrating a method according to the second aspect of the present disclosure; FIG.

Фиг.12 - блок-схема, иллюстрирующая способ согласно третьему аспекту настоящего раскрытия;FIG. 12 is a flowchart illustrating a method according to the third aspect of the present disclosure; FIG.

Фиг.13 - блок-схема, иллюстрирующая способ согласно четвертому аспекту настоящего раскрытия;FIG. 13 is a flowchart illustrating a method according to the fourth aspect of the present disclosure; FIG.

Фиг.14 - блок-схема, иллюстрирующая декодер согласно пятому аспекту настоящего раскрытия;FIG. 14 is a block diagram illustrating a decoder according to a fifth aspect of the present disclosure; FIG.

Фиг.15 - блок-схема, иллюстрирующая кодер согласно шестому аспекту настоящего раскрытия;FIG. 15 is a block diagram illustrating an encoder according to a sixth aspect of the present disclosure; FIG.

Фиг.16 - блок-схема, иллюстрирующая декодер согласно девятому аспекту настоящего раскрытия;FIG. 16 is a block diagram illustrating a decoder according to a ninth aspect of the present disclosure; FIG.

Фиг.17 - блок-схема, иллюстрирующая кодер согласно десятому аспекту настоящего раскрытия;FIG. 17 is a block diagram illustrating an encoder according to a tenth aspect of the present disclosure; FIG.

Фиг.18 - блок-схема, иллюстрирующая декодер согласно одиннадцатому аспекту настоящего раскрытия;FIG. 18 is a block diagram illustrating a decoder according to an eleventh aspect of the present disclosure; FIG.

Фиг.19 - блок-схема, иллюстрирующая декодер согласно двенадцатому аспекту настоящего раскрытия;FIG. 19 is a block diagram illustrating a decoder according to the twelfth aspect of the present disclosure; FIG.

Фиг.20 - блок-схема, иллюстрирующая кодер согласно тринадцатому аспекту настоящего раскрытия;FIG. 20 is a block diagram illustrating an encoder according to the thirteenth aspect of the present disclosure; FIG.

Фиг.21 - блок-схема, иллюстрирующая кодер согласно четырнадцатому аспекту настоящего раскрытия;FIG. 21 is a block diagram illustrating an encoder according to the fourteenth aspect of the present disclosure; FIG.

Фиг.22 - это блок-схема, показывающая примерную структуру системы 3100 доставки контента, которая реализует услугу доставки контента; иFIG. 22 is a block diagram showing an exemplary structure of a content delivery system 3100 that implements a content delivery service; FIG. And

Фиг.23 является блок-схемой, показывающей структуру примерного терминального устройства.FIG. 23 is a block diagram showing the structure of an exemplary terminal device.

Следующие идентичные ссылочные позиции относятся к идентичным или, по меньшей мере, функционально эквивалентным признакам, если явно не указано иное.The following identical reference numerals refer to identical or at least functionally equivalent features unless expressly indicated otherwise.

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

В нижеследующем описании делается ссылка на сопроводительные чертежи, которые составляют часть данного раскрытия и которые показывают, в качестве иллюстрации, конкретные аспекты вариантов осуществления изобретения или конкретные аспекты, в которых варианты осуществления настоящего изобретения могут быть использованы. Понятно, что варианты осуществления данного изобретения могут быть использованы в других аспектах и содержат структурные или логические изменения, не показанные на фигурах. Поэтому нижеследующее подробное описание не следует воспринимать в ограничивающем смысле, и объем настоящего изобретения определяется прилагаемой формулой изобретения.In the following description, reference is made to the accompanying drawings, which form a part of this disclosure and which show, by way of illustration, specific aspects of embodiments of the invention or specific aspects in which embodiments of the present invention may be used. It is understood that embodiments of the present invention may be used in other aspects and contain structural or logical changes not shown in the figures. Therefore, the following detailed description should not be taken in a limiting sense, and the scope of the present invention is defined by the appended claims.

Например, понятно, что раскрытие, связанное с описанным способом, также может быть справедливо для соответствующего устройства или системы, выполненных с возможностью выполнения способа, и наоборот. Например, если описан один или множество конкретных этапов способа, соответствующее устройство может включать в себя один или множество блоков, например, функциональных блоков, для выполнения описанного одного или множества этапов способа (например, один блок, выполняющий один или множество этапов, или множество блоков, каждый из которых выполняет один или несколько из множества этапов), даже если такой один или несколько блоков явно не описаны или не проиллюстрированы на чертежах. С другой стороны, например, если конкретное устройство описывается на основе одного или множества блоков, например функциональных блоков, соответствующий способ может включать в себя один этап для выполнения функциональных возможностей одного или множества блоков (например, один этап, выполняющий функциональные возможности одного или множества блоков, или множество этапов, каждый из которых выполняет функциональные возможности одного или нескольких из множества блоков), даже если такой один или множество этапов явно не описаны или не проиллюстрированы на фигурах. Кроме того, понятно, что признаки различных примерных вариантов осуществления и/или аспектов, описанных в данном документе, могут быть объединены друг с другом, если специально не указано иное.For example, it will be understood that the disclosure associated with the described method may also apply to a corresponding device or system configured to perform the method, and vice versa. For example, if one or a plurality of specific method steps are described, the corresponding apparatus may include one or a plurality of blocks, such as functional blocks, for performing the described one or multiple method steps (e.g., one block performing one or a plurality of steps, or a plurality of blocks , each of which performs one or more of a plurality of steps), even if such one or more units are not expressly described or illustrated in the drawings. On the other hand, for example, if a particular device is described in terms of one or a plurality of blocks, such as functional blocks, the corresponding method may include one step for performing the functionality of the one or multiple blocks (for example, one step performing the functionality of the one or multiple blocks , or a plurality of steps, each of which performs the functionality of one or more of a plurality of blocks), even if such one or multiple steps are not explicitly described or illustrated in the figures. It is further understood that features of various exemplary embodiments and/or aspects described herein may be combined with each other unless specifically stated otherwise.

Видеокодировка обычно относится к обработке последовательности картинок, которые образуют видео или видеопоследовательность. Вместо термина «картинка» термины «кадр» или «изображение» могут использоваться как синонимы в области видеокодировки. Видеокодировка (или кодировка (coding) в целом) содержит две части: видеокодирование (video encoding) и видеодекодирование. Видеокодирование выполняется на стороне источника, обычно содержит обработку (например, путем сжатия) исходных видеокартинок для уменьшения объема данных, необходимых для представления видеокартинок (для более эффективного хранения и/или передачи). Видеодекодирование выполняется на стороне получателя (адресата, места назначения) и обычно содержит обратную обработку по сравнению с кодером для восстановления видеокартинок. Варианты осуществления, относящиеся к «кодировке» видеокартинок (или картинок в целом), должны пониматься как относящиеся к «кодированию» или «декодированию» видекартинок или соответствующих видеопоследовательностей. Комбинация кодирующей части и декодирующей части также называется CODEC (кодировка и декодирование).Video encoding generally refers to the processing of the sequence of pictures that form a video or video sequence. Instead of the term "picture", the terms "frame" or "image" can be used interchangeably in the field of video encoding. Video encoding (or encoding in general) contains two parts: video encoding and video decoding. Video encoding is performed at the source side, typically involving processing (eg, by compression) of the source video images to reduce the amount of data required to represent the video images (for more efficient storage and/or transmission). Video decoding is performed on the receiver (destination) side and usually contains reverse processing compared to the encoder for reconstructing video images. Embodiments relating to "encoding" of video pictures (or pictures in general) are to be understood as referring to "encoding" or "decoding" video pictures or corresponding video sequences. The combination of an encoding part and a decoding part is also called CODEC (encoding and decoding).

В случае видеокодировки без потерь исходные видеокартинки могут быть восстановлены, т.е. восстановленные видеокартинки имеют такое же качество, что и исходные видеокартинки (при условии отсутствия потерь передачи или других потерь данных во время хранения или передачи). В случае видеокодировки с потерями выполняется дополнительное сжатие, например, путем квантования, чтобы уменьшить количество данных, представляющих видеокартинки, которые не могут быть полностью восстановлены в декодере, т.е. качество восстановленных видеокартинок ниже или хуже по сравнению с качеством исходных видеокартинок.In the case of lossless video encoding, the original video images can be restored, i.e. The restored video images are of the same quality as the original video images (provided there are no transmission losses or other data loss during storage or transmission). In the case of lossy video encoding, additional compression is performed, for example by quantization, to reduce the amount of data representing video images that cannot be fully reconstructed in the decoder, i.e. the quality of the restored video images is lower or worse compared to the quality of the original video images.

Несколько стандартов видеокодировки принадлежат к группе «гибридных видеокодеков с потерями» (т.е. сочетают пространственное и временное предсказание в области выборки и кодировку с 2D преобразованием для применения квантования в области преобразования). Каждая картинка видеопоследовательности обычно разделяется на набор неперекрывающихся блоков, и кодировка обычно выполняется на уровне блоков. Другими словами, в кодере видео обычно обрабатывается, то есть кодируется на уровне блока (видеоблока), например, с использованием пространственного (внутри картинки) предсказания и/или временного (между картинками) предсказания для генерирования блока предсказания, вычитание блока предсказания из текущего блока (блока, который в настоящее время обрабатывается/должен быть обработан), чтобы получить остаточный блок, преобразование остаточного блока и квантование остаточного блока в области преобразования для уменьшения объема данных, которые должны быть переданы (сжатие), тогда как в декодере обратная обработка по сравнению с кодером применяется к кодированному или сжатому блоку, чтобы восстановить текущий блок для представления. Кроме того, кодер дублирует цикл обработки декодера, так что оба будут генерировать идентичные предсказания (например, внутреннее и внешнее предсказание) и/или реконструкцию для обработки, то есть кодировку, последующих блоков.Several video encoding standards belong to the group of "hybrid lossy video codecs" (i.e., they combine spatial and temporal prediction in the sample domain and 2D transform encoding to apply quantization in the transform domain). Each picture of a video sequence is usually divided into a set of non-overlapping blocks, and encoding is usually performed at the block level. In other words, in an encoder, video is typically processed, that is, encoded at the block (video block) level, for example, using spatial (within a picture) prediction and/or temporal (between pictures) prediction to generate a prediction block, subtracting the prediction block from the current block ( block that is currently being processed/to be processed) to obtain a residual block, transforming the residual block and quantizing the residual block in the transform domain to reduce the amount of data that has to be transmitted (compression), whereas in the decoder the reverse processing is compared to applied by the encoder to the encoded or compressed block to recover the current block for presentation. In addition, the encoder duplicates the decoder's processing loop so that both will generate identical predictions (eg, intra and outer prediction) and/or reconstruction for processing, ie, encoding, of subsequent blocks.

В нижеследующих вариантах осуществления системы 10 видеокодировки, видеокодер 20 и видеодекодер 30 описаны на основе Фиг. с 1 по 3.In the following embodiments, video encoding systems 10, video encoder 20, and video decoder 30 are described based on FIGS. from 1 to 3.

Фиг.1A является схематической блок-схемой, иллюстрирующей примерную систему 10 кодировки, например систему 10 видеокодировки (или, кратко, систему 10 кодировки), которая может использовать методы этой настоящей заявки. Видеокодер 20 (или, кратко, кодер 20) и видеодекодер 30 (или, кратко, декодер 30) системы 10 видеокодировки представляют примеры устройств, которые могут быть выполнены с возможностью выполнения методов в соответствии с различными примерами, описанными в настоящей заявке.FIG. 1A is a schematic block diagram illustrating an exemplary encoding system 10, such as video encoding system 10 (or encoding system 10 for short), which may use the techniques of this present application. Video encoder 20 (or encoder 20 for short) and video decoder 30 (or decoder 30 for short) of video encoding system 10 are examples of devices that may be configured to perform methods in accordance with various examples described herein.

Как показано на фиг.1A, система 10 кодировки содержит устройство-источник 12, сконфигурированное для предоставления данных 21 закодированной картинки, например, устройству-получателю 14 для декодирования данных 13 кодированной картинки.As shown in FIG. 1A, the encoding system 10 includes a source device 12 configured to provide encoded picture data 21, for example, to a destination device 14 for decoding the encoded picture data 13.

Устройство-источник 12 содержит кодер 20 и может дополнительно, т.е. необязательно, содержать источник 16 картинки, препроцессор (или блок предварительной обработки) 18, например, препроцессор 18 картинки, и интерфейс связи или блок 22 связи.The source device 12 contains an encoder 20 and can additionally, i.e. optionally comprising a picture source 16, a preprocessor (or pre-processing unit) 18, such as a picture preprocessor 18, and a communications interface or communications unit 22.

Источник 16 картинки может содержать или быть любым типом устройства захвата картинки, например, камерой для захвата картинки реального мира, и/или устройством генерирования картинки любого типа, например процессором компьютерной графики для генерирования компьютерной анимированной картинки или любое другое устройство для получения и/или предоставления картинки реального мира, картинки, сгенерированной компьютером (например, содержимого экрана, картинки виртуальной реальности (VR)) и/или любой их комбинации (например, картинки дополненной реальности (AR)). Источником картинки может быть любой тип памяти или хранилища, в котором хранятся любые из вышеупомянутых картинок.The picture source 16 may contain or be any type of picture capturing device, such as a camera for capturing a real world picture, and/or any type of picture generating device, such as a computer graphics processor for generating a computer animated picture, or any other device for receiving and/or providing real-world pictures, computer-generated pictures (eg, screen content, virtual reality (VR) pictures), and/or any combination thereof (eg, augmented reality (AR) pictures). The source of the picture can be any type of memory or storage that stores any of the above pictures.

В отличие от препроцессора 18 и обработки, выполняемой посредством блока 18 предварительной обработки, картинка или данные 17 картинки также могут именоваться необработанной (raw) картинкой или необработанными данными 17 картинки.In contrast to the preprocessor 18 and the processing performed by the preprocessing unit 18, the picture or picture data 17 may also be referred to as a raw picture or raw picture data 17.

Препроцессор 18 выполнен с возможностью приема (необработанных) данных 17 картинки и выполнения предварительной обработки в отношении этих данных 17 картинки для получения предварительно обработанной картинки 19 или предварительно обработанных данных 19 картинки. Предварительная обработка, выполняемая препроцессором 18, может, например, включать в себя обрезку, преобразование цветового формата (например, из RGB в YCbCr), цветокоррекцию или устранение шумов. Можно понять, что модуль 18 предварительной обработки может быть необязательным компонентом.The preprocessor 18 is configured to receive (raw) picture data 17 and perform preprocessing on the picture data 17 to produce a preprocessed picture 19 or preprocessed picture data 19. Preprocessing performed by preprocessor 18 may, for example, include cropping, color format conversion (eg, RGB to YCbCr), color correction, or denoising. It can be understood that the pre-processing module 18 may be an optional component.

Видеокодер 20 выполнен с возможностью приема предварительно обработанных данных 19 картинки и предоставления данных 21 закодированной картинки (дополнительные подробности будут описаны ниже, например, на основе Фиг.2).Video encoder 20 is configured to receive pre-processed picture data 19 and provide encoded picture data 21 (further details will be described below, for example based on FIG. 2).

Интерфейс связи 22 устройства-источника 12 может быть сконфигурирован для приема данных 21 закодированной картинки и передачи данных 21 закодированной картинки (или любой их дополнительной обработанной версии) по каналу 13 связи на другое устройство, например, на устройство-получатель 14 или любое другое устройство, для хранения или прямого восстановления (реконструкции).The communication interface 22 of the source device 12 may be configured to receive the encoded picture data 21 and transmit the encoded picture data 21 (or any additional processed version thereof) over the communication channel 13 to another device, for example, to the destination device 14 or any other device, for storage or direct restoration (reconstruction).

Устройство-получатель 14 содержит декодер 30 (например, видеодекодер 30) и может дополнительно, т.е. необязательно, содержать интерфейс связи или блок 28 связи, постпроцессор 32 (или блок 32 постобработки) и устройство отображения 34.The recipient device 14 includes a decoder 30 (eg, video decoder 30) and may additionally, i.e. optionally comprising a communication interface or communication unit 28, a post processor 32 (or post processing unit 32) and a display device 34.

Интерфейс 28 связи устройства-получателя 14 сконфигурирован для приема данных 21 закодированной картинки (или любой их дополнительной обработанной версии), например, непосредственно от устройства-источника 12 или из любого другого источника, например, запоминающего устройства, например, устройства хранения данных закодированной картинки и предоставить данные 21 закодированной картинки в декодер 30.The communication interface 28 of the destination device 14 is configured to receive encoded picture data 21 (or any additional processed version thereof), for example, directly from the source device 12 or from any other source, such as a storage device, such as an encoded picture data storage device and provide the encoded picture data 21 to the decoder 30.

Интерфейс 22 связи и интерфейс 28 связи могут быть сконфигурированы для передачи или приема данных 21 закодированной картинки или закодированных данных 13 через прямую линию связи между устройством-источником 12 и устройством-получателем 14, например, прямое проводное или беспроводное соединение, или через сеть любого типа, например, проводную или беспроводную сеть или любую их комбинацию, или любую частную и общедоступную сеть, или любую их комбинацию.The communication interface 22 and the communication interface 28 may be configured to transmit or receive encoded picture data 21 or encoded data 13 through a direct communication link between the source device 12 and the destination device 14, such as a direct wired or wireless connection, or through any type of network , such as a wired or wireless network or any combination thereof, or any private and public network, or any combination thereof.

Интерфейс 22 связи может быть, например, сконфигурирован для упаковки данных 21 закодированной картинки в соответствующий формат, например, в пакеты, и/или обработки данных закодированного изображения с использованием любого типа кодирования передачи или обработки для передачи по каналу связи или связи. сеть.The communications interface 22 may, for example, be configured to package the encoded picture data 21 into an appropriate format, such as packets, and/or process the encoded picture data using any type of transmission encoding or processing for transmission over a communications or communication channel. net.

Интерфейс 28 связи, являющийся аналогом интерфейса 22 связи, может быть, например, выполнен с возможностью приема переданных данных и обработки данных передачи с использованием любого вида соответствующего декодирования или обработки передачи и/или распаковки для получения данных 21 закодированной картинки.The communication interface 28, which is analogous to the communication interface 22, may, for example, be configured to receive transmitted data and process the transmission data using any kind of appropriate decoding or transmission processing and/or decompression to obtain encoded picture data 21.

И интерфейс 22 связи, и интерфейс 28 связи могут быть сконфигурированы как однонаправленные интерфейсы связи, как показано стрелкой для канала 13 связи на фиг.1A, указывающей от устройства-источника 12 к устройству-получателю 14, или двунаправленные интерфейсы связи, и могут быть сконфигурированы, например, для отправки и приема сообщений, например, для установки соединения, для подтверждения и обмена любой другой информацией, относящейся к каналу связи и/или передаче данных, например, к передаче данных закодированной картинки.Both communication interface 22 and communication interface 28 can be configured as unidirectional communication interfaces, as shown by the arrow for communication channel 13 in FIG. 1A pointing from source device 12 to destination device 14, or bidirectional communication interfaces, and can be configured , for example, for sending and receiving messages, for example, for establishing a connection, for confirming and exchanging any other information related to the communication channel and/or data transfer, for example, the transfer of encoded picture data.

Декодер 30 выполнен с возможностью приема данных 21 закодированной картинки и предоставления данных 31 декодированной картинки или декодированной картинки 31 (дополнительные подробности будут описаны ниже, например, на основе Фиг.3 или Фиг.5.The decoder 30 is configured to receive encoded picture data 21 and provide decoded picture data 31 or decoded picture 31 (further details will be described below, for example, based on FIG. 3 or FIG. 5.

Постпроцессор 32 устройства-получателя 14 сконфигурирован для пост-обработки данных 31 декодированной картинки (также называемых данными восстановленной картинки), например, декодированной картинки 31, для получения данных 33 постобработанной картинки, например, постобработанной картинки 33. Постобработка, выполняемая блоком 32 постобработки, может содержать, например, преобразование цветового формата (например, из YCbCr в RGB), цветокоррекцию, обрезку или повторную выборку, или любую другую обработку, например, для подготовки данных 31 декодированной картинки для отображения, например, устройством 34 отображения.The post-processor 32 of the recipient device 14 is configured to post-process decoded picture data 31 (also referred to as reconstructed picture data), such as decoded picture 31, to obtain post-processed picture data 33, such as post-processed picture 33. The post-processing performed by post-processing unit 32 may comprise, for example, color format conversion (eg, from YCbCr to RGB), color correction, cropping or resampling, or any other processing, for example, to prepare decoded picture data 31 for display, for example, by display device 34.

Устройство 34 отображения устройства-получателя 14 выполнено с возможностью приема пост-обработанных данных 33 картинки для отображения картинки, например, пользователю или зрителю. Устройство 34 отображения может быть или содержать любой вид дисплея для представления восстановленной картинки, например интегрированный или внешний дисплей или монитор. Дисплеи могут, например, содержать жидкокристаллические дисплеи (LCD), дисплеи на органических светодиодах (OLED), плазменные дисплеи, проекторы, микро-светодиодные дисплеи, жидкие кристаллы на кремнии (LCoS), цифровой световой процессор (DLP) или любой вид другой дисплей.The display device 34 of the recipient device 14 is configured to receive post-processed picture data 33 for displaying the picture, for example, to a user or viewer. The display device 34 may be or include any kind of display for presenting the reconstructed picture, such as an integrated or external display or monitor. The displays may, for example, comprise liquid crystal displays (LCDs), organic light emitting diodes (OLEDs), plasma displays, projectors, micro-LED displays, liquid crystal on silicon (LCoS), digital light processor (DLP), or any other type of display.

Хотя Фиг.1A иллюстрирует устройство-источник 12 и устройство-получатель 14 как отдельные устройства, варианты осуществления устройств также могут содержать оба или обе функциональные возможности, устройство-источник 12 или соответствующую функциональную возможность и устройство-получатель 14 или соответствующую функциональную возможность. В таких вариантах осуществления устройство-источник 12 или соответствующая функциональная возможность и устройство-получатель 14 или соответствующая функциональная возможность могут быть реализованы с использованием одного и того же аппаратного и/или программного обеспечения или с помощью отдельного аппаратного и/или программного обеспечения или любой их комбинации.Although FIG. 1A illustrates source device 12 and destination device 14 as separate devices, embodiments of the devices may also include both or both functionality, source device 12 or corresponding functionality and destination device 14 or corresponding functionality. In such embodiments, source device 12 or related functionality and destination device 14 or related functionality may be implemented using the same hardware and/or software, or using separate hardware and/or software, or any combination thereof. .

Как будет очевидно для специалиста на основании описания, наличие и (точное) разделение функциональных возможностей различных блоков или функциональных возможностей в устройстве-источнике 12 и/или устройстве-получателе 14, как показано на Фиг.1A, может варьироваться в зависимости от фактического устройства и применения.As will be apparent to one skilled in the art from the description, the presence and (precise) separation of functionality of various blocks or functionality in source device 12 and/or destination device 14, as shown in FIG. 1A, may vary depending on the actual device and applications.

Кодер 20 (например, видеокодер 20) или декодер 30 (например, видеодекодер 30) или и кодер 20, и декодер 30 могут быть реализованы с помощью схемы обработки, показанной на фиг.1B, такой как один или несколько микропроцессоров, цифровые сигнальные процессоры (DSP), специализированные интегральные схемы (ASIC), программируемые вентильные матрицы (FPGA), дискретная логика, аппаратное обеспечение, выделенная видеокодировка или любые их комбинации. Кодер 20 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении кодера 20 с Фиг.2 и/или любой другой системы кодера или подсистемы, описанной в данном документе. Декодер 30 может быть реализован через схему 46 обработки для воплощения различных модулей, как обсуждалось в отношении декодера 30 с Фиг.3 и/или любой другой системы декодера или подсистемы, описанной в данном документе. Схема обработки может быть выполнена с возможностью выполнения различных операций, которые будут описаны ниже. Как показано на Фиг.5, если методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем долговременном машиночитаемом носителе данных и может выполнять инструкции в аппаратных средствах, используя один или более процессоров для выполнения методик этого раскрытия. Любой из видеокодера 20 и видеодекодера 30 может быть интегрирован как часть объединенного кодера/декодера (CODEC) в одном устройстве, например, как показано на Фиг.1B.Encoder 20 (eg, video encoder 20) or decoder 30 (eg, video decoder 30) or both encoder 20 and decoder 30 may be implemented by the processing circuitry shown in FIG. 1B, such as one or more microprocessors, digital signal processors ( DSP), application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), discrete logic, hardware, dedicated video encoding, or any combination thereof. Encoder 20 may be implemented through processing circuitry 46 to implement various modules, as discussed with respect to encoder 20 of FIG. 2 and/or any other encoder system or subsystem described herein. Decoder 30 may be implemented through processing circuit 46 to implement various modules, as discussed with respect to decoder 30 of FIG. 3 and/or any other decoder system or subsystem described herein. The processing circuit may be configured to perform various operations, which will be described below. As shown in FIG. 5, if the techniques are partially implemented in software, the apparatus may store instructions for the software on a suitable non-transitory computer readable storage medium and may execute the instructions in hardware using one or more processors to execute the techniques of this disclosure. Any one of video encoder 20 and video decoder 30 can be integrated as part of a combined encoder/decoder (CODEC) in one device, for example, as shown in Fig. 1B.

Устройство-источник 12 и устройство-получатель 14 могут содержать любое из широкого диапазона устройств, в том числе любые виды портативных или стационарных устройств, например, ноутбук или портативные компьютеры, мобильные телефоны, смартфоны, планшеты или планшетные компьютеры, камеры, настольные компьютеры, телеприставки, телевизоры, устройства отображения, цифровые медиаплееры, игровые приставки, устройства потокового видео (например, серверы служб контента или серверы доставки контента), устройство приемника вещания, устройство передатчика вещания и т.п.и могут содержать любой вид операционной системы. В некоторых случаях устройство-источник 12 и устройство-получатель 14 могут быть оборудованы для беспроводной связи. Таким образом, устройство-источник 12 и устройство-получатель 14 могут быть устройствами беспроводной связи.Source device 12 and destination device 14 may comprise any of a wide range of devices, including any type of portable or desktop devices, such as laptop or laptop computers, mobile phones, smartphones, tablets or tablet computers, cameras, desktop computers, set-top boxes , televisions, display devices, digital media players, game consoles, video streaming devices (eg, content service servers or content delivery servers), broadcast receiver device, broadcast transmitter device, etc., and may contain any kind of operating system. In some cases, source device 12 and destination device 14 may be equipped for wireless communication. Thus, source device 12 and destination device 14 may be wireless communication devices.

В некоторых случаях система 10 видеокодировки, проиллюстрированная на Фиг.1A, является лишь примером, а методы настоящей заявки могут применяться к настройкам видеокодировки (такого как видеокодирование или видеодекодирование), которые не обязательно включают в себя передачу каких-либо данных между устройствами кодирования и декодирования. В других примерах данные извлекаются из локальной памяти, передаются в потоковом режиме по сети или подобное. Устройство видеокодирования может кодировать и сохранять данные в память, и/или устройство видеодекодирования может извлекать и декодировать данные из памяти. В некоторых примерах кодирование и декодирование выполняется устройствами, которые связь друг с другом не осуществляют, а просто кодируют данные в память и/или извлекают и декодируют данные из памяти.In some cases, the video encoding system 10 illustrated in FIG. 1A is merely an example, and the methods of the present application may be applied to video encoding settings (such as video encoding or video decoding) that do not necessarily involve transmitting any data between encoding and decoding devices. . In other examples, data is retrieved from local memory, streamed over a network, or the like. A video encoding apparatus may encode and store data into memory, and/or a video decoding apparatus may retrieve and decode data from memory. In some examples, encoding and decoding are performed by devices that do not communicate with each other, but simply encode data into memory and/or retrieve and decode data from memory.

Для удобства описания здесь описаны варианты осуществления данного изобретения, например, со ссылкой на высокоэффективное видеокодирование (HEVC) или на эталонное программное обеспечение универсального видеокодирования (VVC), стандарт видеокодировки следующего поколения, разрабатываемый объединенной группой сотрудничества по видеокодировке (JCT-VC) экспертной группы по видеокодировке ITU-T (VCEG) и экспертной группы по движущимся картинкам ISO/IEC (MPEG). Обычный специалист в данной области техники поймет, что варианты осуществления данного изобретения не ограничиваются HEVC или VVC.For ease of description, embodiments of the present invention are described herein, for example, with reference to High Efficiency Video Coding (HEVC) or Versatile Video Coding (VVC) reference software, a next-generation video encoding standard being developed by the Joint Collaboration on Video Coding (JCT-VC) Expert Group. ITU-T video encoding (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG). One of ordinary skill in the art will understand that embodiments of the present invention are not limited to HEVC or VVC.

Кодер и способ кодированияEncoder and encoding method

Фиг.2 показывает схематичное блочное представление примерного видеокодера 20, который выполнен с возможностью реализации методов настоящей заявки. В примере на Фиг.2 видеокодер 20 содержит ввод 201 (или входной интерфейс 201), блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 210 обратного квантования и блок 212 обработки обратного преобразования, блок 214 восстановления, блок 220 контурного фильтра, буфер 230 (DPB) декодированных картинок, блок 260 выбора режима, блок 270 энтропийного кодирования и вывод 272 (или выходной интерфейс 272). Блок 260 выбора режима может включать в себя блок 244 внешнего предсказания, блок 254 внутреннего предсказания и блок 262 разделения. Блок 244 внешнего предсказания может включать в себя блок оценки движения и блок компенсации движения (не показаны). Видеокодер 20, показанный на фиг.2, также может называться гибридным видеокодером или видеокодером согласно гибридному видеокодеку.FIG. 2 shows a schematic block diagram of an exemplary video encoder 20 that is configured to implement the methods of the present application. In the example of FIG. 2, video encoder 20 includes an input 201 (or input interface 201), a remainder calculation block 204, a transform processing block 206, a quantization block 208, an inverse quantization block 210 and an inverse transform processing block 212, a reconstruction block 214, a contour block 220 filter, decoded picture buffer (DPB) 230, mode selection unit 260, entropy encoding unit 270, and output 272 (or output interface 272). The mode selection block 260 may include an inter prediction block 244, an intra prediction block 254, and a separating block 262. The inter prediction unit 244 may include a motion estimation unit and a motion compensation unit (not shown). The video encoder 20 shown in FIG. 2 may also be called a hybrid video encoder or a video encoder according to a hybrid video codec.

Блок 204 вычисления остатка, блок 206 обработки преобразования, блок 208 квантования, блок 260 выбора режима могут относится к формированию прямого тракта сигнала кодера 20, тогда как блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, буфер 216, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 244 внешнего предсказания и блок 254 внутреннего предсказания могут относится к формированию обратного тракта сигнала видеокодера 20, при этом обратный тракт сигнала видеокодера 20 соответствует тракту сигнала декодера (см. видеодекодер 30 на Фиг.3). Блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер декодированных картинок (DPB) 230, блок 244 внешнего предсказания и блок 254 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20.The remainder calculation block 204, transform processing block 206, quantization block 208, mode selection block 260 may relate to the formation of the forward signal path of the encoder 20, while the inverse quantization block 210, inverse transform processing block 212, restoration block 214, buffer 216, loop filter 220, decoded picture buffer (DPB) 230, inter prediction block 244, and intra prediction block 254 may relate to generating a return signal path of the video encoder 20, wherein the return signal path of the video encoder 20 corresponds to the signal path of the decoder (see video decoder 30 in FIG. 3) . The inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter prediction unit 244, and the intra prediction unit 254 are also relevant to forming the “on-chip decoder” of the video encoder 20.

Картинки и разделение картинок (картинки и блоки)Pictures and picture division (pictures and blocks)

Кодер 20 может быть сконфигурирован для приема, например, через вход 201 картинки 17 (или данных 17 картинки), например картинки последовательности картинок, образующих видео или видеопоследовательность. Принятая картинка или данные картинки также могут представлять собой предварительно обработанную картинку 19 (или предварительно обработанные данные 19 картинки). Для простоты нижеследующее описание ссылается на картинку 17. Картинка 17 также может называться текущей картинкой или картинкой, которая должна быть кодирована (в частности, при видеокодировке, чтобы отличать текущую картинку от других картинок, например, ранее кодированных и/или декодированных картинок той же видеопоследовательности, то есть видеопоследовательности которая также содержит текущую картинку).Encoder 20 may be configured to receive, for example, through input 201, a picture 17 (or picture data 17), such as a picture of a sequence of pictures forming a video or video sequence. The received picture or picture data may also be a preprocessed picture 19 (or preprocessed picture data 19). For simplicity, the following description refers to picture 17. Picture 17 may also be referred to as the current picture or the picture that is to be encoded (particularly in video encoding, to distinguish the current picture from other pictures, such as previously encoded and/or decoded pictures of the same video sequence , that is, a video sequence that also contains the current picture).

(Цифровая) картинка является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности. Выборка в массиве также может упоминаться как пиксель (сокращенная форма элемента картинки) или пэл (pel). Число выборок в горизонтальном и вертикальном направлении (или оси) массива или картинки определяет размер и/или разрешение картинки. Для представления цвета обычно используются три цветовые компоненты, т.е. картинка может быть представлена или включать в себя три массива выборок. В формате RBG или цветовом пространстве картинка содержит соответствующий массив красных, зеленых или синих выборок. Однако при видеокодировке каждый пиксель обычно представлен в формате яркости и цветности или цветовом пространстве, например, YCbCr, который содержит компонент яркости, обозначенный Y (иногда вместо этого также используется L), и два компонента цветности, обозначенные Cb и Cr. Компонент Y яркости (или короткой яркости) представляет яркость или интенсивность уровня серого (например, как в полутоновой картинке), в то время как два компонента цветности (или короткой цветности) Cb и Cr представляют компоненты информации цветности или цвета. Соответственно, картинка в формате YCbCr содержит массив выборок яркости со значениями (Y) выборок яркости и два массива выборок цветности со значениями (Cb и Cr) цветности. Картинки в формате RGB могут быть конвертированы или преобразованы в формат YCbCr и наоборот, процесс также известен как цветовое преобразование или конвертация. Если картинка является монохромной, она может содержать только массив выборок яркости. Соответственно, картинка может быть, например, массивом выборок яркости в монохромном формате или массивом выборок яркости и двумя соответствующими массивами выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4.A (digital) picture is, or can be viewed as, a two-dimensional array or matrix of samples with intensity values. A selection in an array may also be referred to as a pixel (short form of picture element) or pel. The number of samples in the horizontal and vertical direction (or axis) of the array or picture determines the size and/or resolution of the picture. Three color components are usually used to represent color, i.e. the picture can be presented or include three arrays of samples. In RBG format, or color space, a picture contains a corresponding array of red, green, or blue samples. However, in video encoding, each pixel is typically represented in a luminance-chrominance format or color space, such as YCbCr, which contains a luminance component denoted Y (sometimes L is also used instead) and two chrominance components denoted Cb and Cr. The luminance (or short chroma) component Y represents the brightness or intensity of the gray level (eg, as in a grayscale picture), while the two chrominance (or short chrominance) components Cb and Cr represent the chrominance or color information components. Accordingly, a picture in YCbCr format contains an array of brightness samples with values (Y) of brightness samples and two arrays of chrominance samples with values (Cb and Cr) of chromaticity. Pictures in RGB format can be converted or converted to YCbCr format and vice versa, the process is also known as color conversion or conversion. If the picture is monochrome, it can only contain an array of brightness samples. Accordingly, a picture can be, for example, an array of luminance samples in a monochrome format or an array of luminance samples and two corresponding arrays of chrominance samples in 4:2:0, 4:2:2 and 4:4:4 color formats.

Варианты осуществления видеокодера 20 могут содержать блок разделения картинки (не показан на Фиг.2), выполненный с возможностью разделения картинки 17 на множество (обычно не перекрывающихся) блоков 203 картинки. Эти блоки также могут называться корневыми блоками, макроблоками (H.264/AVC) или блоками дерева кодировки (CTB) или единицами дерева кодировки (CTU) (H.265/HEVC и VVC). Блок разделения картинки может быть выполнен с возможностью использования одного и того же размера блока для всех картинок в видеопоследовательности и соответствующей сетки, определяющей размер блока, или изменения размера блока между картинками или подмножествами или группами картинок и разделения каждой картинки на соответствующие блоки.Embodiments of video encoder 20 may include a picture splitter (not shown in FIG. 2) configured to divide picture 17 into multiple (usually non-overlapping) picture blocks 203. These blocks may also be called root blocks, macroblocks (H.264/AVC) or coding tree blocks (CTB) or coding tree units (CTU) (H.265/HEVC and VVC). The picture division block may be configured to use the same block size for all pictures in a video sequence and a corresponding grid defining the block size, or to vary the block size between pictures or subsets or groups of pictures and divide each picture into appropriate blocks.

В дополнительных вариантах осуществления видеокодер может быть сконфигурирован для приема непосредственно блока 203 картинки 17, например одного, нескольких или всех блоков, образующих картинку 17. Блок 203 картинки также может именоваться текущим блоком картинки или блоком картинки, подлежащим кодированию.In additional embodiments, the video encoder may be configured to receive block 203 of picture 17 directly, such as one, more, or all of the blocks making up picture 17. Picture block 203 may also be referred to as the current picture block or picture block to be encoded.

Подобно картинке 17, блок 203 картинки снова является или может рассматриваться как двумерный массив или матрица выборок со значениями интенсивности (значениями выборок), хотя и меньшего размера, чем картинка 17. Другими словами, блок 203 может содержать, например, один массив выборок (например, массив яркости в случае монохромной картинки 17 или массив яркости или цветности в случае цветной картинки) или три массива выборок (например, яркость и два массива цветности в случае цветной картинки 17) или любое другое количество и/или вид массивов в зависимости от применяемого цветового формата. Число выборок в горизонтальном и вертикальном направлении (или оси) блока 203 определяет размер блока 203. Соответственно, блок может, представлять собой, например, массив дискретных массивов MxN (M-столбец на N-строка) или массив MxN коэффициентов преобразования.Like picture 17, picture block 203 is again, or can be viewed as, a two-dimensional array or matrix of samples with intensity values (sample values), albeit smaller in size than picture 17. In other words, block 203 may contain, for example, a single array of samples (e.g. , a brightness array in the case of a monochrome picture 17 or a brightness or chrominance array in the case of a color picture) or three arrays of samples (for example, brightness and two chrominance arrays in the case of color picture 17) or any other number and/or type of arrays depending on the color used format. The number of samples in the horizontal and vertical direction (or axis) of block 203 determines the size of block 203. Accordingly, the block may be, for example, an MxN array of discrete arrays (M-column by N-row) or an MxN array of transform coefficients.

Варианты осуществления видеокодера 20, как показано на фиг.2, могут быть сконфигурированы для кодирования картинки 17 блок за блоком, например, кодирование и предсказание выполняются для каждого блока 203.Embodiments of video encoder 20, as shown in FIG. 2, may be configured to encode picture 17 block by block, for example, encoding and prediction are performed on a block-by-block basis 203.

Вычисление остаткаCalculating the remainder

Блок 204 вычисления остатка может быть сконфигурирован для вычисления остаточного блока 205 (также называемого остатком 205) на основе блока 203 картинки и блока 265 предсказания (дополнительные подробности о блоке 265 предсказания предоставлены позже), например, путем вычитания значения выборок блока 265 предсказания из значений выборок блока 203 картинки, выборка за выборкой (пиксель за пикселем), чтобы получить остаточный блок 205 в области выборки.Residual calculation block 204 may be configured to calculate residual block 205 (also referred to as residual 205) based on picture block 203 and prediction block 265 (more details about prediction block 265 are provided later), for example, by subtracting the value of the samples of prediction block 265 from the values of the samples. picture block 203, sample by sample (pixel by pixel), to obtain a residual block 205 in the sample region.

ПреобразованиеConversion

Блок 206 обработки преобразования может быть сконфигурирован для применения преобразования, например, дискретного косинусного преобразования (DCT) или дискретного синусоидального преобразования (DST), к значениям выборок остаточного блока 205 для получения коэффициентов 207 преобразования в области преобразования. Коэффициенты 207 преобразования могут также именоваться остаточными коэффициентами преобразования и представлять остаточный блок 205 в области преобразования.Transform processing unit 206 may be configured to apply a transform, such as a discrete cosine transform (DCT) or a discrete sine transform (DST), to the sample values of the residual block 205 to obtain transform coefficients 207 in the transform domain. The transform coefficients 207 may also be referred to as residual transform coefficients and represent the residual block 205 in the transform domain.

Блок 206 обработки преобразования может быть выполнен с возможностью применения целочисленных аппроксимаций DCT/DST, таких как преобразования, определенные для H.265/HEVC. По сравнению с ортогональным преобразованием DCT такие целочисленные аппроксимации обычно масштабируются с некоторым коэффициентом. Чтобы сохранить норму остаточного блока, который обрабатывается прямым и обратным преобразованиями, дополнительные коэффициенты масштабирования применяются как часть процесса преобразования. Коэффициенты масштабирования обычно выбираются на основе некоторых ограничений, например, коэффициенты масштабирования представляют собой степень двойки для операций сдвига, битовая глубина коэффициентов преобразования, компромисс между точностью и затратами на реализацию и т.д. Конкретные коэффициенты масштабирования, например, указываются для обратного преобразования, например, блоком 212 обработки обратного преобразования (и соответствующим обратным преобразованием, например, блоком 312 обработки обратного преобразования в видеодекодере 30) и соответствующими коэффициентами масштабирования для прямого преобразования, например, посредством блока 206 обработки преобразования в кодере 20 может быть определено соответствующим образом.Transform processing block 206 may be configured to apply DCT/DST integer approximations, such as the transforms defined for H.265/HEVC. Compared to the orthogonal DCT transform, such integer approximations are usually scaled by some factor. To preserve the norm of the residual block that is processed by the forward and inverse transforms, additional scaling factors are applied as part of the transform process. Scaling factors are usually chosen based on some constraints, for example, scaling factors are powers of two for shift operations, bit depth of transform factors, tradeoff between accuracy and implementation cost, etc. Particular scaling factors, for example, are indicated for the inverse transform, for example, by the inverse transform processing unit 212 (and the corresponding inverse transform, for example, by the inverse transform processing unit 312 in the video decoder 30) and corresponding scaling factors for the forward transform, for example, by the transform processing unit 206 in the encoder 20 can be determined accordingly.

Варианты осуществления видеокодера 20 (соответственно блок 206 обработки преобразования) могут быть сконфигурированы для вывода параметров преобразования, например, типа преобразования или преобразований, например, непосредственно или закодированы или сжаты посредством блока 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и использовать параметры преобразования для декодирования.Embodiments of video encoder 20 (respectively transform processing block 206) may be configured to output transform parameters, such as the type of transform or transforms, for example, directly or encoded or compressed by entropy encoding block 270, so that, for example, video decoder 30 can receive and use conversion parameters for decoding.

КвантованиеQuantization

Блок 208 квантования может быть сконфигурирован для квантования коэффициентов 207 преобразования для получения квантованных коэффициентов 209, например, путем применения скалярного квантования или векторного квантования. Квантованные коэффициенты 209 также могут упоминаться как квантованные коэффициенты 209 преобразования или квантованные остаточные коэффициенты 209.Quantization unit 208 may be configured to quantize transform coefficients 207 to obtain quantized coefficients 209, for example, by applying scalar quantization or vector quantization. Quantized coefficients 209 may also be referred to as quantized transform coefficients 209 or quantized residual coefficients 209.

Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами 207 преобразования. Например, n-битовый коэффициент преобразования может быть округлен до m-битового коэффициента преобразования во время квантования, где n больше m. Степень квантования может быть изменена посредством регулировки параметра квантования (QP). Например, для скалярного квантования может применяться другое масштабирование для достижения более точного или более грубого квантования. Меньшие размеры шагов квантования соответствуют более точному квантованию, тогда как большие размеры шагов квантования соответствуют более грубому квантованию. Применимый размер шага квантования может быть указан параметром квантования (QP). Параметр квантования может, например, представлять собой индекс для предопределенного набора применимых размеров шагов квантования. Например, небольшие параметры квантования могут соответствовать точному квантованию (небольшим размерам шагов квантования), а большие параметры квантования могут соответствовать грубому квантованию (большим размерам шагов квантования) или наоборот. Квантование может включать в себя деление на размер шага квантования и соответствующее и/или обратное деквантование, например, посредством блока 210 обратного квантования, может включать в себя умножение на размер шага квантования. Варианты осуществления согласно некоторым стандартам, например HEVC, могут быть сконфигурированы для использования параметра квантования для определения размера шага квантования. Как правило, размер шага квантования может быть вычислен на основе параметра квантования с использованием аппроксимации фиксированной точки уравнения, включающего в себя деление. Дополнительные коэффициенты масштабирования могут быть введены для квантования и деквантования, чтобы восстановить норму остаточного блока, которая могла быть изменена из-за масштабирования, используемого в аппроксимации фиксированной точки упомянутого уравнения для размера шага квантования и параметра квантования. В одной примерной реализации масштабирование обратного преобразования и деквантование могут быть объединены. В качестве альтернативы могут использоваться настроенные таблицы квантования и передаваться сигнал от кодера к декодеру, например, в битовом потоке. Квантование является операцией с потерями, при которой потери возрастают с увеличением размеров шагов квантования.The quantization process may reduce the bit depth associated with some or all of the transform coefficients 207. For example, an n-bit transform factor may be rounded to an m-bit transform factor during quantization, where n is greater than m. The degree of quantization can be changed by adjusting the quantization parameter (QP). For example, for scalar quantization, different scaling may be applied to achieve finer or coarser quantization. Smaller quantization step sizes correspond to finer quantization, while larger quantization step sizes correspond to coarser quantization. The applicable quantization step size may be specified by the quantization parameter (QP). The quantization parameter may, for example, be an index to a predefined set of applicable quantization step sizes. For example, small quantization parameters may correspond to fine quantization (small quantization step sizes), and large quantization parameters may correspond to coarse quantization (large quantization step sizes), or vice versa. Quantization may include dividing by the quantization step size and corresponding and/or inverse dequantization, for example, by inverse quantization block 210 may include multiplying by the quantization step size. Embodiments according to some standards, such as HEVC, may be configured to use a quantization parameter to determine the quantization step size. Typically, the quantization step size can be calculated based on the quantization parameter using a fixed point approximation of the equation involving division. Additional scaling factors can be introduced for quantization and dequantization to recover the residual block norm that may have been changed due to the scaling used in the fixed point approximation of the above equation for the quantization step size and the quantization parameter. In one exemplary implementation, inverse transform scaling and dequantization may be combined. Alternatively, customized quantization tables can be used and the signal passed from the encoder to the decoder, for example in a bitstream. Quantization is a lossy operation in which the loss increases with the size of the quantization steps.

Варианты осуществления видеокодера 20 (соответственно блок 208 квантования) могут быть сконфигурированы для вывода параметров квантования (QP), например, напрямую или закодированы через блок 270 энтропийного кодирования, так что, например, видеодекодер 30 может принимать и применять квантование параметры для декодирования.Embodiments of video encoder 20 (respectively quantization block 208) may be configured to output quantization parameters (QPs), for example, directly or encoded through entropy encoding block 270, so that, for example, video decoder 30 can receive and apply quantization parameters for decoding.

Обратное квантованиеInverse quantization

Блок 210 обратного квантования сконфигурирован для применения обратного квантования блока 208 квантования к квантованным коэффициентам для получения деквантованных коэффициентов 211, например, путем применения обратной схемы квантования, применяемой блоком 208 квантования, на основе или с использованием того же размер шага квантования в качестве блока 208 квантования. Деквантованные коэффициенты 211 также могут упоминаться как деквантованные остаточные коэффициенты 211 и соответствовать, хотя они обычно не идентичны коэффициентам преобразования из-за потери при квантовании, коэффициентам 207 преобразования.The inverse quantization block 210 is configured to apply the inverse quantization of the quantization block 208 to the quantized coefficients to obtain the dequantized coefficients 211, for example, by applying the inverse quantization scheme applied by the quantization block 208 based on or using the same quantization step size as the quantization block 208. The dequantized coefficients 211 may also be referred to as the dequantized residual coefficients 211 and correspond, although they are typically not identical to the transform coefficients due to quantization loss, to the transform coefficients 207 .

Обратное преобразованиеReverse conversion

Блок 212 обработки обратного преобразования сконфигурирован для применения обратного преобразования для преобразования, применяемого блоком 206 обработки преобразования, например, обратного дискретного косинусного преобразования (DCT) или обратного дискретного синусоидального преобразования (DST) или других обратных преобразований, для получения восстановленного остаточного блока 213 (или соответствующих деквантованных коэффициентов 213) в области выборки. Восстановленный остаточный блок 213 также может именоваться блоком 213 преобразования.The inverse transform processing unit 212 is configured to apply an inverse transform to the transform applied by the transform processing unit 206, such as an inverse discrete cosine transform (DCT) or an inverse discrete sine transform (DST) or other inverse transforms, to obtain the reconstructed residual block 213 (or corresponding dequantized coefficients 213) in the sampling area. The reconstructed residual block 213 may also be referred to as a transform block 213.

ВосстановлениеRecovery

Блок 214 восстановления (например, сумматор или сумматор 214) сконфигурирован для добавления блока 213 преобразования (т.е. восстановленного остаточного блока 213) к блоку 265 предсказания, чтобы получить восстановленный блок 215 в области выборки, например, путем добавления, выборка за выборкой, значений выборки восстановленного остаточного блока 213 и значений выборки блока 265 предсказания.A reconstruction block 214 (e.g., an adder or adder 214) is configured to add a transform block 213 (i.e., a reconstructed residual block 213) to a prediction block 265 to obtain a reconstructed block 215 in the sample region, for example, by adding, sample by sample, the sample values of the reconstructed residual block 213 and the sample values of the prediction block 265.

ФильтрацияFiltration

Блок 220 контурного фильтра (или, кратко, «контурный фильтр» 220) выполнен с возможностью фильтрации восстановленного блока 215, чтобы получить отфильтрованный блок 221, или, в общем, для фильтрации восстановленных выборок для получения отфильтрованных выборок. Блок контурного фильтра, например, выполнен с возможностью сглаживания переходов пикселей или иного улучшения качества видео. Блок 220 контурного фильтра может содержать один или несколько контурных фильтров, таких как фильтр деблокирования, фильтр с адаптивным смещением (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры резкости, сглаживающие фильтры или совместные фильтры, или любая их комбинация. Хотя блок 220 контурного фильтра показан на Фиг.2 как контурный фильтр, в других конфигурациях блок 220 контурного фильтра может быть реализован как постконтурный фильтр. Отфильтрованный блок 221 также может именоваться отфильтрованным восстановленным блоком 221.Loop filter block 220 (or “loop filter” 220 for short) is configured to filter the reconstructed block 215 to obtain a filtered block 221, or more generally to filter the reconstructed samples to obtain filtered samples. The edge filter block, for example, is configured to smooth pixel transitions or otherwise improve video quality . The edge filter block 220 may include one or more edge filters, such as a deblocking filter, an adaptive offset filter (SAO), or one or more other filters, such as a two-way filter, an adaptive edge filter (ALF), sharpening filters, smoothing filters, or joint filters, or any combination of them. Although the loop filter block 220 is shown in FIG. 2 as a loop filter, in other configurations the loop filter block 220 may be implemented as a post-loop filter. Filtered block 221 may also be referred to as filtered reconstructed block 221.

Варианты осуществления видеокодера 20 (соответственно блок 220 контурного фильтра) могут быть сконфигурированы для вывода параметров контурного фильтра (таких как информация об адаптивном смещении выборки), например, непосредственно или закодированы через блок 270 энтропийного кодирования, так что, например, декодер 30 может принимать и применять одни и те же параметры контурного фильтра или соответствующие контурные фильтры для декодирования.Embodiments of video encoder 20 (respectively, loop filter block 220) may be configured to output loop filter parameters (such as adaptive sample offset information), for example, directly or encoded through entropy encoding block 270, so that, for example, decoder 30 can receive and apply the same loop filter parameters or corresponding loop filters for decoding.

Буфер декодированных картинокBuffer of decoded pictures

Буфер 230 декодированных картинок (DPB) может быть памятью, в которой хранятся опорные картинки или, в общем, данные опорных картинок для кодирования видеоданных посредством видеокодера 20. DPB 230 может быть сформирован любым из множества запоминающих устройств, таких как динамическая память с произвольным доступом (DRAM), в том числе синхронная DRAM (SDRAM), магниторезистивная RAM (MRAM), резистивная RAM (RRAM) или запоминающие устройства других типов. Буфер 230 (DPB) декодированных картинок может быть выполнен с возможностью сохранения одного или более фильтрованных блоков 221. Буфер 230 декодированных картинок может быть дополнительно сконфигурирован для хранения других ранее отфильтрованных блоков, например, ранее восстановленных и отфильтрованных блоков 221, одной и той же текущей картинки или разных картинок, например, ранее восстановленных картинок, и может предоставлять полностью ранее восстановленные, то есть декодированные, картинки (и соответствующие опорные блоки и выборки) и/или частично восстановленную текущую картинку (и соответствующие опорные блоки и выборки), например, для внешнего предсказания. Буфер 230 декодированных картинок (DPB) также может быть сконфигурирован для хранения одного или нескольких нефильтрованных восстановленных блоков 215 или, в общем, нефильтрованных восстановленных выборок, например, если восстановленный блок 215 не фильтруется блоком 220 контурной фильтрации или любой другой дополнительной обработанной версией восстановленных блоков или выборок.Decoded picture buffer (DPB) 230 may be a memory that stores reference pictures, or generally reference picture data, for encoding video data by video encoder 20. DPB 230 may be formed by any of a variety of storage devices, such as dynamic random access memory (DRAM). DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. The decoded picture buffer (DPB) 230 may be configured to store one or more filtered blocks 221. The decoded picture buffer 230 may be further configured to store other previously filtered blocks, such as previously reconstructed and filtered blocks 221, of the same current picture. or different pictures, for example, previously reconstructed pictures, and can provide fully previously restored, i.e. decoded, pictures (and corresponding reference blocks and samples) and/or a partially reconstructed current picture (and corresponding reference blocks and samples), for example, for an external predictions. The decoded picture buffer (DPB) 230 may also be configured to store one or more unfiltered reconstructed blocks 215 or, in general, unfiltered reconstructed samples, for example, if the reconstructed block 215 is not filtered by a loop filter block 220 or any other additional processed version of the reconstructed blocks, or samples.

Выбор режима (разделение и предсказание)Mode selection (separation and prediction)

Блок 260 выбора режима содержит блок 262 разделения, блок 244 внешнего предсказания и блок 254 внутреннего предсказания и сконфигурирован для приема или получения данных исходной картинки, например, исходного блока 203 (текущего блока 203 текущей картинки 17), и данные восстановленной картинки, например, отфильтрованные и/или нефильтрованные восстановленные выборки или блоки одной и той же (текущей) картинки и/или из одной или множества ранее декодированных картинок, например, из буфера 230 декодированных картинок или других буферов (например, линейного буфера, не показан). Данные восстановленной картинки используются в качестве данных опорной картинки для предсказания, например, внешнего предсказания или внутреннего предсказания, чтобы получить блок 265 предсказания или предсказатель 265.The mode selection unit 260 includes a separating unit 262, an inter prediction unit 244, and an intra prediction unit 254, and is configured to receive or obtain original picture data, for example, the original block 203 (the current block 203 of the current picture 17), and reconstructed picture data, for example, filtered and/or unfiltered reconstructed samples or blocks of the same (current) picture and/or from one or more previously decoded pictures, for example, from decoded picture buffer 230 or other buffers (eg, a line buffer, not shown). The reconstructed picture data is used as reference picture data for prediction, for example, inter-prediction or intra-prediction to obtain a prediction unit 265 or a predictor 265.

Блок 260 выбора режима может быть сконфигурирован для определения или выбора разделения для текущего режима предсказания блока (включая отсутствие разделения) и режима предсказания (например, режима внутреннего или внешнего предсказания) и генерирования соответствующего блока 265 предсказания, который используется для вычисления остаточного блока 205 и восстановления восстановленного блока 215.The mode selection block 260 may be configured to determine or select a split for the current block prediction mode (including no split) and prediction mode (eg, intra or inter prediction mode) and generate a corresponding prediction block 265 that is used to calculate the residual block 205 and reconstruct restored block 215.

Варианты осуществления блока 260 выбора режима могут быть сконфигурированы для выбора разделения и режима предсказания (например, из тех, которые поддерживаются или доступны для блока 260 выбора режима), которые обеспечивают наилучшее совпадение или, другими словами, минимальный остаток (минимальный остаток означает лучшее сжатие для передачи или хранения), или минимальные накладные расходы на сигнализацию (минимальные накладные расходы на сигнализацию означают лучшее сжатие для передачи или хранения), или который учитывает или уравновешивает и то, и другое. Блок 260 выбора режима может быть выполнен с возможностью определения режима разделения и предсказания на основе оптимизации скорость/искажение (RDO), то есть выбора режима предсказания, который обеспечивает минимальное искажение при некоторой скорости. Такие термины, как «лучший», «минимальный», «оптимальный» и т.д. в этом контексте не обязательно относятся к всеобъемлющему «лучшему», «минимуму», «оптимальному» и т.д., но также могут относиться к выполнению критерия выбора или прекращения, например когда значение превышает или падает ниже порогового значения, или других ограничений, потенциально ведущих к «субоптимальному выбору», но уменьшающих сложность и время обработки.Embodiments of the mode selector 260 may be configured to select a partition and prediction mode (e.g., from those supported or available for the mode selector 260) that provide the best match, or in other words, the minimum remainder (the minimum remainder means the best compression for transmission or storage), or minimum signaling overhead (minimum signaling overhead means better compression for transmission or storage), or which accounts for or balances both. The mode selector 260 may be configured to determine a division and prediction mode based on rate/distortion optimization (RDO), that is, selecting a prediction mode that provides minimum distortion at a certain rate. Terms such as “best”, “minimum”, “optimal”, etc. in this context do not necessarily refer to an overarching "best", "minimum", "optimal", etc., but may also refer to the fulfillment of a selection or termination criterion, such as when a value exceeds or falls below a threshold, or other restrictions, potentially leading to "suboptimal selection" but reducing complexity and processing time.

Другими словами, блок 262 разделения может быть сконфигурирован для разделения блока 203 на более мелкие разделы или подблоки (которые снова образуют блоки), например, итеративно с использованием квадратичного разделения (QT), двоичного разделения (BT) или разделения на тройное дерево (TT) или любую их комбинацию, а также для выполнения, например, предсказания для каждого из разделов или подблоков блока, при этом выбор режима содержит выбор древовидной структуры разделенного блока 203 и режимы предсказания применяются к каждому из разделов или подблоков блока.In other words, partitioner 262 may be configured to partition block 203 into smaller sections or sub-blocks (which form blocks again), for example, iteratively using quadratic partitioning (QT), binary partitioning (BT), or ternary tree partitioning (TT). or any combination thereof, and to perform, for example, prediction for each of the sections or subblocks of the block, wherein the mode selection comprises selecting a tree structure of the partitioned block 203 and the prediction modes are applied to each of the sections or subblocks of the block.

Далее более подробно поясняется разделение (например, блоком 260 разделения) и обработка предсказания (блоком 244 внешнего предсказания и блоком 254 внутреннего предсказания), выполняемые примерным видеокодером 20.Next, the division (e.g., by division block 260) and prediction processing (by inter prediction block 244 and intra prediction block 254) performed by the exemplary video encoder 20 will be explained in more detail.

РазделениеSeparation

Блок 262 разделения может разделять (или разбивать) текущий блок 203 на меньшие части, например, меньшие блоки квадратного или прямоугольного размера. Эти меньшие блоки (которые также могут именоваться субблоками) могут быть дополнительно разделены на еще меньшие разделы. Это также называется разделением дерева или иерархическим разделением дерева, в котором корневой блок, например, на уровне 0 корневого дерева (уровень 0 иерархии, глубина 0), может быть рекурсивно разделен, например, разделен на два или более блоков следующего более низкого уровня дерева, например, узлов на уровне 1 дерева (уровень 1 иерархии, глубина 1), при этом эти блоки могут быть снова разделены на два или более блоков следующего более низкого уровня, например, уровня 2 дерева (уровень 2 иерархии, глубина 2) и т.д. до тех пор, пока разделение не будет завершено, например, потому что критерий завершения выполняется, например, достигается максимальная глубина дерева или минимальный размер блока. Блоки, которые далее не разделяются, также называются листовыми блоками или листовыми узлами дерева. Дерево, использующее разделение на два раздела, называется двоичным деревом (BT), дерево, использующее разделение на три раздела, называется троичным деревом (TT), а дерево, использующее разделение на четыре раздела, называется квадродеревом (QT).Divider 262 may divide (or split) the current block 203 into smaller pieces, such as smaller blocks of square or rectangular size. These smaller blocks (which may also be called subblocks) can be further divided into even smaller sections. This is also called tree partitioning or hierarchical tree partitioning, in which the root block, for example at level 0 of the root tree (hierarchy level 0, depth 0), can be recursively partitioned, for example divided into two or more blocks of the next lower tree level. for example, nodes at tree level 1 (hierarchy level 1, depth 1), where these blocks can be again divided into two or more blocks of the next lower level, for example tree level 2 (hierarchy level 2, depth 2), etc. d. until the split is completed, for example because a completion criterion is met, such as the maximum tree depth or minimum block size being reached. Blocks that are not further divided are also called leaf blocks or leaf nodes of a tree. A tree using two partitions is called a binary tree (BT), a tree using three partitions is called a ternary tree (TT), and a tree using four partitions is called a quadtree (QT).

Как упоминалось ранее, используемый здесь термин «блок» может быть частью, в частности квадратной или прямоугольной частью картинки. Со ссылкой, например, на HEVC и VVC, блок может быть или соответствовать единице дерева кодировки (CTU), единице кодировки (CU), единице предсказания (PU) и единице преобразования (TU) и/или соответствующие блоки, например, блок дерева кодировки (CTB), блок кодировки (CB), блок преобразования (TB) или блок предсказания (PB).As mentioned earlier, the term "block" as used herein can be a part, particularly a square or rectangular part of a picture. With reference to, for example, HEVC and VVC, a block may be or correspond to a coding tree unit (CTU), a coding unit (CU), a prediction unit (PU) and a transform unit (TU) and/or corresponding blocks, for example a coding tree block (CTB), coding block (CB), transform block (TB) or prediction block (PB).

Например, единица дерева кодировки (CTU) может быть или содержать CTB выборок яркости, два соответствующих CTB выборок цветности картинки, которая имеет три массива выборок, или CTB выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодировки выборок. Соответственно, блок дерева кодировки (CTB) может быть N×N блоком выборок для некоторого значения N, так что деление компоненты на CTB является разделением. Единица кодировки (CU) может быть или содержать блок кодировки выборок яркости, два соответствующих блока кодировки выборок цветности картинки, которое имеет три массива выборок, или блок кодировки выборок монохромной картинки или картинки, которая кодируется с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодировки выборок. Соответственно, блок кодировки (CB) может быть M×N блоком выборок для некоторых значений M и N, так что деление CTB на блоки кодировки является разделением.For example, a coding tree unit (CTU) may be or contain a CTB of luma samples, two corresponding CTBs of chroma samples of a picture that has three arrays of samples, or a CTB of samples of a monochrome picture or a picture that is encoded using three separate color planes and the syntactic structures used for encoding samples. Accordingly, a code tree block (CTB) may be an N×N block of samples for some value of N, such that dividing a component by the CTB is a division. A coding unit (CU) may be or contain a luma sample encoding unit, two corresponding chrominance sample encoding units of a picture that has three sample arrays, or a monochrome sample encoding unit or a picture that is encoded using three separate color planes and syntactic structures used for encoding samples. Accordingly, a code block (CB) may be an M×N block of samples for some values of M and N, so that dividing the CTB into code blocks is a division.

В вариантах осуществления, например, согласно HEVC, единица дерева кодировки (CTU) может быть разбита на CU с использованием структуры квадродерева, обозначенной в качества дерева кодировки. Решение о том, следует ли кодировать область картинки с использованием предсказания вне картинки (временного) или внутри картинки (пространственного), принимается на уровне CU. Каждая CU может быть дополнительно разбита на одну, две или четыре PU в соответствии с типом разбиения на PU. Внутри одной PU применяется один и тот же процесс предсказания, а релевантная информация передается в декодер на основе PU. После получения остаточного блока путем применения процесса предсказания на основе типа разбиения на PU, CU может быть разделена на единицы (TU) преобразования в соответствии с другой структурой квадродерева, аналогичной дереву кодировки для CU.In embodiments, for example, according to HEVC, a coding tree unit (CTU) can be partitioned into CUs using a quadtree structure designated as a coding tree. The decision of whether to encode a picture region using extra-picture (temporal) or intra-picture (spatial) prediction is made at the CU level. Each CU can be further partitioned into one, two or four PUs according to the PU partition type. Within a single PU, the same prediction process is applied, and the relevant information is passed to the PU-based decoder. After obtaining the residual block by applying a prediction process based on the partition type on the PU, the CU can be divided into transformation units (TUs) according to another quadtree structure similar to the encoding tree for the CU.

В вариантах осуществления, например, согласно последнему разрабатываемому в настоящее время стандарту кодировки видео, который называется универсальной кодировкой видео (VVC), для разделения блока кодировки используется разделение на квадраты и двоичное дерево (QTBT). В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму. Например, единица дерева кодировки (CTU) сначала разделяется на структуру квадродерева. Листовые узлы квадродерева дополнительно разделяются двоичным деревом или тройчной (или тройной) древовидной структурой. Листовые узлы дерева разделения называются единицами кодирования (CU), и эта сегментация используется для обработки предсказания и преобразования без какого-либо дальнейшего разделения. Это означает, что CU, PU и TU имеют одинаковый размер блока в структуре блока кодирования QTBT. Параллельно с блочной структурой QTBT было предложено использовать множественное разделение, например, тройное разделение дерева.In embodiments, for example, according to the latest video encoding standard currently under development, called Versatile Video Coding (VVC), quadrant and binary tree (QTBT) partitioning is used to divide the encoding block. In a block structure, a QTBT CU can be either square or rectangular in shape. For example, a coding tree unit (CTU) is first divided into a quadtree structure. The leaf nodes of a quadtree are further separated by a binary tree or ternary (or ternary) tree structure. The leaf nodes of a partitioning tree are called coding units (CUs), and this partitioning is used to process prediction and transformation without any further partitioning. This means that CU, PU and TU have the same block size in the QTBT coding block structure. In parallel with the block structure of QTBT, the use of multiple partitioning, such as triple tree partitioning, has been proposed.

В одном примере блок 260 выбора режима видеокодера 20 может быть выполнен с возможностью выполнения любого сочетания способов разделения, описанных в данном документе.In one example, the mode selector 260 of the video encoder 20 may be configured to perform any combination of the division methods described herein.

Как описано выше, видеокодер 20 сконфигурирован для определения или выбора наилучшего или оптимального режима предсказания из набора (предварительно определенных) режимов предсказания. Набор режимов предсказания может содержать, например, режимы внутреннего предсказания и/или режимы внешнего предсказания.As described above, video encoder 20 is configured to determine or select the best or optimal prediction mode from a set of (predetermined) prediction modes. The set of prediction modes may comprise, for example, intra prediction modes and/or inter prediction modes.

Внутреннее предсказаниеInternal prediction

Набор режимов внутреннего предсказания может содержать 35 разных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено в HEVC, или может содержать 67 разных режимов внутреннего предсказания, например, ненаправленные режимы, такие как режим DC (или средний) и планарный режим, или направленные режимы, например, как определено для VVC.The set of intra prediction modes may contain 35 different intra prediction modes, for example, non-directional modes, such as DC (or average) mode and planar mode, or directional modes, for example, as defined in HEVC, or may contain 67 different intra prediction modes, for example , non-directional modes such as DC (or medium) mode and planar mode, or directional modes such as those defined for VVC.

Блок 254 внутреннего предсказания выполнен с возможностью использования восстановленных выборок соседних блоков одной и той же текущей картинки для генерирования блока 265 внутреннего предсказания согласно режиму внутреннего предсказания набора режимов внутреннего предсказания.The intra prediction block 254 is configured to use reconstructed samples of neighboring blocks of the same current picture to generate an intra prediction block 265 according to an intra prediction mode of a set of intra prediction modes.

Блок 254 внутреннего предсказания (или, в общем, блок 260 выбора режима) дополнительно выполнен с возможностью вывода параметров внутреннего предсказания (или, в общем, информации, указывающей выбранный режим внутреннего предсказания для блока) в блок 270 энтропийного кодирования в форме элементов 266 синтаксиса для включения в данные 21 закодированной картинки, чтобы, например, видеодекодер 30 мог принимать и использовать параметры предсказания для декодирования.The intra prediction block 254 (or more generally the mode selection block 260) is further configured to output intra prediction parameters (or more generally information indicating the selected intra prediction mode for the block) to the entropy encoding block 270 in the form of syntax elements 266 for including the encoded picture in the data 21 so that, for example, the video decoder 30 can receive and use the prediction parameters for decoding.

Внешнее предсказаниеExternal prediction

Набор (или возможные) режимов внешнего предсказания зависит от доступных опорных картинок (т.е. предыдущих, по меньшей мере, частично декодированных картинок, например, сохраненных в DBP 230) и других параметров внешнего предсказания, например, от того, вся ли опорная картинка или только часть, например область окна поиска вокруг области текущего блока, опорной картинки используется для поиска наиболее подходящего опорного блока и/или, например, применяется ли интерполяция пикселей, например, половинная/полупиксельная и/или четверть-пиксельная интерполяция, или нет.The set (or possible) inter prediction modes depend on the available reference pictures (i.e., previous at least partially decoded pictures, e.g., stored in DBP 230) and other inter prediction parameters, e.g., whether the entire reference picture is or only a portion, eg, a search window area around the current block area, of the reference picture is used to search for the most suitable reference block and/or, eg, whether pixel interpolation, such as half/half-pixel and/or quarter-pixel interpolation, is applied or not.

В дополнение к вышеупомянутым режимам предсказания могут применяться режим пропуска и/или прямой режим.In addition to the above prediction modes, a skip mode and/or a direct mode may be used.

Блок 244 внешнего предсказания может включать в себя блок оценки движения (ME) и блок компенсации движения (MC) (оба на Фиг.2 не показаны). Блок оценки движения может быть сконфигурирован для приема или получения блока 203 картинки (блока 203 текущей картинки для текущей картинки 17) и декодированной картинки 231, или, по меньшей мере, одного или множества ранее восстановленных блоков, например, восстановленных блоков одного или множество других/отличных ранее декодированных картинок 231 для оценки движения. Например, видеопоследовательность может содержать текущую картинку и ранее декодированные картинки 231, или, другими словами, текущая картинка и ранее декодированная картинка 231 могут быть частью или формировать последовательность картинок, образующих видеопоследовательность.The inter-prediction block 244 may include a motion estimation (ME) block and a motion compensation (MC) block (both not shown in FIG. 2). The motion estimator may be configured to receive or obtain a picture block 203 (a current picture block 203 for a current picture 17) and a decoded picture 231, or at least one or a plurality of previously reconstructed blocks, such as reconstructed blocks of one or a plurality of others. distinct previously decoded pictures 231 for motion estimation. For example, the video sequence may contain the current picture and previously decoded pictures 231, or, in other words, the current picture and the previously decoded picture 231 may be part of or form a sequence of pictures making up the video sequence.

Кодер 20 может, например, быть выполнен с возможностью выбора опорного блока из множества опорных блоков одинаковых или разных картинок из множества других картинок и обеспечения опорной картинки (или индекса опорной картинки) и/или смещения (пространственного смещения) между позицией (x, y координатами) опорного блока и позицией текущего блока в качестве параметров внешнего предсказания в блок оценки движения. Это смещение также называется вектором движения (MV).The encoder 20 may, for example, be configured to select a reference block from a plurality of reference blocks of the same or different pictures from a plurality of other pictures and provide a reference picture (or reference picture index) and/or an offset (spatial offset) between the position (x, y coordinates ) of the reference block and the position of the current block as inter-prediction parameters to the motion estimation block. This displacement is also called motion vector (MV).

Блок компенсации движения сконфигурирован для получения, например, приема параметра внешнего предсказания и выполнения внешнего предсказания на основе или с использованием параметра внешнего предсказания для получения блока 265 внешнего предсказания. Компенсация движения, выполняемая блоком компенсации движения, может включать в себя получение или генерирование блока предсказания на основе вектора движения/блока, определенного посредством оценки движения, возможно с выполнением интерполяций с точностью до субпикселя. Интерполяционная фильтрация может генерировать дополнительные пиксельные выборки из известных пиксельных выборок, таким образом потенциально увеличивая число кандидатных блоков предсказания, которые могут использоваться для кодирования блока картинки. После приема вектора движения для PU текущего блока картинки блок компенсации движения может определить местоположение блока предсказания, на который указывает вектор движения, в одном из списков опорных картинок.The motion compensation unit is configured to receive, for example, receiving an inter prediction parameter and performing inter prediction based on or using the inter prediction parameter to obtain an inter prediction unit 265. The motion compensation performed by the motion compensation block may include obtaining or generating a prediction block based on a motion vector/block determined by motion estimation, possibly performing interpolations with sub-pixel precision. Interpolation filtering can generate additional pixel samples from known pixel samples, thereby potentially increasing the number of candidate prediction blocks that can be used to encode a picture block. After receiving the motion vector for the PU of the current picture block, the motion compensation unit may determine the location of the prediction block pointed to by the motion vector in one of the reference picture lists.

Модуль компенсации движения также может генерировать элементы синтаксиса, связанные с блоками и слайсом видео, для использования видеодекодером 30 при декодировании блоков картинки слайса видео.The motion compensation module may also generate syntax elements associated with video blocks and slices for use by video decoder 30 when decoding the picture blocks of the video slice.

Энтропийная кодировкаEntropy encoding

Блок 270 энтропийного кодирования сконфигурирован для применения, например, алгоритма или схемы энтропийной кодировки (например, схемы кодировки с переменной длиной (VLC), контекстно-адаптивной схемы VLC (CAVLC), схемы арифметической кодировки, бинаризации, контекстно адаптивной двоичной арифметической кодировки (CABAC), основанной на синтаксисе контекстно-адаптивной двоичной арифметической кодировки (SBAC), энтропийной кодировки с интервалом вероятности (PIPE) или другого метод или методики энтропийного кодирования) или обхода (без сжатия) квантованных коэффициентов 209, параметров внешнего предсказания, параметров внутреннего предсказания, параметров контурного фильтра и/или других элементов синтаксиса для получения данных 21 закодированной картинки, которые могут выводиться через выход 272, например, в форме кодированного битового потока 21, так что, например, видеодекодер 30 может принимать и использовать параметры для декодирования. Кодированный битовый поток 21 может быть передан на видеодекодер 30 или сохранен в памяти для последующей передачи или извлечения видеодекодером 30.Entropy encoding block 270 is configured to apply, for example, an entropy encoding algorithm or scheme (e.g., variable length encoding (VLC) scheme, context adaptive VLC (CAVLC), arithmetic encoding scheme, binarization, context adaptive binary arithmetic encoding (CABAC) , based on the syntax of context-adaptive binary arithmetic coding (SBAC), probability interval entropy encoding (PIPE), or other entropy encoding method or technique) or bypass (uncompressed) quantized coefficients 209, inter prediction parameters, intra prediction parameters, contour parameters filter and/or other syntax elements to obtain encoded picture data 21, which may be output through output 272, for example, in the form of an encoded bitstream 21, so that, for example, video decoder 30 can receive and use parameters for decoding. The encoded bitstream 21 may be transmitted to video decoder 30 or stored in memory for later transmission or retrieval by video decoder 30.

Другие структурные вариации видеокодера 20 могут использоваться для кодирования видеопотока. Например, кодер 20, не основанный на преобразовании, может квантовать остаточный сигнал напрямую без блока 206 обработки преобразования. В другой реализации кодер 20 может иметь блок 208 квантования и блок 210 обратного квантования, объединенные в единый блок.Other structural variations of video encoder 20 may be used to encode the video stream. For example, non-transform encoder 20 may quantize the residual signal directly without transform processing unit 206. In another implementation, encoder 20 may have a quantization unit 208 and an inverse quantization unit 210 combined into a single unit.

Декодер и способ декодированияDecoder and decoding method

Фиг.3 показывает пример видеодекодера 30, который выполнен с возможностью реализации методов настоящей заявки. Видеодекодер 30 сконфигурирован для приема данных 21 закодированной картинки (например, кодированного битового потока 21), например, закодированных кодером 20, для получения декодированной картинки 331. Данные закодированной картинки или битовый поток содержат информацию для декодирования данных кодированной картинки, например, данные, которые представляют блоки картинки кодированного слайса видео и ассоциированные элементы синтаксиса.FIG. 3 shows an example of a video decoder 30 that is configured to implement the methods of the present application. Video decoder 30 is configured to receive encoded picture data 21 (e.g., encoded bitstream 21), e.g., encoded by encoder 20, to obtain a decoded picture 331. The encoded picture data or bitstream contains information for decoding the encoded picture data, e.g., data that represents the picture blocks of the encoded video slice and associated syntax elements.

В примере на фиг.3 декодер 30 содержит блок 304 энтропийного декодирования, блок 310 обратного квантования, блок 312 обработки обратного преобразования, блок 314 восстановления (например, сумматор 314), контурный фильтр 320, буфер декодированных картинок (DBP) 330, блок 344 внешнего предсказания и блок 354 внутреннего предсказания. Блок 344 внешнего предсказания может быть или включать в себя блок компенсации движения. Видеодекодер 30 может, в некоторых примерах, выполнять этап декодирования, в целом обратный этапу кодирования, описанному в отношении видеокодера 100 на Фиг.2.In the example of FIG. 3, decoder 30 includes an entropy decoding block 304, an inverse quantization block 310, an inverse transform processing block 312, a reconstruction block 314 (e.g., adder 314), a loop filter 320, a decoded picture buffer (DBP) 330, an external block 344. prediction and intra prediction block 354. The inter prediction unit 344 may be or include a motion compensation unit. Video decoder 30 may, in some examples, perform a decoding step that is generally the reverse of the encoding step described with respect to video encoder 100 in FIG. 2.

Как описано в отношении кодера 20, блок 210 обратного квантования, блок 212 обработки обратного преобразования, блок 214 восстановления, контурный фильтр 220, буфер 230 (DPB) декодированных картинок, блок 344 внешнего предсказания и блок 354 внутреннего предсказания также относятся к формированию «встроенного декодера» видеокодера 20. Соответственно, блок 310 обратного квантования может быть идентичен по функции блоку 110 обратного квантования, блок 312 обработки обратного преобразования может быть идентичен по функции блоку 212 обработки обратного преобразования, блок 314 восстановления может быть идентичен по функции блоку 214 восстановления, контурный фильтр 320 может быть идентичен по функции контурному фильтру 220, а буфер 330 декодированных картинок может быть идентичен по функции буферу 230 декодированных картинок. Следовательно, пояснения, предоставленные для соответствующих блоков и функций видеокодера 20, применимы соответственно и к соответствующим блокам и функциям видеодекодера 30.As described with respect to the encoder 20, the inverse quantization unit 210, the inverse transform processing unit 212, the reconstruction unit 214, the loop filter 220, the decoded picture buffer (DPB) 230, the inter-prediction unit 344, and the intra-prediction unit 354 also relate to forming the “on-chip decoder”. » video encoder 20. Accordingly, the inverse quantization block 310 may be identical in function to the inverse quantization block 110, the inverse transform processing block 312 may be identical in function to the inverse transform processing block 212, the restoration block 314 may be identical in function to the reconstruction block 214, loop filter 320 may be identical in function to loop filter 220, and decoded picture buffer 330 may be identical in function to decoded picture buffer 230. Therefore, the explanations provided for the corresponding blocks and functions of the video encoder 20 apply correspondingly to the corresponding blocks and functions of the video decoder 30.

Энтропийное декодированиеEntropy Decoding

Блок 304 энтропийного декодирования сконфигурирован для синтаксического анализа битового потока 21 (или, в общем, данных 21 закодированной картинки) и выполнения, например, энтропийного декодирования для данных 21 закодированной картинки, чтобы получить, например, квантованные коэффициенты 309 и/или декодированные параметры кодировки (не показано на фиг.3), например, любой или все параметры внешнего предсказания (например, индекс опорной картинки и вектор движения), параметр внутреннего предсказания (например, режим или индекс внутреннего предсказания), параметры преобразования, параметры квантования, параметры контурного фильтра, и/или другие элементы синтаксиса. Блок 304 энтропийного декодирования может быть выполнен с возможностью применения алгоритмов или схем декодирования, соответствующих схемам кодирования, как описано в отношении модуля 270 энтропийного кодирования кодера 20. Блок 304 энтропийного декодирования может быть дополнительно сконфигурирован для предоставления параметров внешнего предсказания, параметра внутреннего предсказания и/или других элементов синтаксиса в блок 360 выбора режима и других параметров в другие блоки декодера 30. Видеодекодер 30 может принимать элементы синтаксиса на уровне слайса видео и/или уровне видеоблока.An entropy decoding block 304 is configured to parse the bit stream 21 (or generally the encoded picture data 21) and perform, for example, entropy decoding on the encoded picture data 21 to obtain, for example, quantized coefficients 309 and/or decoded encoding parameters ( not shown in FIG. 3), for example, any or all of the inter prediction parameters (e.g., reference picture index and motion vector), intra prediction parameter (e.g., intra prediction mode or index), transform parameters, quantization parameters, loop filter parameters, and/or other syntax elements. The entropy decoding block 304 may be configured to employ decoding algorithms or schemes corresponding to the encoding schemes as described with respect to the entropy encoding module 270 of the encoder 20. The entropy decoding block 304 may be further configured to provide inter prediction parameters, an intra prediction parameter, and/or other syntax elements to mode selection block 360 and other parameters to other blocks of decoder 30. Video decoder 30 may receive syntax elements at the video slice level and/or video block level.

Обратное квантованиеInverse quantization

Блок 310 обратного квантования может быть сконфигурирован для приема параметров квантования (QP) (или, в общем, информации, относящейся к обратному квантованию) и квантованных коэффициентов из данных 21 закодированной картинки (например, путем анализа и/или декодирования, например, путем блока 304 энтропийного декодирования) и применять на основе параметров квантования обратное квантование к декодированным квантованным коэффициентам 309 для получения деквантованных коэффициентов 311, которые также могут называться коэффициентами 311 преобразования. Процесс обратного квантования может включать в себя использование параметра квантования, определенного видеокодером 20 для каждого видеоблока в слайсе видео, для определения степени квантования и, аналогично, степени обратного квантования, которое должно быть применено.An inverse quantization block 310 may be configured to receive quantization parameters (QPs) (or, more generally, information related to inverse quantization) and quantized coefficients from the encoded picture data 21 (e.g., by parsing and/or decoding, e.g., by block 304 entropy decoding) and apply, based on the quantization parameters, inverse quantization to the decoded quantized coefficients 309 to obtain dequantized coefficients 311, which may also be referred to as transform coefficients 311. The inverse quantization process may include using a quantization parameter determined by video encoder 20 for each video block in the video slice to determine the degree of quantization and, likewise, the degree of inverse quantization to be applied.

Обратное преобразованиеReverse conversion

Блок 312 обработки обратного преобразования может быть выполнен с возможностью приема деквантованных коэффициентов 311, также именуемых коэффициентами 311 преобразования, и применения преобразования к деквантованным коэффициентам 311 для того, чтобы получить восстановленные остаточные блоки 213 в области выборок. Восстановленные остаточные блоки 213 также могут именоваться блоками 313 преобразования. Преобразование может быть обратным преобразованием, например, обратным DCT, обратным DST, обратным целочисленным преобразованием или концептуально аналогичным процессом обратного преобразования. Блок 312 обработки обратного преобразования может быть дополнительно сконфигурирован для приема параметров преобразования или соответствующей информации из данных 21 закодированной картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования) для определения преобразования, которое должно применяться к деквантованным коэффициентам 311.The inverse transform processing unit 312 may be configured to receive the dequantized coefficients 311, also referred to as transform coefficients 311, and apply a transform to the dequantized coefficients 311 to obtain reconstructed residual blocks 213 in the sample region. The reconstructed residual blocks 213 may also be referred to as transform blocks 313. The conversion may be an inverse transform, such as an inverse DCT, an inverse DST, an integer integer transform, or a conceptually similar inverse transform process. The inverse transform processing unit 312 may be further configured to receive transform parameters or corresponding information from the encoded picture data 21 (e.g., by parsing and/or decoding, e.g., by entropy decoding unit 304) to determine the transform to be applied to the dequantized coefficients 311.

ВосстановлениеRecovery

Блок 314 восстановления (например, сумматор или сумматор 314) может быть сконфигурирован для добавления восстановленного остаточного блока 313 к блоку 365 предсказания для получения восстановленного блока 315 в области выборки, например, путем добавления значений выборок восстановленного остаточного блока 313 и значений выборки блока 365 предсказания.The reconstruction block 314 (e.g., adder or adder 314) may be configured to add the reconstructed residual block 313 to the prediction block 365 to obtain the reconstructed block 315 in the sample region, for example, by adding the sample values of the reconstructed residual block 313 and the sample values of the prediction block 365.

ФильтрацияFiltration

Блок 320 контурного фильтра (либо в контуре кодировки, либо после контура кодировки) сконфигурирован для фильтрации восстановленного блока 315 для получения отфильтрованного блока 321, например, для сглаживания переходов пикселей или иного улучшения качества видео. Блок 320 контурного фильтра может содержать один или несколько контурных фильтров, таких как де-блочный фильтр, фильтр с адаптивным смещением (SAO) или один или несколько других фильтров, например, двусторонний фильтр, адаптивный контурный фильтр (ALF), фильтры резкости, сглаживающие фильтры или коллаборативные фильтры, или любая их комбинация. Хотя блок 320 контурного фильтра показан на Фиг.3 как контурный фильтр, в других конфигурациях блок 320 контурного фильтра может быть реализован как постконтурный фильтр.A loop filter block 320 (either in the encoding loop or after the encoding loop) is configured to filter the reconstructed block 315 to produce a filtered block 321, for example, to smooth pixel transitions or otherwise improve video quality. The edge filter block 320 may include one or more edge filters, such as a de-blocking filter, an adaptive offset filter (SAO), or one or more other filters, such as a two-way filter, an adaptive edge filter (ALF), sharpening filters, anti-aliasing filters or collaborative filters, or any combination thereof. Although loop filter block 320 is shown in FIG. 3 as a loop filter, in other configurations, loop filter block 320 may be implemented as a post-loop filter.

Буфер декодированных картинокBuffer of decoded pictures

Декодированные видеоблоки 321 картинки затем сохраняются в буфере 330 декодированных картинок, который сохраняет декодированные картинки 331 в качестве опорных картинок для последующей компенсации движения для других картинок и/или для вывода, соответственно, отображения.The decoded video picture blocks 321 are then stored in a decoded picture buffer 330, which stores the decoded pictures 331 as reference pictures for subsequent motion compensation for other pictures and/or for output or display.

Декодер 30 выполнен с возможностью вывода декодированной картинки 311, например, через выход 312 для представления или просмотра пользователю.The decoder 30 is configured to output the decoded picture 311, for example, through an output 312 for presentation or viewing to the user.

ПредсказаниеPrediction

Блок 344 внешнего предсказания может быть идентичен блоку 244 внешнего предсказания (в частности, модулю компенсации движения), а блок 354 внутреннего предсказания может быть идентичен блоку 254 внешнего предсказания по функциям и выполняет решения о разделении или разбиении и прогнозирование на основе о параметрах разделения и/или предсказания или соответствующей информации, принятой из данных 21 закодированной картинки (например, путем синтаксического анализа и/или декодирования, например, посредством блока 304 энтропийного декодирования). Блок 360 выбора режима может быть сконфигурирован для выполнения предсказания (внутреннее или внешнее предсказание) для каждого блока на основе восстановленных картинок, блоков или соответствующих выборок (фильтрованных или нефильтрованных) для получения блока 365 предсказания.The inter-prediction block 344 may be identical to the inter-prediction block 244 (in particular, the motion compensation module), and the intra-prediction block 354 may be identical to the inter-prediction block 254 in function and performs division or partitioning decisions and prediction based on the division parameters and/or or prediction or corresponding information received from the encoded picture data 21 (eg, by parsing and/or decoding, eg, by entropy decoding unit 304). The mode selector 360 may be configured to perform prediction (intra or inter prediction) for each block based on the reconstructed pictures, blocks, or corresponding samples (filtered or unfiltered) to obtain a prediction block 365.

Когда слайс видео кодируется как слайс с внутренним кодированием (I), блок 354 внутреннего предсказания блока 360 выбора режима конфигурируется для генерирования блока 365 предсказания для блока картинки текущего слайса видео на основе сигнального режима внутреннего предсказания и данных из ранее декодированных блоков текущей картинки. Когда видеокартинка кодируется как внешне кодированная (то есть B или P) слайс, блок 344 внешнего предсказания (например, блок компенсации движения) блока 360 выбора режима конфигурируется для создания блоков 365 предсказания для видеоблока текущего слайса видео на основе векторов движения и других элементов синтаксиса, принятых от блока 304 энтропийного декодирования. Для внешнего предсказания блоки предсказания могут быть созданы из одной из опорных картинок в пределах одного из списков опорных картинок. Видеодекодер 30 может строить списки опорных кадров, Список 0 и Список 1, используя методики построения по умолчанию на основе опорных картинок, хранящихся в DPB 330.When a video slice is encoded as an intra-encoded (I) slice, the intra prediction block 354 of the mode selection block 360 is configured to generate a prediction block 365 for a picture block of the current video slice based on the intra prediction signal mode and data from previously decoded current picture blocks. When a video picture is encoded as an externally encoded (i.e., B or P) slice, an external prediction block 344 (e.g., a motion compensation block) of the mode selection block 360 is configured to create prediction blocks 365 for the video block of the current video slice based on motion vectors and other syntax elements. received from the entropy decoding unit 304. For inter-prediction, prediction blocks may be created from one of the reference pictures within one of the reference picture lists. Video decoder 30 may construct reference picture lists, List 0 and List 1, using default construction techniques based on reference pictures stored in DPB 330.

Блок 360 выбора режима сконфигурирован для определения информации предсказания для видеоблока текущего слайса видео путем синтаксического анализа векторов движения и других элементов синтаксиса и использует информацию предсказания для создания блоков предсказания для текущего декодируемого видеоблока. Например, блок 360 выбора режима использует некоторые из принятых элементов синтаксиса для определения режима предсказания (например, внутреннее или внешнее предсказание), используемого для кодирования видеоблоков слайса видео, тип слайса внешнего предсказания (например, B-слайс, P-слайс или GPB-слайс), информацию о конструкции для одного или нескольких списков опорных картинок для слайса, векторы движения для каждого внешнекодированного видеоблока слайса, статус внешнего предсказания для каждого внешнекодированного видеоблока слайса и другую информацию для декодирования видеоблоков в текущем слайсе видео.The mode selector 360 is configured to determine prediction information for a video block of the current video slice by parsing motion vectors and other syntax elements, and uses the prediction information to create prediction blocks for the current video block to be decoded. For example, mode selector 360 uses some of the received syntax elements to determine the prediction mode (eg, intra or inter prediction) used to encode video slice video blocks, the type of inter prediction slice (eg, B-slice, P-slice, or GPB slice ), design information for one or more reference picture lists for a slice, motion vectors for each outer-coded video block of the slice, inter-prediction status for each outer-coded video block of the slice, and other information for decoding video blocks in the current video slice.

Другие варианты видеодекодера 30 могут использоваться для декодирования данных 21 закодированной картинки. Например, декодер 30 может создавать выходной видеопоток без блока 320 контурной фильтрации. Например, декодер 30, не основанный на преобразовании, может выполнять обратное квантование остаточного сигнала напрямую без блока 312 обработки обратного преобразования для некоторых блоков или кадров. В другой реализации видеодекодер 30 может иметь блок 310 обратного квантования и блок 312 обработки обратного преобразования, объединенные в один блок.Other embodiments of the video decoder 30 may be used to decode the encoded picture data 21. For example, decoder 30 may produce an output video stream without loop filtering block 320. For example, the non-transform decoder 30 may perform inverse quantization of the residual signal directly without detransforming processing unit 312 for some blocks or frames. In another implementation, video decoder 30 may have an inverse quantization block 310 and an inverse transform processing block 312 combined into one block.

Следует понимать, что в кодере 20 и декодере 30 результат обработки некоторого текущего этапа может быть обработан дополнительно, а затем выведен на следующий этап.Например, после интерполяционной фильтрации, получения вектора движения или контурной фильтрации, дополнительная операция, такая как Clip (усечение) или смещение, может выполняться над результатом обработки интерполяционной фильтрации, получения вектора движения или контурной фильтрации.It should be understood that in encoder 20 and decoder 30, the processing result of some current step may be further processed and then output to the next step. For example, after interpolation filtering, motion vector acquisition, or contour filtering, an additional operation such as Clip or offset, can be performed on the result of interpolation filtering, motion vector, or contour filtering processing.

Следует отметить, что дополнительные операции могут применяться к выведенным векторам движения текущего блока (в том числе, но без ограничения, к векторам движения контрольной точки аффинного режима, векторам движения субблока в аффинном, планарном, ATMVP режимах, временным векторам движения и тому подобному). Например, значение вектора движения ограничивается предопределенным диапазоном в соответствии с его представляющим битом. Если представляющий бит вектора движения является bitDepth (битовой глубиной), тогда диапазон составляет -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, где «^» означает возведение в степень. Например, если bitDepth равна 16, диапазон составляет -32768~32767; если bitDepth равна 18, диапазон составляет -131072~131071. Например, значение производного вектора движения (например, MV четырех субблоков 4×4 в одном блоке 8×8) ограничено таким образом, чтобы максимальная разность между целыми частями четырех MV субблока 4×4 не превышала N пикселей, например, не более 1 пикселя. Здесь представлены два способа ограничения вектора движения в соответствии с bitDepth.It should be noted that additional operations may be applied to the derived motion vectors of the current block (including, but not limited to, affine mode checkpoint motion vectors, affine mode, planar, ATMVP mode subblock motion vectors, temporary motion vectors, and the like). For example, the value of a motion vector is limited to a predefined range according to its representing bit. If the representing bit of the motion vector is bitDepth, then the range is -2^(bitDepth-1) ~ 2^(bitDepth-1)-1, where "^" means exponentiation. For example, if bitDepth is 16, the range is -32768~32767; if bitDepth is 18, the range is -131072~131071. For example, the value of a derived motion vector (eg, MVs of four 4x4 subblocks in one 8x8 block) is limited such that the maximum difference between the integer parts of the four MVs of a 4x4 subblock is no more than N pixels, eg, no more than 1 pixel. Here are two ways to constrain the motion vector according to bitDepth.

Способ 1: удаление MSB (старшего бита) переполнения посредством потоковых операцийMethod 1: Removing MSB (Most Significant Bit) Overflow via Streaming Operations

где mvx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, mvy представляет собой вертикальную компоненту вектора движения блока изображения или субблока, а ux и uy указывает промежуточное значение.where mvx represents the horizontal component of the motion vector of the image block or sub-block, mvy represents the vertical component of the motion vector of the image block or sub-block, and ux and uy indicate an intermediate value.

Например, если значение mvx равно -32769, после применения формул (1) и (2) результирующее значение равняется 32767. В компьютерной системе десятичные числа хранятся как дополнение до двойки. Дополнением до двойки для -32769 является 1,0111,1111,1111,1111 (17 битов), затем MSB отбрасывается, поэтому результирующим дополнением до двойки является 0111,1111,1111,1111 (десятичное число составляет 32767), что совпадает с выходными данными от применения формул (1) и (2).For example, if the value of mvx is -32769, after applying formulas (1) and (2), the resulting value is 32767. In a computer system, decimal numbers are stored as two's complement. The two's complement for -32769 is 1,0111,1111,1111,1111 (17 bits), then the MSB is discarded, so the resulting two's complement is 0111,1111,1111,1111 (decimal is 32767), which is the same as the output from the application of formulas (1) and (2).

Операции могут применяться во время суммирования mvp и mvd, как показано в формулах с (5) по (8).Operations can be applied during the summation of mvp and mvd, as shown in formulas (5) to (8).

Способ 2: удаление MSB переполнения посредством усечения значенияMethod 2: Remove MSB overflow by truncating the value

где vx представляет собой горизонтальную компоненту вектора движения блока изображения или субблока, vy представляет собой вертикальную компоненту вектора движения блока изображения или субблока; x, y и z соответственно соответствуют трем входным значениям процесса усечения MV, а определение функции Clip3 является следующим:where vx represents the horizontal component of the motion vector of the image block or sub-block, vy represents the vertical component of the motion vector of the image block or sub-block; x, y and z respectively correspond to the three input values of the MV clipping process, and the definition of the Clip3 function is as follows:

Фиг.4 является схематичным представлением устройства 400 видеокодировки согласно варианту осуществления настоящего раскрытия. Устройство 400 видеокодировки подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. В варианте осуществления устройство 400 видеокодировки может быть декодером, таким как видеодекодер 30 по ФИГ. 1A, или кодером, таким как видеокодер 20 по ФИГ. 1А.FIG. 4 is a schematic diagram of a video encoding apparatus 400 according to an embodiment of the present disclosure. Video encoding apparatus 400 is suitable for implementing the disclosed embodiments that are described herein. In an embodiment, video encoding device 400 may be a decoder, such as video decoder 30 of FIG. 1A, or an encoder such as video encoder 20 of FIG. 1A.

Устройство 400 видеокодировки содержит входные порты 410 (или порты 410 ввода) и блоки 420 (Rx) приемника для приема данных; процессор, логический блок или центральный процессор (CPU) 430 для обработки данных; блоки 440 (Tx) передатчика и выходные порты 450 (или порты 450 вывода) для передачи данных; и память 460 для хранения данных. Устройство 400 видеокодировки также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 410, блокам 420 приемника, блокам 440 передатчика и выходным портам 450 для обеспечения входа или выхода оптических или электрических сигналов.The video encoding device 400 includes input ports 410 (or input ports 410) and receiver (Rx) blocks 420 for receiving data; a processor, logical unit, or central processing unit (CPU) 430 for processing data; transmitter (Tx) blocks 440 and output ports 450 (or output ports 450) for data transmission; and a memory 460 for storing data. Video encoding device 400 may also include optical-to-electrical (OE) components and electrical-to-optical (EO) components connected to input ports 410, receiver units 420, transmitter units 440, and output ports 450 to provide optical or optical input or output. electrical signals.

Процессор 430 реализуется аппаратным обеспечением и программным обеспечением. Процессор 430 может быть реализован в виде одного или более CPU-чипов, ядер (например, в виде многоядерного процессора), FPGA, ASIC и DSP. Процессор 430 поддерживает связь с входными портами 410, блоками 420 приемника, блоками 440 передатчика, выходными портами 450 и памятью 460. Процессор 430 содержит модуль 470 кодировки. Модуль 470 кодировки реализует раскрытые варианты осуществления, описанные выше. Например, модуль 470 кодировки реализует, обрабатывает, подготавливает или предоставляет различные операции кодировки. Следовательно, включение модуля 470 кодировки обеспечивает существенное улучшение функциональных возможностей устройства 400 видеокодировки и обеспечивает трансформацию устройства 400 видеокодировки в другое состояние. В качестве альтернативы модуль 470 кодировки реализуется как инструкции, хранящиеся в памяти 460 и исполняемые процессором 430.The processor 430 is implemented in hardware and software. Processor 430 may be implemented as one or more CPU chips, cores (eg, a multi-core processor), FPGA, ASIC, and DSP. Processor 430 communicates with input ports 410, receiver units 420, transmitter units 440, output ports 450, and memory 460. Processor 430 includes an encoding module 470. Encoding module 470 implements the disclosed embodiments described above. For example, encoding module 470 implements, processes, prepares, or provides various encoding operations. Therefore, the inclusion of the encoding module 470 provides a significant improvement in the functionality of the video encoding device 400 and allows the video encoding device 400 to be transformed into a different state. Alternatively, encoding module 470 is implemented as instructions stored in memory 460 and executed by processor 430.

Память 460 может содержать один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных переполнения для хранения программ, когда такие программы выбраны для исполнения, и для хранения инструкций и данных, которые считываются во время исполнения программ. Память 460 может быть, например, энергозависимой и/или энергонезависимой и может быть постоянной памятью (ROM), оперативной памятью (RAM), троичной ассоциативной памятью (TCAM) и/или статической оперативной памятью (SRAM).Memory 460 may include one or more disks, tape drives, and solid-state drives and may be used as an overflow storage device for storing programs when such programs are selected for execution and for storing instructions and data that are read during execution of the programs. Memory 460 may be, for example, volatile and/or non-volatile and may be read only memory (ROM), random access memory (RAM), ternary memory associative memory (TCAM), and/or static random access memory (SRAM).

Фиг.5 является упрощенной блок-схемой аппаратуры 500, которая может использоваться как одно или оба из устройства-источника 12 и устройства-получателя 14 с Фиг.1 согласно примерному варианту осуществления. FIG. 5 is a simplified block diagram of apparatus 500 that may be used as one or both of source device 12 and sink device 14 of FIG. 1 according to an exemplary embodiment .

Процессор 502 в аппаратуре 500 может быть центральным процессором. В качестве альтернативы, процессор 502 может быть устройством любого другого типа или множеством устройств, способных манипулировать или обрабатывать информацию, которая существует в настоящее время или будет разработана в будущем. Хотя раскрытые реализации могут быть осуществлены на практике с одним процессором, как показано, например, с процессором 502, преимущества в скорости и эффективности могут быть достигнуты с использованием более одного процессора.The processor 502 in the hardware 500 may be a central processing unit. Alternatively, processor 502 may be any other type of device or plurality of devices capable of manipulating or processing information that currently exists or will be developed in the future. Although the disclosed implementations may be practiced with a single processor, as shown, for example, with processor 502, speed and efficiency benefits may be achieved by using more than one processor.

Память 504 в аппаратуре 500 может быть постоянной памятью (ROM) или устройством оперативной памяти (RAM) в некоторой реализации. В качестве памяти 504 может использоваться запоминающее устройство любого другого подходящего типа устройства. Память 504 может включать в себя код и данные 506, доступ к которым осуществляется процессором 502 с использованием шины 512. Память 504 может дополнительно включать в себя операционную систему 508 и прикладные программы 510, причем прикладные программы 510 включают в себя по меньшей мере одну программу, которая позволяет процессору 502 выполнять описанные в данном документе способы. Например, прикладные программы 510 могут включать в себя приложения с 1 по N, которые дополнительно включают в себя приложение видеокодировки, которое выполняет описанные в данном документе способы.Memory 504 in hardware 500 may be read-only memory (ROM) or random access memory (RAM) in some implementation. Memory 504 may be any other suitable type of storage device. Memory 504 may include code and data 506 accessed by processor 502 using bus 512. Memory 504 may further include an operating system 508 and application programs 510, wherein application programs 510 include at least one program which allows the processor 502 to perform the methods described herein. For example, application programs 510 may include applications 1 through N, which further include a video encoding application that performs the methods described herein.

Аппаратура 500 может также включать в себя одно или более устройств вывода, например, дисплей 518. Дисплей 518 может быть, в одном примере, дисплеем, чувствительным к касанию, который объединяет дисплей с элементом, чувствительным к касанию, способным воспринимать сенсорные вводы (касанием). Дисплей 518 может быть соединен с процессором 502 через шину 512.The apparatus 500 may also include one or more output devices, such as a display 518. The display 518 may be, in one example, a touch-sensitive display that combines a display with a touch-sensitive element capable of sensing touch inputs. . Display 518 may be coupled to processor 502 via bus 512.

Хотя здесь изображена как одна шина, шина 512 аппаратуры 500 может состоять из множественных шин. Кроме того, вторичное хранилище 514 может быть напрямую связано с другими компонентами аппаратуры 500 или может быть доступно через сеть и может содержать один встраиваемый блок, такой как карта памяти, или множество блоков, таких как множество карт памяти. Таким образом, аппаратура 500 может быть реализована в самых разнообразных конфигурациях.Although depicted here as a single bus, bus 512 of apparatus 500 may be composed of multiple buses. In addition, secondary storage 514 may be directly coupled to other components of hardware 500 or may be accessible over a network and may comprise a single plug-in unit, such as a memory card, or multiple units, such as multiple memory cards. Thus, the apparatus 500 can be implemented in a wide variety of configurations.

Контурный фильтрLoop filter

Всего в VTM3 есть три контурных фильтра. Помимо фильтра удаления блочности и SAO (двух контурных фильтров в HEVC), в VTM3 применяется адаптивный контурный фильтр (ALF). Порядок фильтрации в VTM3 - это фильтр удаления блочности, SAO и ALF.There are a total of three loop filters in the VTM3. In addition to the deblocking filter and SAO (two loop filters in HEVC), VTM3 uses an adaptive loop filter (ALF). The filter order in VTM3 is deblocking, SAO and ALF filter.

ALFA.L.F.

В VTM5 применяется адаптивный контурный фильтр (ALF) с блочной адаптацией фильтра. Для компонента яркости один из 25 фильтров выбирается для каждого блока 4 × 4 на основе направления и активности локальных градиентов.VTM5 uses an adaptive loop filter (ALF) with block filter adaptation. For the luminance component, one of 25 filters is selected for each 4 × 4 block based on the direction and activity of local gradients.

Форма фильтра:Filter shape:

В JEM используются две формы ромбов фильтров (как показано на рисунке 6) для компонента яркости. Форма ромба 7 × 7 применяется для компонента яркости, а форма ромба 5 × 5 применяется для компонента цветности.JEM uses two filter diamond shapes (as shown in Figure 6) for the luminance component. A 7 × 7 diamond shape is used for the luma component, and a 5 × 5 diamond shape is used for the chrominance component.

Классификация блоков:Block classification:

Для компонента яркости каждый блок 4 × 4 относится к одному из 25 классов. Классификационный индекс C выводится на основе его направленности D и квантованного значения активности следующим образом: For the luminance component, each 4 × 4 block belongs to one of 25 classes. The classification index C is derived based on its directionality D and quantized activity value in the following way :

Чтобы вычислить и сначала вычисляются градиенты в горизонтальном, вертикальном и двух диагональных направлениях с использованием одномерного лапласиана:To calculate And First, gradients in the horizontal, vertical, and two diagonal directions are calculated using the one-dimensional Laplacian:

Где индексы и относятся к координатам верхней левой выборки в блоке 4 × 4, а R(i, j) указывает восстановленную выборку в координате .Where are the indices? And refer to the coordinates of the top left sample in the 4 × 4 block, and R(i, j) indicates the reconstructed sample at the coordinate .

Чтобы упростить классификацию блоков, применяется одномерное вычисление лапласиана с подвыборкой. Как показано на Фиг.7 (a)-(d), для расчета градиента во всех направлениях используются одни и те же субдискретизированные позиции.To simplify block classification, a one-dimensional Laplacian calculation with subsampling is used. As shown in Fig. 7(a)-(d), the same subsampled positions are used to calculate the gradient in all directions.

Тогда максимальное и минимальное значения градиентов горизонтального и вертикального направлений задаются как:Then the maximum and minimum values the gradients of the horizontal and vertical directions are specified as:

, ,

Максимальное и минимальное значения градиента двух диагональных направлений устанавливаются как:The maximum and minimum gradient values of the two diagonal directions are set as:

, ,

Чтобы получить значение направленности , эти значения сравниваются друг с другом и с двумя пороговыми значениями и To get the directional value , these values are compared with each other and with two threshold values And

ЭТАП 1. Если и истинны, устанавливается в . STAGE 1 . If And are true installed in .

ЭТАП 2. Если , продолжить с этапа 3; в противном случае продолжить с этапа 4. STEP 2. If , continue from step 3; otherwise continue from step 4.

ЭТАП 3. Если , устанавливается в , иначе D устанавливается в 1. STEP 3. If , installed in , otherwise D is set to 1.

ЭТАП 4. Если , D устанавливается в , иначе устанавливается в 3. STEP 4. If , D is set to , otherwise is set to 3.

Значение A активности вычисляется как:The activity A value is calculated as:

A дополнительно квантуется до диапазона от 0 до 4 включительно, и квантованное значение обозначается .A is further quantized to the range 0 to 4 inclusive, and the quantized value is denoted .

Для компонентов цветности в картинке способ классификации не применяется, т.е. для каждого компонента цветности применяется один набор коэффициентов ALF.For chromaticity components in a picture, the classification method is not applied, i.e. For each chrominance component, one set of ALF coefficients is applied.

Геометрические преобразования коэффициентов фильтраGeometric transformations of filter coefficients

Перед фильтрацией каждого блока яркости 4 × 4 к коэффициентам f(k, l) фильтра применяются геометрические преобразования, такие как вращение или диагональный и вертикальный переворот, в зависимости от значений градиента, вычисленных для этого блока. Это эквивалентно применению этих преобразований к выборкам в области поддержки фильтра. Идея состоит в том, чтобы сделать разные блоки, к которым применяется ALF, более похожими, выровняв их направленность.Before filtering each 4 × 4 luma block, geometric transformations such as rotation or diagonal and vertical flip are applied to the filter coefficients f(k, l) depending on the gradient values computed for that block. This is equivalent to applying these transformations to the samples in the filter support region. The idea is to make the different blocks that ALF is applied to more similar by aligning their directionality.

Введены три геометрических преобразования, в том числе диагональный, вертикальный переворот и вращение:Three geometric transformations are introduced, including diagonal, vertical flip and rotation:

Диагональный: fDk, Diagonal: fDk,

Вертикальный переворот: Vertical flip:

Вращение: fRk, Rotation: fRk,

где размер фильтра, а 0≤k, l≤K-1 - координаты коэффициентов, так что местоположение 0,0 находится в верхнем левом углу, а местоположение K-1, K-1 находится в нижнем правом углу. Преобразования применяются к коэффициентам f(k, l) фильтра в зависимости от значений градиента, вычисленных для этого блока. Взаимосвязь между преобразованием и четырьмя градиентами в четырех направлениях суммирована в следующей таблице.Where the size of the filter, and 0≤k, l≤K-1 are the coordinates of the coefficients, so that the location 0,0 is in the upper left corner, and the location K-1, K-1 is in the lower right corner. Transformations are applied to the filter coefficients f(k, l) depending on the gradient values computed for that block. The relationship between the transformation and the four gradients in the four directions is summarized in the following table.

Таблица 1 Отображение градиента, вычисленного для одного блока, и преобразованийTable 1 Display of gradient calculated for one block and transformations Значения градиентаGradient values ПреобразованиеConversion gd2<gd1 and gh<gv g d2< g d1 and g h< g v Без преобразованияNo conversion gd2<gd1 and gv<gh g d2< g d1 and g v< g h ДиагональныйDiagonal gd1<gd2 and gh<gv g d1< g d2 and g h< g v Вертикальный переворотVertical flip gd1<gd2 and gv<gh g d1< g d2 and g v< g h ВращениеRotation

Сигнализация параметров фильтраFilter parameters alarm

В VTM3 параметры фильтра ALF сообщаются в заголовке слайса. Может передаваться до 25 наборов коэффициентов фильтра яркости. Чтобы уменьшить накладные расходы на биты, коэффициенты фильтра различной классификации могут быть объединены.In VTM3, the ALF filter parameters are communicated in the slice header. Up to 25 sets of luminance filter coefficients can be transmitted. To reduce bit overhead, filter coefficients of different classifications can be combined.

Процесс фильтрации можно контролировать на уровне CTB. Флаг всегда сигнализируется, чтобы указать, применяется ли ALF к CTB яркости. Для каждого CTB цветности может сигнализироваться флаг, указывающий, применяется ли ALF к CTB цветности, в зависимости от значения alf_chroma_ctb_present_flag.The filtration process can be controlled at the CTB level. The flag is always signaled to indicate whether ALF is applied to the luminance CTB. For each chroma CTB, a flag may be signaled indicating whether ALF applies to the chroma CTB, depending on the value of alf_chroma_ctb_present_flag.

Коэффициенты фильтра квантуются с нормой 128. Чтобы еще больше ограничить сложность умножения, применяется соответствие битового потока, согласно которому значение коэффициента центральной позиции должно быть в диапазоне от 0 до 28, а значения коэффициентов остальных позиций должны находиться в диапазоне от -27 до 27-1, включительно.The filter coefficients are quantized at a rate of 128. To further limit the complexity of the multiplication, bitstream matching is applied, whereby the coefficient value of the central position must be in the range from 0 to 2 8, and the coefficient values of the remaining positions must be in the range from -2 7 to 2 7 -1, inclusive.

Процесс фильтрацииFiltration process

На стороне декодера, когда ALF включен для CTB, каждая выборка R(i, j) в CU фильтруется, в результате получается значение выборки , как показано ниже, где L обозначает длину фильтра, fm, n представляет коэффициент фильтра, а f(k, l) обозначает декодированные коэффициенты фильтра. On the decoder side, when ALF is enabled for CTB, each sample R(i, j) in the CU is filtered, resulting in a sample value , as shown below, where L denotes the filter length, f m, n represents the filter coefficient, and f(k, l) denotes the decoded filter coefficients.

Или фильтрация также может быть выражена как Or filtering can also be expressed as

где выборки I (x+i, y+j) являются входными выборками, O(x, y) - это отфильтрованная выходная выборка (т.е. результат фильтрации), а обозначает коэффициенты фильтра, где выборки I (x+i, y+j) - входные выборки, O(x, y) - отфильтрованные выходные выборки (т.е. результат фильтрации), а обозначает коэффициенты фильтра. На практике в VTM реализовано с использованием целочисленной арифметики для вычислений с точностью до фиксированной точки:where the samples I (x+i, y+j) are the input samples, O(x, y) is the filtered output sample (i.e. the result of the filtering), and denotes the filter coefficients, where the samples I (x+i, y+j) are the input samples, O(x, y) are the filtered output samples (i.e. the filtering result), and denotes the filter coefficients. In practice, VTM is implemented using integer arithmetic for fixed-point precision calculations:

где L обозначает длину фильтра, а коэффициенты фильтра с точностью до фиксированной точки.where L denotes the length of the filter, and filter coefficients with fixed-point accuracy.

Начиная с VTM5 (ITU JVET-N0242), ALF выполняется нелинейным образом. Уравнение 21 можно сформулировать следующим образом:Since VTM5 (ITU JVET-N0242), ALF is performed in a non-linear manner. Equation 21 can be formulated as follows:

Где те же коэффициенты фильтра, что и в уравнении (22) [за исключением который равен 1 в уравнении (23), тогда как он равен в уравнении (21].Where same filter coefficients as in equation (22) [except which is equal to 1 in equation (23), whereas it is equal to in equation (21).

Фильтр дополнительно модифицируется путем введения нелинейности, чтобы сделать ALF более эффективным за счет использования функции усечения, чтобы уменьшить влияние значений соседних выборок ((Ix+i, y+j), когда они слишком отличаются от отфильтрованного значения () текущей выборки.The filter is further modified by introducing nonlinearity to make ALF more efficient by using a truncation function to reduce the influence of neighboring sample values ((Ix+i, y+j) when they are too different from the filtered value ( ) of the current sample.

В VTM5 фильтр ALF модифицирован следующим образом:In VTM5 the ALF filter is modified as follows:

где - функция усечения, а k(i, j) - параметры усечения, которые зависят от коэффициента (i, j) фильтра. Параметры усечения указываются для каждого фильтра ALF, одно значение усечения сигнализируется на каждый коэффициент фильтра. Это означает, что до 12 значений усечения могут передаваться в битовом потоке на фильтр яркости и до 6 значений усечения для фильтра цветности.Where is the truncation function, and k(i, j) are the truncation parameters, which depend on the coefficient (i, j) of the filter. Truncation Options are specified for each ALF filter, one cutoff value is signaled per filter coefficient. This means that up to 12 cutoff values can be passed in the bitstream for the luma filter and up to 6 cutoff values for the chrominance filter.

Чтобы ограничить затраты на сигнализацию и сложность кодера, оценка значений усечения сводится к небольшому набору возможных значений. В VTM5 используются только 4 возможных фиксированных значения, которые одинаковы для групп тайлов INTER и INTRA.To limit signaling overhead and encoder complexity, the estimation of truncation values is reduced to a small set of possible values. VTM5 uses only 4 possible fixed values, which are the same for INTER and INTRA tile groups.

Поскольку дисперсия локальных различий часто выше для яркости, чем для цветности, используются два разных набора значений усечения для фильтров яркости и цветности. Значения усечения также включают в себя максимальное значение выборки (здесь 1024 для 10-битной глубины) в каждом наборе, так что усечение можно отключить, если в нем нет необходимости.Because the variance of local differences is often higher for luma than for chrominance, two different sets of cutoff values are used for the luma and chrominance filters. The truncation values also include the maximum sample value (here 1024 for 10-bit depth) in each set, so truncation can be disabled if it is not needed.

Наборы значений усечения, используемые в VTM5, представлены в таблице 2. 4 значения были выбраны путем примерно равного разделения в логарифмической области полного диапазона значений выборки (закодированных на 10 битах) для яркости и диапазона от 4 до 1024 для цветности.The sets of truncation values used in VTM5 are presented in Table 2. The 4 values were selected by approximately equally dividing in the logarithmic domain the full range of sample values (encoded at 10 bits) for luma and the range from 4 to 1024 for chrominance.

Точнее, таблица яркости значений усечения была получена по следующей формуле:More precisely, the brightness table of truncation values was obtained using the following formula:

где M=210 и N=4. where M=2 10 and N=4.

Точно так же таблицы цветности значений усечения получаются по следующей формуле:Similarly, chromaticity tables of truncation values are obtained using the following formula:

где M=210, N=4 и A=4. where M=2 10 , N=4 and A=4.

Группа плитки INTRA/INTERINTRA/INTER tile group LUMA (яркость)LUMA (brightness) { 1024, 181, 32, 6 }{ 1024, 181, 32, 6 } ХРОМА (цветность)CHROME (chroma) { 1024, 161, 25, 4 }{ 1024, 161, 25, 4 }

Таблица 2: Авторизованные значения усеченияTable 2: Authorized truncation values

Другой контурный фильтрOther loop filter

Всего в VVC есть три внутриконтурных фильтра. Помимо фильтра удаления блочности и SAO (двух контурных фильтров в HEVC) применяется адаптивный контурный фильтр (ALF). ALF состоит из ALF яркости, ALF цветности и кросс-компонентного ALF (CC-ALF). Процесс фильтрации ALF разработан таким образом, что ALF яркости, ALF цветности и CC-ALF могут выполняться параллельно. Порядок фильтрации в VVC - это фильтр удаления блочности, SAO и ALF. SAO в VVC такая же, как и в HEVC.There are a total of three in-circuit filters in VVC. In addition to the deblocking filter and SAO (two loop filters in HEVC), an adaptive loop filter (ALF) is used. The ALF consists of a luma ALF, a chrominance ALF, and a cross-component ALF (CC-ALF). The ALF filtering process is designed such that luma ALF, chrominance ALF and CC-ALF can be executed in parallel. The filtering order in VVC is deblocking, SAO and ALF filter. SAO in VVC is the same as in HEVC.

В VVC был добавлен новый процесс, называемый сопоставлением яркости с масштабированием цветности (этот процесс ранее был известен как адаптивный внутриконтурный преобразователь). LMCS модифицирует значения выборки перед кодированием и после реконструкции путем перераспределения кодовых слов по всему динамическому диапазону. Этот новый процесс выполняется перед снятием блокировки.A new process has been added to VVC called luminance matching with chrominance scaling (this process was previously known as adaptive in-loop converter). LMCS modifies sample values before encoding and after reconstruction by redistributing codewords across the entire dynamic range. This new process is executed before the lock is released.

Адаптивный контурный фильтрAdaptive Loop Filter

В VVC применяется адаптивный контурный фильтр (ALF) с блочной адаптацией фильтра. Для компонента яркости один из 25 фильтров выбирается для каждого блока 4×4 на основе направления и активности локальных градиентов.VVC uses an adaptive loop filter (ALF) with block filter adaptation. For the luminance component, one of 25 filters is selected for each 4x4 block based on the direction and activity of local gradients.

Форма фильтра:Filter shape:

Используются две формы ромбов фильтров (как показано на рисунке 6). Форма ромба 7×7 применяется для компонента яркости, а форма ромба 5×5 применяется для компонентов цветности.Two filter diamond shapes are used (as shown in Figure 6). A 7x7 diamond shape is used for the luma component, and a 5x5 diamond shape is used for the chrominance components.

Классификация блоков:Block classification:

Для компонента яркости каждый блок 4 × 4 относится к одному из 25 классов. Классификационный индекс C выводится на основе его направленности D и квантованного значения активности следующим образом: For the luminance component, each 4 × 4 block belongs to one of 25 classes. The classification index C is derived based on its directionality D and quantized activity value in the following way:

Чтобы вычислить и сначала вычисляются градиенты в горизонтальном, вертикальном и двух диагональных направлениях с использованием одномерного лапласиана:To calculate And First, gradients in the horizontal, vertical, and two diagonal directions are calculated using the one-dimensional Laplacian:

Где индексы и относятся к координатам верхней левой выборки в блоке 4 × 4, а R(i, j) указывает восстановленную выборку в координате . Where are the indices? And refer to the coordinates of the top left sample in the 4 × 4 block, and R(i, j) indicates the reconstructed sample at the coordinate .

Чтобы упростить классификацию блоков, применяется одномерное вычисление лапласиана с подвыборкой. Как показано на Фиг.7 (a)-(d), для вычисления градиента во всех направлениях используются одни и те же субдискретизированные позиции.To simplify block classification, a one-dimensional Laplacian calculation with subsampling is used. As shown in Fig. 7(a)-(d), the same subsampled positions are used to calculate the gradient in all directions.

Тогда максимальное и минимальное значения градиентов горизонтального и вертикального направлений задаются как:Then the maximum and minimum values the gradients of the horizontal and vertical directions are specified as:

Максимальное и минимальное значения градиента двух диагональных направлений задаются как:The maximum and minimum values of the gradient of the two diagonal directions are given as:

Чтобы вывести значение направленности , эти значения сравниваются друг с другом и с двумя пороговыми значениями и To display the directional value , these values are compared with each other and with two threshold values And

ЭТАП 1. Если оба и истинны, устанавливается в . STAGE 1 . If both And are true installed in .

ЭТАП 2. Если , продолжить с этапа 3; в противном случае продолжить с этапа 4. STEP 2. If , continue from step 3; otherwise continue from step 4.

ЭТАП 3. Если , D устанавливается в , иначе D устанавливается . STEP 3. If , D is set to , otherwise D is set .

ЭТАП 4. Если , D устанавливается в , иначе D устанавливается . STEP 4. If , D is set to , otherwise D is set .

Значение активности вычисляется как:Meaning activity is calculated as:

дополнительно квантуется до диапазона от 0 до 4 включительно, и квантованное значение обозначается . is further quantized to the range 0 to 4 inclusive, and the quantized value is denoted .

Для компонентов цветности в картинке способ классификации не применяется, т.е. для каждого компонента цветности применяется один набор коэффициентов ALF.For chromaticity components in a picture, the classification method is not applied, i.e. For each chrominance component, one set of ALF coefficients is applied.

Геометрические преобразования коэффициентов фильтра и значений усеченияGeometric transformations of filter coefficients and trim values

Перед фильтрацией каждого блока яркости 4×4 к коэффициентам f(k, l) фильтра и к соответствующим значениям усечения фильтра применяются геометрические преобразования, такие как вращение или диагональный и вертикальный переворот, в зависимости от значений градиента, вычисленных для этого блока. Это эквивалентно применению этих преобразований к выборкам в области поддержки фильтра. Идея состоит в том, чтобы сделать разные блоки, к которым применяется ALF, более похожими, выровняв их направленность.Before filtering each 4x4 luma block to the filter coefficients f(k, l) and to the corresponding filter cutoff values geometric transformations are applied, such as rotation or diagonal and vertical flip, depending on the gradient values calculated for that block. This is equivalent to applying these transformations to the samples in the filter support region. The idea is to make the different blocks that ALF is applied to more similar by aligning their directionality.

Введены три геометрических преобразования, в том числе диагональный, вертикальный переворот и вращение:Three geometric transformations are introduced, including diagonal, vertical flip and rotation:

Диагональный: Diagonal:

Вертикальный переворот: Vertical flip:

Вращение: Rotation:

где это размер фильтра, а 0≤k, l≤K-1 - координаты коэффициентов, так что местоположение (0,0) находится в верхнем левом углу, а местоположение находится в нижнем правом углу. Преобразования применяются к коэффициентам f(k, l) фильтра и к значениям усечения в зависимости от значений градиента, вычисленных для этого блока. Взаимосвязь между преобразованием четырех градиентов в четырех направлениях суммирована в таблице 1 выше.Where is the filter size, and 0≤k, l≤K-1 are the coordinates of the coefficients, so the location (0,0) is in the upper left corner, and the location is located in the lower right corner. Transformations are applied to the filter coefficients f(k, l) and to the values truncation depending on the gradient values calculated for this block. The relationship between the transformation of the four gradients in the four directions is summarized in Table 1 above.

Сигнализация параметров фильтраFilter parameters alarm

Параметры фильтра ALF сигнализируются в наборе параметров адаптации (APS). В одном APS может сигнализироваться до 25 наборов коэффициентов фильтра яркости и индексов значений усечения и до восьми наборов коэффициентов фильтра цветности и индексов значений усечения. Чтобы уменьшить накладные расходы на биты, можно объединить коэффициенты фильтра различной классификации для компонента яркости. В заголовке слайса сигнализируются индексы APS, используемых для текущего слайса.The ALF filter parameters are signaled in the adaptation parameter set (APS). Up to 25 sets of luma filter coefficients and clipping value indices and up to eight sets of chrominance filter coefficients and clipping value indexes can be signaled in one APS. To reduce bit overhead, filter coefficients of different classifications can be combined for the luminance component. The slice header signals the APS indexes used for the current slice.

Индексы значений усечения, которые декодируются из APS, позволяют определять значения усечения, используя таблицу значений усечения как для компонентов яркости, так и для компонентов цветности. Эти значения усечения зависят от внутренней битовой глубины. Точнее, значения усечения получаются по следующей формуле:The truncation value indices, which are decoded from the APS, allow the truncation values to be determined using a table of truncation values for both luma and chroma components. These truncation values depend on the internal bit depth. More precisely, the truncation values are obtained using the following formula:

с B, равным внутренней битовой глубине, α - это предварительно определенное постоянное значение, равное 2,35, а N, равное 4, - количество допустимых значений усечения в VVC. Затем AlfClip округляется до ближайшего значения в формате степени 2.with B equal to the internal bit depth, α is a predefined constant value equal to 2.35, and N equal to 4 is the number of valid truncation values in the VVC. AlfClip is then rounded to the nearest value in power of 2 format.

В заголовке слайса можно сигнализировать до 7 индексов APS, чтобы указать наборы фильтров яркости, которые используются для текущего слайса. Дополнительное управление процессом фильтрации можно осуществлять на уровне CTB. Флаг всегда сигнализируется, чтобы указать, применяется ли ALF к CTB яркости. CTB яркости может выбирать набор фильтров из 16 фиксированных наборов фильтров и наборов фильтров из APS. Индекс набора фильтров сигнализируется для CTB яркости, чтобы указать, какой набор фильтров применяется. 16 фиксированных наборов фильтров предварительно определены и жестко закодированы как в кодере, так и в декодере.Up to 7 APS indices can be signaled in the slice header to indicate the luma filter sets that are used for the current slice. Additional control of the filtration process can be carried out at the CTB level. The flag is always signaled to indicate whether ALF is applied to the luminance CTB. The brightness CTB can select a filter set from 16 fixed filter sets and filter sets from APS. The filter bank index is signaled to the luminance CTB to indicate which filter bank is being applied. 16 fixed filter sets are predefined and hard-coded in both the encoder and decoder.

Для компонента цветности в заголовке слайса сообщается индекс APS, чтобы указать наборы фильтров цветности, используемые для текущего слайса. На уровне CTB индекс фильтра сигнализируется для каждого CTB цветности, если в APS установлено более одного фильтра цветности.For the chroma component, an APS index is reported in the slice header to indicate the chroma filter sets used for the current slice. At the CTB level, the filter index is signaled for each chroma CTB if more than one chroma filter is installed in the APS.

Коэффициенты фильтра квантуются с нормой 128. Чтобы ограничить сложность умножения, применяется соответствие битового потока, так что значение коэффициента нецентральной позиции должно находиться в диапазоне от -27 до 27-1 включительно.. Коэффициент центральной позиции не сигнализируется в битовом потоке и считается равным 128.The filter coefficients are quantized at a rate of 128. To limit the complexity of the multiplication, bitstream matching is applied so that the value of the off-center position coefficient must be in the range -2 7 to 2 7 -1 inclusive. . The center position coefficient is not signaled in the bit stream and is assumed to be 128.

Процесс фильтрацииFiltration process

На стороне декодера, когда ALF задействован для CTB, каждая выборка R(i, j) в CU фильтруется, в результате чего получается значение выборки как показано ниже,On the decoder side, when ALF is enabled for CTB, each sample R(i, j) in the CU is filtered, resulting in a sample value as below,

где f(k, l) обозначает декодированные коэффициенты фильтра, K(x,y) - функция усечения, а обозначает декодированные параметры усечения. Переменные k и l варьируются между и , где L обозначает длину фильтра. Функция усечения , которая соответствует функции Операция усечения вводит нелинейность, чтобы сделать ALF более эффективным за счет уменьшения влияния значений соседних выборок, которые слишком отличаются от значения текущей выборки.where f(k, l) denotes the decoded filter coefficients, K(x,y) is the truncation function, and denotes the decoded truncation parameters. Variables k and l vary between And , where L denotes the length of the filter. Truncation function , which corresponds to the function The truncation operation introduces nonlinearity to make ALF more efficient by reducing the influence of neighboring sample values that are too different from the current sample value.

Выбранные значения усечения кодируются в элементе синтаксиса alf_data с использованием схемы кодирования Голомба, соответствующей индексу значения усечения в приведенной выше таблице 1. Эта схема кодирования аналогична схеме кодирования для индекса фильтра. Alf_data может быть в adaptation_parameter_set_rbsp(), и на adaptation_parameter_set_rbsp() может ссылаться заголовок слайса.The selected truncation values are encoded in the alf_data syntax element using a Golomb encoding scheme corresponding to the truncation value index in Table 1 above. This encoding scheme is similar to the encoding scheme for the filter index. Alf_data may be in adaptation_parameter_set_rbsp(), and adaptation_parameter_set_rbsp() may be referenced by the slice header.

Подробности синтаксиса показаны в таблице ниже.The syntax details are shown in the table below.

Семантика вновь введенных элементов синтаксиса следующая:The semantics of the newly introduced syntax elements is as follows:

alf_luma_clip, равное 0, указывает, что линейный адаптивный контурный фильтр применяется к компоненту яркости. alf_luma_clip, равное 1, указывает, что нелинейный адаптивный контурный фильтр может применяться к компоненту яркости.alf_luma_clip equal to 0 indicates that a linear adaptive contour filter is applied to the luma component. alf_luma_clip equal to 1 indicates that a nonlinear adaptive contour filter can be applied to the luma component.

alf_chroma_clip, равное 0, указывает, что линейный адаптивный контурный фильтр применяется к компонентам цветности; alf_chroma_clip, равное 1, указывает, что нелинейный адаптивный контурный фильтр применяется к компоненту цветности. Если нет, alf_chroma_clip выводится как 0. alf_chroma_clip equal to 0 indicates that a linear adaptive contour filter is applied to the chroma components; alf_chroma_clip equal to 1 indicates that a nonlinear adaptive contour filter is applied to the chroma component. If not, alf_chroma_clip is output as 0.

alf_luma_clip_min_eg_order_minus1 плюс 1 указывает минимальный порядок кода exp-Golomb для сигнализации индексов усечения яркости. Значение alf_luma_clip_min_eg_order_minus1 должно быть в диапазоне от 0 до 6 включительно. alf_luma_clip_min_eg_order_minus1 plus 1 specifies the minimum exp-Golomb code order for signaling luma clipping indices. The value of alf_luma_clip_min_eg_order_minus1 must be in the range from 0 to 6 inclusive.

alf_luma_clip_eg_order_increase_flag [i], равный 1, указывает, что минимальный порядок кода ехр-Голомба для сигнализации индексов усечения яркости увеличивается на 1. alf_luma_clip_eg_order_increase_flag [i], равный 0, указывает, что минимальный порядок кода exp-Golomb для сигнализации индексов усечения яркости не увеличивается на 1. alf_luma_clip_eg_order_increase_flag[ i] equal to 1 indicates that the minimum order of the exp-Golomb code for signaling luma truncation indices is increased by 1. alf_luma_clip_eg_order_increase_flag[i] equal to 0 indicates that the minimum order of the exp-Golomb code for signaling luma truncation indices is not increased by 1.

Порядок expGoOrderYClip [i] кода ехр-Голомба, используемого для декодирования значений alf_luma_clip_idx [sigFiltIdx] [j], выводится следующим образом:The order of the expGoOrderYClip[i] exp-Golomb code used to decode the alf_luma_clip_idx[sigFiltIdx][j] values is derived as follows:

expGoOrderYClip[i]=alf_luma_clip_min_eg_order_minus1+1+alf_luma_clip_eg_order_increase_flag[i] expGoOrderYClip[i]=alf_luma_clip_min_eg_order_minus1+1+alf_luma_clip_eg_order_increase_flag[i]

alf_luma_clip_idx [sigFiltIdx] [j] указывает индекс усечения значения усечения для использования перед умножением на j-й коэффициент сигнального фильтра яркости, указанного sigFiltIdx. Когда alf_luma_clip_idx [sigFiltIdx] [j] отсутствует, предполагается, что он равен 0 (без усечения). alf_luma_clip_idx[ sigFiltIdx][j] specifies the clipping index of the clipping value to use before multiplying by the jth coefficient of the luminance signal filter specified by sigFiltIdx. When alf_luma_clip_idx[sigFiltIdx][j] is missing, it is assumed to be 0 (no clipping).

Порядок k бинаризации ехр-Голомба uek (v) выводится следующим образом:The order k of the exp-Golomb binarization uek(v) is derived as follows:

golombOrderIdxYClip []={0, 0, 1, 0, 0, 1, 2, 1, 0, 0, 1, 2}golombOrderIdxYClip []={0, 0, 1, 0, 0, 1, 2, 1, 0, 0, 1, 2}

k=expGoOrderYClip [golombOrderIdxYClip [j]]k=expGoOrderYClip [golombOrderIdxYClip [j]]

Переменная filterClips [sigFiltIdx] [j] с sigFiltIdx=0..alf_luma_num_filters_signalled_minus1, j=0..11 инициализируется следующим образом: Переменная NumYClipValue установлена в 4.The filterClips variable [sigFiltIdx] [j] with sigFiltIdx=0..alf_luma_num_filters_signalled_minus1, j=0..11 is initialized as follows: The NumYClipValue variable is set to 4.

Для i=0..NumYClipValue - 1For i=0..NumYClipValue - 1

alf_luma_clipping_value[i]=Round (2(BitDepthY * (NumYClipValue - i)/NumYClipValue))alf_luma_clipping_value[i]=Round (2 (BitDepthY * (NumYClipValue - i)/NumYClipValue) )

filterClips[sigFiltIdx][j]=alf_luma_clipping_value[alf_luma_clip_idx[sigFiltIdx][j]]filterClips[sigFiltIdx][j]=alf_luma_clipping_value[alf_luma_clip_idx[sigFiltIdx][j]]

Значения усечения фильтра яркости AlfClipL с элементами AlfClipL[filtIdx][j], с filtIdx=0..NumAlfFilters - 1 и j=0..11 выводятся следующим образом AlfClip Luminosity Filter Clip ValuesL With AlfClip elementsL[filtIdx][j], with filtIdx=0..NumAlfFilters - 1 and j=0..11 are output as follows

AlfClipL[filtIdx][j]=filterClips[alf_luma_coeff_delta_idx[filtIdx]][j]AlfClip L [filtIdx][j]=filterClips[alf_luma_coeff_delta_idx[filtIdx]][j]

alf_chroma_clip_min_eg_order_minus1 плюс 1 указывает минимальный порядок кода ехр-Голомба для сигнализации индексов усечения цветности. Значение alf_chroma_clip_min_eg_order_minus1 должно быть в диапазоне от 0 до 6 включительно. alf_chroma_clip_min_eg_order_minus1 plus 1 specifies the minimum exp-Golomb code order for signaling chroma clipping indices. The value of alf_chroma_clip_min_eg_order_minus1 must be in the range from 0 to 6 inclusive.

alf_chroma_clip_eg_order_increase_flag [i], равный 1, указывает, что минимальный порядок кода ехр-Голомба для сигнализации индексов усечения цветности увеличивается на 1. alf_chroma_clip_eg_order_increase_flag [i], равный 0, указывает, что минимальный порядок кода ехр-Голомба для сигнализации индексов усечения цветности сигнализация не увеличивается на 1. alf_chroma_clip_eg_order_increase_flag[ i], equal to 1, indicates that the minimum exp-Golomb code order for signaling chroma truncation indices is increased by 1. alf_chroma_clip_eg_order_increase_flag[i], equal to 0, indicates that the minimum order of the exp-Golomb code for signaling chroma truncation indices is not signaled increases by 1.

Порядок expGoOrderC [i] кода ехр-Голомба, используемого для декодирования значений alf_chroma_clip _idx [j], выводится следующим образом:The order of expGoOrderC[i] of the exp-Golomb code used to decode the alf_chroma_clip_idx[j] values is derived as follows:

expGoOrderC[i]=alf_chroma_clip_min_eg_order_minus1+1+alf_chroma_clip_eg_order_increase_flag[i]expGoOrderC[i]=alf_chroma_clip_min_eg_order_minus1+1+alf_chroma_clip_eg_order_increase_flag[i]

alf_chroma_clip_idx [j] указывает индекс усечения значения усечения для использования перед умножением на j-й коэффициент фильтра цветности. Когда alf_chroma_clip_idx [j] отсутствует, предполагается, что он равен 0 (без усечения). alf_chroma_clip_idx[ j] specifies the clipping index of the clipping value to use before multiplying by the jth chroma filter coefficient. When alf_chroma_clip_idx[j] is missing, it is assumed to be 0 (no clipping).

Порядок k бинаризации ехр-Голомба uek (v) выводится следующим образом:The order k of the exp-Golomb binarization uek(v) is derived as follows:

golombOrderIdxC []={0, 0, 1, 0, 0, 1}golombOrderIdxC []={0, 0, 1, 0, 0, 1}

k=expGoOrderC [golombOrderIdxC [j]]k=expGoOrderC [golombOrderIdxC [j]]

Значения усечения фильтра цветности AlfClipC с элементами AlfClipC [j], с j=0..5 выводятся следующим образом:AlfClipC chroma filter clipping values with AlfClip elementsC [j],with j=0..5 are output as follows:

Переменная NumCClipValue установлена в 4.The NumCClipValue variable is set to 4.

Для i=0..NumCClipValue - 1For i=0..NumCClipValue - 1

alf_chroma_clipping_value[i]=Round (2(BitDepthC - 8) * 2 (8 * (NumCClipValue - i - 1)/(NumCClipValue -1)))alf_chroma_clipping_value[i]=Round (2 (BitDepthC - 8) * 2 (8 * (NumCClipValue - i - 1)/(NumCClipValue -1)) )

AlfClipC[j]=alf_chroma_clipping_value[alf_chroma_clip_idx[j]]AlfClip C [j]=alf_chroma_clipping_value[alf_chroma_clip_idx[j]]

Спецификация синтаксиса ALF согласно спецификации VVCALF syntax specification as per VVC specification

Процесс адаптивной контурной фильтрацииAdaptive Loop Filtering Process

1.1 Общие положения1.1 General provisions

Входами этого процесса являются массивы выборок реконструированных картинок перед адаптивным контурным фильтром recPictureL, recPictureCb и recPictureCr.The inputs to this process are arrays of samples of reconstructed pictures before the adaptive contour filter recPictureL, recPictureCb and recPictureCr.

Выходами этого процесса являются модифицированные массивы выборок восстановленных картинок после адаптивного контурного фильтра alfPictureL, alfPictureCb и alfPictureCr.The outputs of this process are modified arrays of samples of reconstructed pictures after the adaptive contour filter alfPictureL, alfPictureCb and alfPictureCr.

Значения выборок в модифицированных массивах выборок восстановленных картинок после адаптивного контурного фильтра alfPictureL, alfPictureCb и alfPictureCr изначально устанавливаются равными значениям выборок в массивах выборок восстановленных картинок перед адаптивным контурным фильтром recPictureL, recPictureCb и recPictureCr, соответственно.The sample values in the modified sample arrays of the reconstructed pictures after the adaptive contour filter alfPictureL, alfPictureCb and alfPictureCr are initially set equal to the sample values in the sample arrays of the reconstructed pictures before the adaptive contour filter recPictureL, recPictureCb and recPictureCr, respectively.

Когда значение tile_group_alf_enabled_flag равно 1, для каждой единицы дерева кодировки с местоположением блока дерева кодировки яркости (rx, ry), где rx=0..PicWidthInCtbs - 1 и ry=0..PicHeightInCtbs - 1, применяется следующий процесс:When the value of tile_group_alf_enabled_flag is 1, for each encoding tree unit with luma encoding tree block location (rx, ry), where rx=0..PicWidthInCtbs - 1 and ry=0..PicHeightInCtbs - 1, the following process is applied:

Когда значение alf_ctb_flag [0] [rx] [ry] равно 1, процесс фильтрации блока дерева кодировки для выборок яркости, как указано в пункте 1.2, вызывается с recPictureL, alfPictureL и местоположением блока дерева кодировки яркости (xCtb, yCtb), установленным равным (rx<<CtbLog2SizeY, ry<<CtbLog2SizeY ) в качестве входных данных, а на выходе - модифицированная отфильтрованная картинка alfPictureL.When the value of alf_ctb_flag[0][rx][ry] is equal to 1, the encoding tree block filtering process for luma samples as specified in clause 1.2 is called with recPictureL, alfPictureL and the luma encoding tree block location (xCtb, yCtb) set to ( rx<<CtbLog2SizeY, ry<<CtbLog2SizeY ) as input, and the output is a modified filtered picture alfPictureL.

Когда значение alf_ctb_flag [1] [rx] [ry] равно 1, процесс фильтрации блока дерева кодировки для выборок цветности, как указано в пункте 1.1, вызывается с recPicture, установленным равным recPictureCb, alfPicture установленным равным alfPictureCb, и местоположением блока дерева кодировки цветности (xCtbC, yCtbC), установленным равным (rx<<(CtbLog2SizeY - 1), ry<<(CtbLog2SizeY - 1)) в качестве входных данных, а на выходе - модифицированная отфильтрованная картинка alfPictureCb.When the value of alf_ctb_flag[1][rx][ry] is 1, the encoding tree block filtering process for chroma samples as specified in clause 1.1 is called with recPicture set to recPictureCb, alfPicture set to alfPictureCb, and the chroma encoding tree block location ( xCtbC, yCtbC) set to (rx<<(CtbLog2SizeY - 1), ry<<(CtbLog2SizeY - 1)) as input, and the output is a modified filtered picture alfPictureCb.

Когда значение alf_ctb_flag [2] [rx] [ry] равно 1, процесс фильтрации блока дерева кодировки для выборок цветности, как указано в пункте 1.4, вызывается с recPicture, установленным равным recPictureCr, alfPicture установлен равным alfPictureCr, и Местоположение блока дерева кодировки цветности (xCtbC, yCtbC) установлено равным (rx<<(CtbLog2SizeY - 1), ry<<(CtbLog2SizeY - 1)) в качестве входных данных, а на выходе - модифицированная отфильтрованная картинка alfPictureCr.When the value of alf_ctb_flag[2][rx][ry] is 1, the encoding tree block filtering process for chroma samples as specified in clause 1.4 is called with recPicture set to recPictureCr, alfPicture set to alfPictureCr, and Chroma Tree Block Location ( xCtbC, yCtbC) is set to (rx<<(CtbLog2SizeY - 1), ry<<(CtbLog2SizeY - 1)) as input, and the output is a modified filtered picture alfPictureCr.

1.2 Процесс фильтрации блоков дерева кодировки для выборок яркости1.2 Process of filtering encoding tree blocks for brightness samples

Входы этого процесса:Inputs to this process:

восстановленный массив выборок картинки яркости recPictureL до процесса адаптивной контурной фильтрации,restored array of brightness picture samples recPictureL before the adaptive contour filtering process,

фильтрованный восстановленный массив выборок картинки яркости alfPictureL, Datafiltered reconstructed array of brightness picture samples alfPictureL, Data

местоположение яркости (xCtb, yCtb), указывающее верхнюю левую выборку текущего блока дерева кодировки яркости относительно верхней левой выборки текущей картинки.luma location (xCtb, yCtb) indicating the top-left sample of the current luma encoding tree block relative to the top-left sample of the current picture.

Выходными данными этого процесса является модифицированный отфильтрованный массив выборок восстановленной картинки яркости alfPictureL.The output of this process is a modified filtered array of samples of the reconstructed brightness picture alfPictureL.

Вызывается процесс вывода для пункта 1.3 индекса фильтра с местоположением (xCtb, yCtb) и восстановленным массивом выборок картинки яркости recPictureL в качестве входных данных, а также с filterIdx [x] [y] и transposeIdx [x] [y] с x, y=0..CtbSizeY - 1 в качестве выходов.The inference process for item 1.3 of the filter index is called with the location (xCtb, yCtb) and the reconstructed array of brightness picture samples recPictureL as input, and with filterIdx [x] [y] and transposeIdx [x] [y] with x, y= 0..CtbSizeY - 1 as outputs.

Для выведения отфильтрованных восстановленных выборок яркости alfPictureL [x] [y] каждая восстановленная выборка яркости внутри текущего блока дерева кодировки яркости recPictureL [x] [y] фильтруется следующим образом с x, y=0..CtbSizeY - 1:To output filtered reconstructed luma samples alfPictureL[x][y], each reconstructed luma sample within the current luma encoding tree block recPictureL[x][y] is filtered as follows with x, y=0..CtbSizeY - 1:

Массив коэффициентов фильтра яркости f [j], соответствующий фильтру, указанному в filterIdx [x] [y], выводится следующим образом с j=0..12:The array of luminance filter coefficients f [j] corresponding to the filter specified in filterIdx [x] [y] is output as follows with j=0..12:

f[j]=AlfCoeffL [filterIdx [x] [y]] [j].f[j]=AlfCoeffL [filterIdx [x] [y]] [j].

Массив значений усечения фильтра яркости c[j], соответствующий фильтру, указанному в filterIdx [x] [y], выводится следующим образом с j=0..11:The array of luma filter cutoff values c[j] corresponding to the filter specified in filterIdx [x] [y] is output as follows with j=0..11:

c[j]=AlfClipL[filtIdx[x][y]][j] c[j]=AlfClip L [filtIdx[x][y]][j]

Коэффициенты фильтра яркости filterCoeff выводятся в зависимости от transposeIdx [x] [y] следующим образом:The luminance filter coefficients filterCoeff are derived as a function of transposeIdx[x][y] as follows:

Если transposeIndex [x] [y]=1,If transposeIndex [x] [y]=1,

filterCoeff []={f [9], f [4], f [10], f [8], f [1], f [5], f [11], f [7], f [3], f [0], f [2], f [6], f [12]}filterCoeff []={f [9], f [4], f [10], f [8], f [1], f [5], f [11], f [7], f [3], f [0], f [2], f [6], f [12]}

filterClip []={c [9], c [4], c [10], c [8], c [1], c [5], c [11], c [7], c [3], c [0], c [2], c [6]}filterClip []={c [9], c [4], c [10], c [8], c [1], c [5], c [11], c [7], c [3], c [0], c [2], c [6]}

В противном случае, если transposeIndex [x] [y]=2,Otherwise, if transposeIndex[x][y]=2,

filterCoeff []={f [0], f [3], f [2], f [1], f [8], f [7], f [6], f [5], f [4], f [9], f [10], f [11], f [12]}filterCoeff []={f [0], f [3], f [2], f [1], f [8], f [7], f [6], f [5], f [4], f [9], f [10], f [11], f [12]}

filterClip []={c [0], c [3], c [2], c [1], c [8], c [7], c [6], c [5], c [4], c [9], c [10], c [11]}filterClip []={c [0], c [3], c [2], c [1], c [8], c [7], c [6], c [5], c [4], c [9], c [10], c [11]}

В противном случае, если transposeIndex [x] [y]=3,Otherwise, if transposeIndex[x][y]=3,

filterCoeff []={f [9], f [8], f [10], f [4], f [3], f [7], f [11], f [5], f [1], f [0], f [2], f [6], f [12]}filterCoeff []={f [9], f [8], f [10], f [4], f [3], f [7], f [11], f [5], f [1], f [0], f [2], f [6], f [12]}

filterClip []={c [9], c [8], c [10], c [4], c [3], c [7], c [11], c [5], c [1], c [0], c [2], c [6]}filterClip []={c [9], c [8], c [10], c [4], c [3], c [7], c [11], c [5], c [1], c [0], c [2], c [6]}

ИначеOtherwise

filterCoeff []={f [0], f [1], f [2], f [3], f [4], f [5], f [6], f [7], f [8], f [9], f [10], f [11], f [12]}filterCoeff []={f [0], f [1], f [2], f [3], f [4], f [5], f [6], f [7], f [8], f [9], f [10], f [11], f [12]}

filterClip []={c [0], c [1], c [2], c [3], c [4], c [5], c [6], c [7], c [8], c [9], c [10], c [11]}filterClip []={c [0], c [1], c [2], c [3], c [4], c [5], c [6], c [7], c [8], c [9], c [10], c [11]}

Местоположения (hx, vy) для каждой из соответствующих выборок яркости (x, y) внутри данного массива recPicture выборок яркости выводятся следующим образом:The locations (hx, vy) for each of the corresponding luminance samples (x, y) within a given recPicture array of luminance samples are output as follows:

hx=Clip3 (0, pic_width_in_luma_samples - 1, xCtb+x)hx=Clip3 (0, pic_width_in_luma_samples - 1, xCtb+x)

vy=Clip3 (0, pic_height_in_luma_samples - 1, yCtb+y)vy=Clip3 (0, pic_height_in_luma_samples - 1, yCtb+y)

Сумма переменных выводится следующим образом:The sum of the variables is displayed as follows:

Сумма переменных выводится следующим образом:The sum of the variables is displayed as follows:

Модифицированная отфильтрованная выборка восстановленной картинки яркости alfPictureL [xCtb+x] [yCtb+y] выводится следующим образом:The modified filtered sample of the reconstructed brightness picture alfPictureL [xCtb+x] [yCtb+y] is output as follows:

alfPictureL[xCtb+x][yCtb+y]=Clip3(0, (1<<BitDepthY) - 1, sum).alfPictureL[xCtb+x][yCtb+y]=Clip3(0, (1<<BitDepthY) - 1, sum).

1.3 Процесс вывода для транспонирования ALF и индекса фильтра для выборок яркости1.3 Output process for ALF transpose and filter index for luminance samples

Входы этого процесса:Inputs to this process:

местоположение яркости (xCtb, yCtb), указывающее верхнюю левую выборку текущего блока дерева кодировки яркости относительно верхней левой выборки текущей картинки,a luma location (xCtb, yCtb) indicating the top left sample of the current luma encoding tree block relative to the top left sample of the current picture,

восстановленный массив выборок картинки яркости recPictureL до процесса адаптивной контурной фильтрации.restored array of brightness picture samples recPictureL before the adaptive contour filtering process.

Результатами этого процесса являются:The results of this process are:

массив индекса фильтра классификации filterIdx [x] [y] с x, y=0..CtbSizeY - 1,classification filter index array filterIdx [x] [y] with x, y=0..CtbSizeY - 1,

массив индексов транспонирования transposeIdx [x] [y] с x, y=0..CtbSizeY - 1.array of transpose indices transposeIdx [x] [y] with x, y=0..CtbSizeY - 1.

Местоположения (hx, vy) для каждой из соответствующих выборок яркости (x, y) внутри данного массива recPicture выборок яркости выводятся следующим образом:The locations (hx, vy) for each of the corresponding luminance samples (x, y) within a given recPicture array of luminance samples are output as follows:

hx=Clip3 (0, pic_width_in_luma_samples - 1, x)hx=Clip3 (0, pic_width_in_luma_samples - 1, x)

vy=Clip3 (0, pic_height_in_luma_samples - 1, y)vy=Clip3 (0, pic_height_in_luma_samples - 1, y)

Массив индексов фильтра классификации filterIdx и массив индексов транспонирования transposeIdx получают с помощью следующих упорядоченных этапов:The classification filter index array filterIdx and the transpose index array transposeIdx are obtained using the following ordered steps:

Переменные filterH [x] [y], filterV [x] [y], filterD0 [x] [y] и filterD1 [x] [y] с x, y=- 2..CtbSizeY+1 выводятся следующим образом:The variables filterH [x] [y], filterV [x] [y], filterD0 [x] [y] and filterD1 [x] [y] with x, y=- 2..CtbSizeY+1 are output as follows:

Если оба x и y - четные числа или оба x и y - нечетные числа, применяется следующее:If both x and y are even numbers or both x and y are odd numbers, the following applies:

filtH[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x-1, vyCtb+y] -recPicture[hxCtb+x+1, vyCtb+y] )filtH[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x-1, vyCtb+y] -recPicture[hxCtb+x+1, vyCtb+y ] )

filtV[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x, vyCtb+y-1] - recPicture[hxCtb+x, vyCtb+y+1] )filtV[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x, vyCtb+y-1] - recPicture[hxCtb+x, vyCtb+y+1 ] )

filtD0[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x-1, vyCtb+y-1] - recPicture[hxCtb+x+1, vyCtb+y+1] )filtD0[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x-1, vyCtb+y-1] - recPicture[hxCtb+x+1, vyCtb +y+1] )

filtD1[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x+1, vyCtb+y-1] - recPicture[hxCtb+x-1, vyCtb+y+1] )filtD1[x][y]=Abs( (recPicture[hxCtb+x, vyCtb+y]<<1) - recPicture[hxCtb+x+1, vyCtb+y-1] - recPicture[hxCtb+x-1, vyCtb +y+1] )

В противном случае filterH [x] [y], filterV [x] [y], filterD0 [x] [y] и filterD1 [x] [y] устанавливаются равными 0. Otherwise, filterH[x][y], filterV[x][y], filterD0[x][y], and filterD1[x][y] are set to 0.

Переменные varTempH1[x][y], varTempV1[x][y], varTempD01[x][y], varTempD11[x][y] and varTemp[x][y] with x, y=0..(CtbSizeY - 1)>>2 выводятся следующим образом:Variables varTempH1[x][y], varTempV1[x][y], varTempD01[x][y], varTempD11[x][y] and varTemp[x][y] with x, y=0..(CtbSizeY - 1)>>2 are output as follows:

sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j] with i, j=-2..5sumH[x][y]=ΣiΣj filtH[(x<<2)+i][(y<<2)+j] with i, j=-2..5

sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j] with i, j=-2..5sumV[x][y]=ΣiΣj filtV[(x<<2)+i][(y<<2)+j] with i, j=-2..5

sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j] with i, j=-2..5sumD0[x][y]=ΣiΣj filtD0[(x<<2)+i][(y<<2)+j] with i, j=-2..5

sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j] with i, j=-2..5sumD1[x][y]=ΣiΣj filtD1[(x<<2)+i][(y<<2)+j] with i, j=-2..5

sumOfHV[x][y]=sumH[x][y]+sumV[x][y]sumOfHV[x][y]=sumH[x][y]+sumV[x][y]

Переменные dir1 [x] [y], dir2 [x] [y] и dirS [x] [y] с x, y=0..CtbSizeY - 1 выводятся следующим образом: The variables dir1 [x] [y], dir2 [x] [y] and dirS [x] [y] with x, y=0..CtbSizeY - 1 are output as follows:

Переменные hv1, hv0 и dirHV выводятся следующим образом:The variables hv1, hv0 and dirHV are output as follows:

Если sumV[x>>2][y>>2] больше sumH[x>>2][y>>2], применяется следующее:If sumV[x>>2][y>>2] is greater than sumH[x>>2][y>>2], the following applies:

hv1=sumV[x>>2][y>>2]hv1=sumV[x>>2][y>>2]

hv0=sumH[x>>2][y>>2]hv0=sumH[x>>2][y>>2]

dirHV=1dirHV=1

Иначе применяется следующее:Otherwise the following applies:

hv1=sumH[x>>2][y>>2]hv1=sumH[x>>2][y>>2]

hv0=sumV[x>>2][y>>2]hv0=sumV[x>>2][y>>2]

dirHV=3dirHV=3

Переменные d1, d0 и dirD выводятся следующим образом:The variables d1, d0 and dirD are output as follows:

Если sumD0[x>>2][y>>2] больше sumD1[x>>2][y>>2], применяется следующее:If sumD0[x>>2][y>>2] is greater than sumD1[x>>2][y>>2], the following applies:

d1=sumD0[x>>2][y>>2]d1=sumD0[x>>2][y>>2]

d0=sumD1[x>>2][y>>2]d0=sumD1[x>>2][y>>2]

dirD=0dirD=0

Иначе применяется следующее: Otherwise the following applies:

d1=sumD1[x>>2][y>>2]d1=sumD1[x>>2][y>>2]

d0=sumD0[x>>2][y>>2]d0=sumD0[x>>2][y>>2]

dirD=2dirD=2

Переменные hvd1, hvd0 выводятся следующим образом: Variables hvd1, hvd0 are output as follows:

hvd1=(d1 * hv0>hv1 * d0) ? d1 : hv1hvd1=(d1 * hv0>hv1 * d0) ? d1 : hv1

hvd0=(d1 * hv0>hv1 * d0) ? d0 : hv0hvd0=(d1 * hv0>hv1 * d0) ? d0 : hv0

Переменные dirS [x] [y], dir1 [x] [y] и dir2 [x] [y] получены следующим образом: The variables dirS [x] [y], dir1 [x] [y] and dir2 [x] [y] are obtained as follows:

dir1[x][y]=(d1 * hv0>hv1 * d0) ? dirD : dirHVdir1[x][y]=(d1 * hv0>hv1 * d0) ? dirD : dirHV

dir2[x][y]=(d1 * hv0>hv1 * d0) ? dirHV : dirDdir2[x][y]=(d1 * hv0>hv1 * d0) ? dirHV : dirD

dirS[x][y]=(hvd1>2 * hvd0) ? 1 : ((hvd1 * 2>9 * hvd0) ? 2 : 0)dirS[x][y]=(hvd1>2 * hvd0) ? 1 : ((hvd1 * 2>9 * hvd0) ? 2 : 0)

Переменная avgVar [x] [y] с x, y=0..CtbSizeY - 1 выводится следующим образом:The variable avgVar [x] [y] with x, y=0..CtbSizeY - 1 is output as follows:

varTab[]={ 0, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4 }varTab[]={ 0, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 4 }

avgVar[x][y]=varTab[Clip3(0, 15, (sumOfHV[x>>2][y>>2] * 64)>>(3+BitDepthY))]avgVar[x][y]=varTab[Clip3(0, 15, (sumOfHV[x>>2][y>>2] * 64)>>(3+BitDepthY))]

Массив индексов фильтра классификации filterIdx [x] [y] и массив индексов транспонирования transposeIdx [x] [y] с x=y=0..CtbSizeY - 1 выводятся следующим образом: The classification filter index array filterIdx [x] [y] and the transpose index array transposeIdx [x] [y] with x=y=0..CtbSizeY - 1 are output as follows:

transposeTable []={0, 1, 0, 2, 2, 3, 1, 3}transposeTable []={0, 1, 0, 2, 2, 3, 1, 3}

transposeIdx[x][y]=transposeTable[dir1[x][y] * 2+(dir2[x][y]>>1)]transposeIdx[x][y]=transposeTable[dir1[x][y] * 2+(dir2[x][y]>>1)]

filtIdx[x][y]=avgVar[x][y]filtIdx[x][y]=avgVar[x][y]

Когда dirS [x] [y] не равно 0, filterIdx [x] [y] модифицируется следующим образом: When dirS[x][y] is not equal to 0, filterIdx[x][y] is modified as follows:

filtIdx[x][y]+=(((dir1[x][y] & 0x1)<<1)+dirS[x][y]) * 5. filtIdx[x][y]+=(((dir1[x][y] & 0x1)<<1)+dirS[x][y]) * 5.

1.4 Процесс фильтрации блоков дерева кодировки для выборок цветности1.4 Process of filtering encoding tree blocks for chrominance samples

Входы этого процесса:Inputs to this process:

восстановленный массив выборок картинки цветности recPicture до процесса адаптивной контурной фильтрации,the reconstructed array of recPicture chromaticity picture samples before the adaptive contour filtering process,

фильтрованный восстановленный массив выборок картинки цветности alfPicture,filtered reconstructed array of alfPicture chromaticity picture samples,

местоположение (xCtbC, yCtbC) цветности, указывающее верхнюю левую выборку текущего блока дерева кодировки цветности относительно верхней левой выборки текущей картинки.a chroma location (xCtbC, yCtbC) indicating the top-left sample of the current block of the chroma encoding tree relative to the top-left sample of the current picture.

Результатом этого процесса является модифицированный фильтрованный восстановленный массив выборок картинки цветности alfPicture.The result of this process is a modified filtered reconstructed array of alfPicture chromaticity picture samples.

Размер текущего блока дерева кодировки цветности ctbSizeC выводится следующим образом:The size of the current chroma tree block ctbSizeC is output as follows:

ctbSizeC=CtbSizeY/SubWidthCctbSizeC=CtbSizeY/SubWidthC

Для выведения отфильтрованных восстановленных выборок цветности alfPicture [x] [y] каждая восстановленная выборка цветности внутри текущего блока дерева кодировки цветности recPicture [x] [y] фильтруется следующим образом с x, y=0..ctbSizeC - 1:To output filtered reconstructed alfPicture [x] [y] chroma samples, each reconstructed chroma sample within the current recPicture [x] [y] chroma encoding tree block is filtered as follows with x, y=0..ctbSizeC - 1:

Местоположение (hx, vy) для каждого из соответствующих выборок цветности (x, y) внутри данного массива recPicture выборок цветности выводится следующим образом:The location (hx, vy) for each of the corresponding chroma samples (x, y) within a given recPicture array of chroma samples is output as follows:

hx=Clip3 (0, pic_width_in_luma_samples/SubWidthC - 1, xCtbC+x)hx=Clip3 (0, pic_width_in_luma_samples/SubWidthC - 1, xCtbC+x)

vy=Clip3 (0, pic_height_in_luma_samples/SubHeightC - 1, yCtbC+y)vy=Clip3 (0, pic_height_in_luma_samples/SubHeightC - 1, yCtbC+y)

Сумма переменных выводится следующим образом:The sum of the variables is displayed as follows:

sum=AlfCoeffC[0] * (Clip3(-AlfClipC[0], AlfClipC[0], recPicture[hx, vy+2] - curr)+Clip3 (-AlfClipC[0], AlfClipC[0], recPicture[hx, vy - 2] - curr))+
AlfCoeffC[1] * (Clip3(-AlfClipC[1], AlfClipC[1], recPicture[hx+1, vy+1] - curr)+Clip3 (-AlfClipC[1], AlfClipC[1],recPicture[hx - 1, vy - 1] - curr))+
AlfCoeffC[2] * (Clip3(-AlfClipC[2], AlfClipC[2], recPicture[hx, vy+1] - curr)+Clip3 (-AlfClipC[2], AlfClipC[2],recPicture[hx, vy - 1] - curr))+AlfCoeffC[3] * (Clip3(-AlfClipC[3], AlfClipC[3], recPicture[hx - 1, vy+1] - curr)+Clip3 (-AlfClipC[3], AlfClipC[3],recPicture[hx+1, vy - 1] - curr)+
AlfCoeffC[4] * (Clip3(-alfClipC[4], alfClipC[4], recPicture[hx+2, vy] - curr)+Clip3 (-AlfClipC[4], AlfClipC[4],recPicture[hx - 2, vy] - curr)+
AlfCoeffC[5] * (Clip3(-AlfClipC[5], AlfClipC[5], recPicture[hx+1, vy] - curr)+Clip3 (-AlfClipC[5], AlfClipC[5], recPicture[hx - 1, vy] - curr))
sum=AlfCoeff C [0] * (Clip3(-AlfClip C [0], AlfClip C [0], recPicture[h x , v y+2 ] - curr)+Clip3 (-AlfClip C [0], AlfClip C [ 0], recPicture[h x , v y - 2 ] - curr))+
AlfCoeff C [1] * (Clip3(-AlfClip C [1], AlfClip C [1], recPicture[h x+1 , v y+1 ] - curr)+Clip3 (-AlfClip C [1], AlfClip C [ 1],recPicture[h x - 1 , v y - 1 ] - curr))+
AlfCoeff C [2] * (Clip3(-AlfClip C [2], AlfClip C [2], recPicture[h x , v y+1 ] - curr)+Clip3 (-AlfClip C [2], AlfClip C [2] ,recPicture[h x , v y - 1 ] - curr))+AlfCoeff C [3] * (Clip3(-AlfClip C [3], AlfClip C [3], recPicture[h x - 1 , v y+1 ] - curr)+Clip3 (-AlfClip C [3], AlfClip C [3],recPicture[h x+1 , v y - 1 ] - curr)+
AlfCoeff C [4] * (Clip3(-alfClip C [4], alfClip C [4], recPicture[h x+2 , v y ] - curr)+Clip3 (-AlfClip C [4], AlfClip C [4] ,recPicture[h x - 2 , v y ] - curr)+
AlfCoeff C [5] * (Clip3(-AlfClip C [5], AlfClip C [5], recPicture[h x+1 , v y ] - curr)+Clip3 (-AlfClip C [5], AlfClip C [5] , recPicture[h x - 1 , v y ] - curr))

sum=curr+((sum+64)>>7)sum=curr+((sum+64)>>7)

Модифицированная отфильтрованная выборка восстановленной картинки цветности alfPicture [xCtbC+x] [yCtbC+y] выводится следующим образом:A modified filtered sample of the reconstructed chromaticity picture alfPicture [xCtbC+x] [yCtbC+y] is output as follows:

alfPicture[xCtbC+x][yCtbC+y]=Clip3(0, (1<<BitDepthC) - 1, sum).alfPicture[xCtbC+x][yCtbC+y]=Clip3(0, (1<<BitDepthC) - 1, sum).

Как описано выше и как показано на фиг.8, параметры усечения яркости и цветности ALF передаются с использованием экспоненциальных кодов Голомба K-го порядка, подобных коэффициентам фильтра ALF. As described above and as shown in FIG. 8, the ALF luma and chrominance trim parameters are transmitted using K-th order exponential Golomb codes similar to the ALF filter coefficients.

Использование экспоненциальных кодов Голомба K-го порядка для параметров усечения может быть неэффективным с точки зрения эффективности кодировки, поскольку сигнализируемый параметр усечения является просто индексом в таблице значений усечения (см. Таблицу 2 выше). Значение индекса колеблется от 0 до 3.Using K-order exponential Golomb codes for truncation parameters may be inefficient in terms of encoding efficiency, since the signaled truncation parameter is simply an index into the table of truncation values (see Table 2 above). The index value ranges from 0 to 3.

Следовательно, передача значений индекса от 0 до 3 с использованием экспоненциальных кодов Голомба K-го порядка таким же образом, как коэффициенты фильтра ALF, используют дополнительные элементы синтаксиса, alf_luma_clip_min_eg_order_minus1, alf_luma_clip_eg_order_increase_flag[i] для определения значения K (порядок экспоненциального кода Голомба, подлежащего использованию) и затем элемент синтаксиса alf_luma_clip_idx сигнализируется с использованием экспоненциального кода Голомба K-го порядка. Следовательно, этот способ сигнализации сложен и также неэффективен с точки зрения эффективности кодировки. Поэтому желателен более простой способ сигнализации параметров усечения.Therefore, passing index values from 0 to 3 using K-th order exponential Golomb codes in the same way as ALF filter coefficients uses additional syntax elements, alf_luma_clip_min_eg_order_minus1, alf_luma_clip_eg_order_increase_flag [i] to determine the value of K (the order of the exponential Golomb code to be used ) and then the alf_luma_clip_idx syntax element is signaled using a K-th order exponential Golomb code. Therefore, this signaling method is complex and also inefficient in terms of encoding efficiency. Therefore, a simpler way to signal truncation parameters is desirable.

В одном варианте осуществления предложенного решения (решение 1), как показано на фиг.9, параметры усечения сигнализируются с использованием кодов фиксированной длины, и следовательно, элементы синтаксиса alf_luma_clip_min_eg_order_minus1, alf_luma_clip_eg_order_increase_flag [i] не используются. Элемент синтаксиса alf_luma_clip_idx сигнализируется с использованием кода фиксированной длины из 2 битов. Этот способ имеет то преимущество, что параметры усечения сигнализируются очень простым способом, эффективность кодировки повышается, поскольку несколько элементов синтаксиса, относящихся к экспоненциальным кодам голомба K-го порядка, больше не передаются. In one embodiment of the proposed solution (Solution 1), as shown in FIG. 9, the truncation parameters are signaled using fixed length codes, and therefore syntax elements alf_luma_clip_min_eg_order_minus1, alf_luma_clip_eg_order_increase_flag [i] are not used. Syntax element alf_luma_clip_idxsignaled using a fixed length code of 2 bits.This method has the advantage that the truncation parameters are signaled in a very simple way, the encoding efficiency is increased since several syntax elements related to K-th order exponential holomb codes are no longer transmitted.

Модифицированный синтаксис alf_data выглядит следующим образом:The modified alf_data syntax looks like this:

alf_data () {alf_data() { ДескрипторDescriptor alf_chroma_idcalf_chroma_idc ту (v)that (v) alf_luma_clipalf_luma_clip u(1)u(1) if(alf_choma_idc)if(alf_choma_idc) alf_chroma_clipalf_chroma_clip u(1)u(1) alf_luma_num_filters_signalled_minus1alf_luma_num_filters_signalled_minus1 tb (v)tb(v) if(alf_luma_num_filters_signalled_minus1>0) {if(alf_luma_num_filters_signalled_minus1>0) { for(filtIdx=0; filtIdx<NumAlfFilters; filtIdx++)for(filtIdx=0; filtIdx<NumAlfFilters; filtIdx++) alf_luma_coeff_delta_idx[filtIdx]alf_luma_coeff_delta_idx[filtIdx] tb (v)tb(v) }} alf_luma_coeff_delta_flagalf_luma_coeff_delta_flag u(1)u(1) if (!alf_luma_coeff_delta_flag && alf_luma_num_filters_signalled_minus1>0)if (!alf_luma_coeff_delta_flag && alf_luma_num_filters_signalled_minus1>0) alf_luma_coeff_delta_prediction_flagalf_luma_coeff_delta_prediction_flag u(1)u(1) alf_luma_min_eg_order_minus1alf_luma_min_eg_order_minus1 ue(v)ue(v) for(i=0; i<3; i++)for(i=0; i<3; i++) alf_luma_eg_order_increase_flag[i]alf_luma_eg_order_increase_flag[i] u(1)u(1) if (alf_luma_coeff_delta_flag) {if (alf_luma_coeff_delta_flag) { for(sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++)for(sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++) alf_luma_coeff_flag[sigFiltIdx]alf_luma_coeff_flag[sigFiltIdx] u(1)u(1) }} for(sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++) {for(sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++) { if (alf_luma_coeff_flag[sigFiltIdx]) {if (alf_luma_coeff_flag[sigFiltIdx]) { for (j=0; j<12; j++) {for (j=0; j<12; j++) { alf_luma_coeff_delta_abs[sigFiltIdx][j]alf_luma_coeff_delta_abs[sigFiltIdx][j] uek (v)uek(v) if(alf_luma_coeff_delta_abs[sigFiltIdx][j])if(alf_luma_coeff_delta_abs[sigFiltIdx][j]) alf_luma_coeff_delta_sign[sigFiltIdx][j]alf_luma_coeff_delta_sign[sigFiltIdx][j] u(1)u(1) }} }} }} if(alf_luma_clip) {if(alf_luma_clip) { for (sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++) {for (sigFiltIdx=0; sigFiltIdx<=alf_luma_num_filters_signalled_minus1; sigFiltIdx++) { if (alf_luma_coeff_flag[sigFiltIdx]) {if (alf_luma_coeff_flag[sigFiltIdx]) { for (j=0; j<12; j++) {for (j=0; j<12; j++) { if(filterCoefficients[sigFiltIdx][j])if(filterCoefficients[sigFiltIdx][j]) alf_luma_clip_idx[sigFiltIdx][j]alf_luma_clip_idx[sigFiltIdx][j] u(2)u(2) }} }} }} }} if (alf_chroma_idc>0) {if (alf_chroma_idc>0) { for(i=0; i<2; i++)for(i=0; i<2; i++) for(j=0; j<6; j++) {for(j=0; j<6; j++) { alf_chroma_coeff_abs[j]alf_chroma_coeff_abs[j] uek (v)uek(v) if(alf_chroma_coeff_abs[j]>0)if(alf_chroma_coeff_abs[j]>0) alf_chroma_coeff_sign[j]alf_chroma_coeff_sign[j] u(1)u(1) }} }} if (alf_chroma_idc>0 && alf_chroma_clip) {if (alf_chroma_idc>0 && alf_chroma_clip) { for(j=0; j<6; j++) {for(j=0; j<6; j++) { if(alf_chroma_coeff_abs[j])if(alf_chroma_coeff_abs[j]) alf_chroma_clip_idx[j]alf_chroma_clip_idx[j] u(2)u(2) }} }} }}

В качестве варианта осуществления альтернативного решения (решение 2) усеченная унарная кодировка также может использоваться для сигнализации индекса параметра усечения.As an alternative solution (Solution 2), a truncated unary encoding may also be used to signal the index of the truncate parameter.

В качестве варианта осуществления альтернативного решения (решение 3), если количество параметров усечения изменяется с фиксированного значения 4 на другое число, большее 4, код фиксированной длины (v) «значение v» соответственно увеличивается. Например, если количество параметров усечения увеличивается с 4 до 5 или 6, то код фиксированной длины использует 3 бита для сигнализации параметра усечения.As an alternative solution (Solution 3), if the number of truncation parameters is changed from a fixed value of 4 to another number greater than 4, the fixed length (v) code "v value" is increased accordingly. For example, if the number of truncation parameters is increased from 4 to 5 or 6, then the fixed-length code uses 3 bits to signal the truncation parameter.

В качестве варианта осуществления альтернативного решения (решение 4) коэффициенты фильтра ALF сигнализируются с использованием кода фиксированной длины вместо экспоненциального кода Голомба K-го порядка.As an alternative solution (Solution 4), the ALF filter coefficients are signaled using a fixed length code instead of a K-th order exponential Golomb code.

Фиг.10 - блок-схема, иллюстрирующая способ согласно первому аспекту настоящего раскрытия. Способ содержит этапы получения битового потока, в котором по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, 1001, при этом элемент синтаксиса представляет собой индекс значения усечения адаптивного контурного фильтра (ALF), указывающий индекс усечения значения усечения для использования перед умножением на коэффициент ALF; синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины, 1002; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока, 1003.FIG. 10 is a flow diagram illustrating a method according to the first aspect of the present disclosure. The method comprises the steps of obtaining a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, 1001, wherein the syntax element is an adaptive loop filter (ALF) truncation value index indicating a truncation index of the truncation value to use before multiplied by the ALF coefficient; parsing the bit stream to obtain the value of a syntax element for the current block, wherein the syntax element is encoded using a fixed length code, 1002; applying adaptive loop filtering to the current block based on the value of the syntax element for the current block, 1003.

Фиг.11 - блок-схема, иллюстрирующая способ согласно второму аспекту настоящего раскрытия. Согласно второму аспекту предоставляется способ кодировки, реализуемый устройством декодирования, причем способ содержит этап:FIG. 11 is a flow diagram illustrating a method according to the second aspect of the present disclosure. According to a second aspect, an encoding method implemented by a decoding device is provided, the method comprising the step of:

получение битового потока, причем по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, 1101, при этом элемент синтаксиса представляет собой индекс значения усечения адаптивного контурного фильтра (ALF) или параметр коэффициента ALF; синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита элемента синтаксиса 1102; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока, 1103.obtaining a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, 1101, wherein the syntax element is an adaptive loop filter (ALF) clipping value index or an ALF coefficient parameter; parsing the bitstream to obtain a syntax element value for the current block, wherein the syntax element value for the current block is obtained using only at least one bit of the syntax element 1102; applying adaptive contour filtering to the current block based on the value of the syntax element for the current block, 1103.

Фиг.12 - блок-схема, иллюстрирующая способ согласно третьему аспекту настоящего раскрытия. Согласно третьему аспекту предоставляется способ кодировки, реализуемый устройством кодирования, способ, содержащий: определение значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для использования перед умножением на коэффициент адаптивного контурного фильтра (ALF), 1201; генерирование битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представлет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины, 1202.FIG. 12 is a flow diagram illustrating a method according to a third aspect of the present disclosure. According to a third aspect, an encoding method implemented by an encoding device is provided, a method comprising: determining a syntax element value for a current block, wherein the syntax element specifies a truncation index of the truncation value to be used before multiplying by an adaptive loop filter (ALF) factor, 1201; generating a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the syntax element is encoded using a fixed length code, 1202.

Фиг.13 - блок-схема, иллюстрирующая способ согласно четвертому аспекту настоящего раскрытия. Согласно четвертому аспекту предоставляется способ кодировки, реализуемый устройством кодирования, при этом способ содержит: определение значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса является индексом значения усечения адаптивного контурного фильтра (ALF) или параметром коэффициента фильтра ALF, 1301; генерирование битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом по меньшей мере один бит элемента синтаксиса получается с использованием только значения элемента синтаксиса для текущего блока, 1302.FIG. 13 is a flow chart illustrating a method according to the fourth aspect of the present disclosure. According to a fourth aspect, an encoding method implemented by an encoding device is provided, the method comprising: determining a syntax element value for a current block, wherein the syntax element is an adaptive loop filter (ALF) clipping value index or an ALF filter coefficient parameter, 1301; generating a bitstream based on the value of a syntax element, wherein at least one bit in the bitstream represents a syntax element, wherein at least one bit of the syntax element is obtained using only the value of the syntax element for the current block, 1302.

Фиг.14 - блок-схема, иллюстрирующая декодер согласно пятому аспекту настоящего раскрытия. Согласно пятому аспекту настоящего раскрытия предоставляется декодер 1400, содержащий схему 1401 обработки для выполнения способа согласно первому или второму аспекту или любой его реализации.FIG. 14 is a block diagram illustrating a decoder according to a fifth aspect of the present disclosure. According to a fifth aspect of the present disclosure, a decoder 1400 is provided including processing circuitry 1401 for performing a method according to the first or second aspect or any implementation thereof.

Фиг.15 - блок-схема, иллюстрирующая кодер согласно шестому аспекту настоящего раскрытия. Согласно шестому аспекту настоящего раскрытия предоставляется кодер 1500, содержащий схему 1501 обработки для выполнения способа согласно третьему или четвертому аспекту или любой его реализации.FIG. 15 is a block diagram illustrating an encoder according to a sixth aspect of the present disclosure. According to a sixth aspect of the present disclosure, an encoder 1500 is provided including a processing circuit 1501 for performing the method of the third or fourth aspect or any implementation thereof.

Фиг.16 - блок-схема, иллюстрирующая декодер согласно девятому аспекту настоящего раскрытия. Согласно девятому аспекту настоящего раскрытия предоставляется декодер 1600, содержащий: один или несколько процессоров 1601; и энергонезависимый машиночитаемый носитель 1602, связанный с процессорами 1601 и хранящий программу для выполнения процессорами 1601, причем программа, когда выполняется процессорами 1601, конфигурирует декодер 1600 для выполнения способа согласно первому или второму аспекту, или любой его реализации.FIG. 16 is a block diagram illustrating a decoder according to a ninth aspect of the present disclosure. According to a ninth aspect of the present disclosure, a decoder 1600 is provided, comprising: one or more processors 1601; and a non-transitory computer-readable medium 1602 coupled to the processors 1601 and storing a program for execution by the processors 1601, wherein the program, when executed by the processors 1601, configures the decoder 1600 to perform the method of the first or second aspect, or any implementation thereof.

Фиг.17 - блок-схема, иллюстрирующая кодер согласно десятому аспекту настоящего раскрытия. Согласно десятому аспекту настоящего раскрытия предусмотрен кодер 1700, содержащий: один или несколько процессоров 1701; и энергонезависимый машиночитаемый носитель 1702, связанный с процессорами 1701 и хранящий программу для выполнения процессорами 1701, причем программа, когда выполняется процессорами 1701, конфигурирует кодер 1700 для выполнения способа согласно третьему или четвертому аспекту, или любой его реализации.FIG. 17 is a block diagram illustrating an encoder according to a tenth aspect of the present disclosure. According to a tenth aspect of the present disclosure, there is provided an encoder 1700 comprising: one or more processors 1701; and a non-transitory computer-readable medium 1702 coupled to the processors 1701 and storing a program for execution by the processors 1701, the program, when executed by the processors 1701, configuring the encoder 1700 to perform the method of the third or fourth aspect, or any implementation thereof.

Фиг.18 - блок-схема, иллюстрирующая декодер согласно одиннадцатому аспекту настоящего раскрытия. Согласно одиннадцатому аспекту настоящего раскрытия, предоставляется декодер 1800, содержащий: блок 1801 энтропийного декодирования (может быть блоком 304 энтропийного декодирования), сконфигурированный для получения битового потока 1811, причем по меньшей мере один бит в битовом потоке 1811 представляет элемент синтаксиса для текущего блока, при этом элемент синтаксиса представляет собой индекс значения усечения ALF, указывающий индекс усечения значения усечения для использования перед умножением на коэффициент адаптивного контурного фильтра (ALF); блок 1801 энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока 1811 для получения значения 1812 элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины; и блок 1803 фильтрации (может быть контурным фильтром 320), сконфигурированным для применения адаптивной контурной фильтрации к текущему блоку на основе значения 1812 элемента синтаксиса для текущего блока.FIG. 18 is a block diagram illustrating a decoder according to an eleventh aspect of the present disclosure. According to an eleventh aspect of the present disclosure, a decoder 1800 is provided, comprising: an entropy decoding block 1801 (may be an entropy decoding block 304) configured to receive a bitstream 1811, wherein at least one bit in the bitstream 1811 represents a syntax element for the current block, wherein wherein the syntax element is a truncation value index ALF indicating a truncation index of the truncation value to be used before multiplying by an adaptive loop filter (ALF) coefficient; the entropy decoding unit 1801 is further configured to parse the bit stream 1811 to obtain a syntax element value 1812 for the current block, wherein the syntax element is encoded using a fixed length code; and a filtering block 1803 (may be a loop filter 320) configured to apply adaptive loop filtering to the current block based on the syntax element value 1812 for the current block.

Фиг.19 - блок-схема, иллюстрирующая декодер согласно двенадцатому аспекту настоящего раскрытия. Согласно двенадцатому аспекту настоящего раскрытия предоставляется декодер 1900, содержащий: модуль 1901 энтропийного декодирования (может быть модулем 304 энтропийного декодирования), сконфигурированный для получения потока 1911 битов, по меньшей мере, один бит в битовом потоке 1911 представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса представляет собой индекс значения усечения ALF или параметр коэффициента ALF; блок 1801 энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока для получения значения 1912 элемента синтаксиса для текущего блока, при этом значение элемента синтаксиса для текущего блока получается с использованием только по меньшей мере одного бита элемента синтаксиса; и блок 1903 фильтрации (может быть контурным фильтром 320), сконфигурированный для применения адаптивной контурной фильтрации к текущему блоку на основе значения 1912 элемента синтаксиса для текущего блока.FIG. 19 is a block diagram illustrating a decoder according to the twelfth aspect of the present disclosure. According to a twelfth aspect of the present disclosure, a decoder 1900 is provided, comprising: an entropy decoding module 1901 (may be an entropy decoding module 304) configured to receive a bit stream 1911, at least one bit in the bit stream 1911 representing a syntax element for the current block, wherein the element syntax is the ALF truncation value index or the ALF factor parameter; the entropy decoding unit 1801 is further configured to parse the bitstream to obtain a syntax element value 1912 for the current block, wherein the syntax element value for the current block is obtained using only at least one bit of the syntax element; and a filtering block 1903 (may be a loop filter 320) configured to apply adaptive loop filtering to the current block based on the syntax element value 1912 for the current block.

Фиг.20 - блок-схема, иллюстрирующая кодер согласно тринадцатому аспекту настоящего раскрытия. Согласно тринадцатому аспекту настоящего раскрытия предоставляется кодер 2000, содержащий: блок 2001 определения (может быть контурным фильтром 220), сконфигурированный для определения значения 2012 элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для использования перед умножением на коэффициент адаптивного контурного фильтра (ALF); блок 2002 энтропийного кодирования (может быть блоком 270 энтропийного кодирования), сконфигурированный для генерирования битового потока 2011 на основе значения 2012 элемента синтаксиса, при этом, по меньшей мере, один бит в битовом потоке 2011 представляет элемент синтаксиса, при этом элемент синтаксиса закодирован используя код фиксированной длины.FIG. 20 is a block diagram illustrating an encoder according to the thirteenth aspect of the present disclosure. According to a thirteenth aspect of the present disclosure, an encoder 2000 is provided, comprising: a determination block 2001 (may be a contour filter 220) configured to determine a syntax element value 2012 for the current block, wherein the syntax element specifies a truncation index of the truncation value to be used before multiplying by an adaptive contour factor filter (ALF); an entropy encoding unit 2002 (may be an entropy encoding unit 270) configured to generate a bitstream 2011 based on a syntax element value 2012, wherein at least one bit in the bitstream 2011 represents a syntax element, wherein the syntax element is encoded using a code fixed length.

Фиг.21 - блок-схема, иллюстрирующая кодер согласно четырнадцатому аспекту настоящего раскрытия. Согласно четырнадцатому аспекту настоящего раскрытия предусмотрен кодер 2100, содержащий: блок 2101 определения (может быть контурным фильтром 220), сконфигурированный для определения значения 2112 элемента синтаксиса для текущего блока, при этом элемент синтаксиса представляет собой индекс значения усечения ALF или параметр коэффициента фильтра ALF; блок 2102 энтропийного кодирования (может быть блоком 270 энтропийного кодирования), сконфигурированный для генерирования битового потока 2111 на основе значения 2112 элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке 2111 представляет элемент синтаксиса, при этом по меньшей мере один бит элемента синтаксиса получается путем использования только значения элемента синтаксиса для текущего блока.FIG. 21 is a block diagram illustrating an encoder according to the fourteenth aspect of the present disclosure. According to a fourteenth aspect of the present disclosure, there is provided an encoder 2100 comprising: a determination block 2101 (may be a loop filter 220) configured to determine a syntax element value 2112 for the current block, wherein the syntax element is an ALF trim value index or an ALF filter coefficient parameter; an entropy encoding block 2102 (may be an entropy encoding block 270) configured to generate a bit stream 2111 based on a syntax element value 2112, wherein at least one bit in the bit stream 2111 represents a syntax element, wherein at least one bit of the syntax element is obtained by using only the value of the syntax element for the current block.

В настоящем раскрытии представлены следующие дополнительные варианты осуществления:The present disclosure provides the following additional embodiments:

Вариант 1 осуществления. Способ кодировки, реализуемый устройством декодирования, содержащий:Option 1 implementation. An encoding method implemented by a decoding device, containing:

получение битового потока, причем по меньшей мере один бит в битовом потоке соответствует элементу синтаксиса для текущего блока (или набора блоков, один блок в наборе блоков является текущим блоком);obtaining a bitstream, wherein at least one bit in the bitstream corresponds to a syntax element for a current block (or set of blocks, one block in the set of blocks being the current block);

синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом полученное значение элемента синтаксиса для текущего блока относится только к по меньшей мере одному биту;parsing the bitstream to obtain a syntax element value for the current block, wherein the obtained syntax element value for the current block relates only to at least one bit;

фильтрация текущего блока на основе значения элемента синтаксиса для текущего блока.Filters the current block based on the value of the syntax element for the current block.

Вариант 2 осуществления. Способ по варианту осуществления 1, в котором значение элемента синтаксиса кодируется в соответствии с кодом фиксированной длины (код фиксированной длины означает, что все возможные значения элемента синтаксиса сообщаются с использованием одного и того же количества битов).Option 2 implementation. The method of Embodiment 1, wherein the value of the syntax element is encoded according to a fixed-length code (a fixed-length code means that all possible values of the syntax element are reported using the same number of bits).

Вариант 3 осуществления. Способ по варианту осуществления 1, в котором значение элемента синтаксиса кодируется в соответствии с усеченным унарным кодом (усеченный унарный код означает, что наиболее часто встречающееся значение данного элемента синтаксиса передается с использованием наименьшего числа битов, а наименее встречающееся значение элемента синтаксиса сигнализируется с использованием наибольшего количества битов).Option 3 implementation. The method of Embodiment 1, wherein the value of a syntax element is encoded according to a truncated unary code (truncated unary means that the most frequently occurring value of a given syntax element is signaled using the least number of bits, and the least occurring value of a syntax element is signaled using the largest number bits).

Вариант 4 осуществления. Способ по любому из вариантов осуществления с 1 по 3, в котором элемент синтаксиса является параметром индекса усечения адаптивного контурного фильтра.Option 4 implementation. The method as in any one of Embodiments 1 to 3, wherein the syntax element is an adaptive loop filter truncation index parameter.

Вариант 5 осуществления. Способ по любому из вариантов осуществления с 1 по 3, в котором элемент синтаксиса представляет собой параметр коэффициента адаптивного контурного фильтра.Option 5 implementation. The method as in any one of Embodiments 1 to 3, wherein the syntax element is an adaptive loop filter coefficient parameter.

Вариант 6 осуществления. Способ по любому из вариантов осуществления с 1 по 5, в котором значение элемента синтаксиса используется для определения коэффициента фильтра, коэффициент фильтра используется в процессе фильтрации.Option 6 implementation. The method as in any one of Embodiments 1 to 5, wherein the value of the syntax element is used to determine a filter coefficient, the filter coefficient is used in the filtering process.

Вариант 7 осуществления. Способ по любому из вариантов осуществления с 1 по 5, в котором значение элемента синтаксиса используется для определения диапазона усечения, диапазон усечения используется в процессе фильтрации (диапазон усечения используется для ограничения количества модификаций, разрешенных на данную выборку соседней выборкой).Option 7 implementation. The method as in any one of Embodiments 1 to 5, wherein the value of the syntax element is used to determine a truncation range, the truncation range is used in the filtering process (the truncation range is used to limit the number of modifications allowed on a given sample by a neighboring sample).

Вариант 8 осуществления. Декодер (30), содержащий схему обработки для выполнения способа согласно любому из вариантов осуществления 1-7.Embodiment 8. A decoder (30) containing processing circuitry for performing the method according to any one of embodiments 1-7.

Вариант 9 осуществления. Компьютерный программный продукт, содержащий программный код для выполнения способа согласно любому из вариантов осуществления 1-7.Option 9 implementation. A computer program product comprising program code for performing the method according to any one of embodiments 1-7.

Вариант 10 осуществления. Декодер, содержащий:Embodiment 10. Decoder containing:

один или более процессоров; иone or more processors; And

энергонезависимый машиночитаемый носитель данных, связанный с процессорами и хранящий программу для выполнения процессорами, причем программа, когда выполняется процессорами, конфигурирует декодер для выполнения способа согласно любому из вариантов осуществления 1-7.a non-volatile computer-readable storage medium coupled to the processors and storing a program for execution by the processors, wherein the program, when executed by the processors, configures a decoder to perform the method according to any of embodiments 1-7.

Ниже приводится объяснение применений способа кодирования, а также способа декодирования, как показано в вышеупомянутых вариантах осуществления, и системы, использующей их.The following will be an explanation of the applications of the encoding method as well as the decoding method as shown in the above-mentioned embodiments and the system using them.

Фиг.22 является блок-схемой, показывающей систему 3100 поставки контента для реализации услуги распространения контента. Данная система 3100 поставки контента включает в себя устройство 3102 захвата, терминальное устройство 3106 и необязательно включает в себя дисплей 3126. Устройство 3102 захвата осуществляет связь с терминальным устройством 3106 по линии 3104 связи. Линия связи может включать в себя канал 13 связи, описанный выше. Линия 3104 связи включает в себя, но без ограничения упомянутым, WIFI, Ethernet, кабель, беспроводную связь (3G/4G/5G), USB или любую их комбинацию, или подобное.FIG. 22 is a block diagram showing a content delivery system 3100 for implementing a content distribution service. This content delivery system 3100 includes a capture device 3102, a terminal device 3106, and optionally includes a display 3126. The capture device 3102 communicates with the terminal device 3106 via a communication line 3104. The communication link may include a communication channel 13 described above. Communication link 3104 includes, but is not limited to, WIFI, Ethernet, cable, wireless (3G/4G/5G), USB, or any combination thereof, or the like.

Устройство 3102 захвата генерирует данные и может кодировать данные способом кодирования, показанным в вышеуказанных вариантах осуществления. В качестве альтернативы устройство 3102 захвата может распространять данные на сервер потоковой передачи (не показан на Фигурах), а сервер кодирует данные и передает закодированные данные на терминальное устройство 3106. Устройство 3102 захвата включает в себя, но без ограничения упомянутым, камеру, смартфон или планшет, компьютер или ноутбук, систему видеоконференцсвязи, КПК, устанавливаемое на транспортное средство устройство, или комбинацию любых из них, или тому подобное. Например, устройство 3102 захвата может включать в себя устройство-источник 12, описанное выше. Когда данные включают в себя видео, видеокодер 20, включенный в устройство 3102 захвата, может фактически выполнять обработку видеокодирования. Когда данные включают в себя аудио (т.е. речь), аудиокодер, включенный в устройство 3102 захвата, может фактически выполнять обработку аудиокодирования. Для некоторых практических сценариев устройство 3102 захвата распространяет закодированные видео- и аудиоданные путем их совместного мультиплексирования. Для других практических сценариев, например, в системе видеоконференцсвязи, кодированные аудиоданные и кодированные видеоданные не мультиплексируются. Устройство 3102 захвата распространяет закодированные аудиоданные и закодированные видеоданные на терминальное устройство 3106 по-отдельности.The capture device 3102 generates data and can encode the data using the encoding method shown in the above embodiments. Alternatively, capture device 3102 may distribute the data to a streaming server (not shown in the Figures), and the server encodes the data and transmits the encoded data to terminal device 3106. Capture device 3102 includes, but is not limited to, a camera, smartphone, or tablet. , a computer or laptop, a video conferencing system, a PDA, a vehicle-mounted device, or a combination of any of these, or the like. For example, capture device 3102 may include source device 12 described above. When the data includes video, the video encoder 20 included in the capture device 3102 may actually perform video encoding processing. When the data includes audio (ie, speech), an audio encoder included in the capture device 3102 may actually perform audio encoding processing. For some practical scenarios, capture device 3102 distributes encoded video and audio data by multiplexing them together. For other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. The capture device 3102 distributes the encoded audio data and the encoded video data to the terminal device 3106 separately.

В системе 3100 поставки контента терминальное устройство 310 принимает и воспроизводит закодированные данные. Терминальное устройство 3106 может быть устройством с возможностью приема и извлечения данных, таким как смартфон или планшет 3108, компьютер или ноутбук 3110, сетевой видеорегистратор (NVR)/цифровой видеорегистратор (DVR) 3112, телевизор 3114, телеприставка (STB) 3116, система 3118 видеоконференцсвязи, система 3120 видеонаблюдения, карманный персональный компьютер (КПК) 3122, устанавливаемое на транспортное средство устройство 3124, или их комбинация, или подобное, способное декодировать вышеупомянутые закодированные данные. Например, терминальное устройство 3106 может включать в себя устройство-получатель 14, описанное выше. Когда закодированные данные включают в себя видео, видеодекодеру 30, включенному в терминальное устройство, отдается приоритет для выполнения видеодекодирования. Когда закодированные данные включают в себя аудио, аудиодекодеру, включенному в терминальное устройство, отдается приоритет для выполнения обработки аудиодекодирования.In the content delivery system 3100, the terminal device 310 receives and reproduces encoded data. Terminal device 3106 may be a device capable of receiving and retrieving data, such as a smartphone or tablet 3108, computer or laptop 3110, network video recorder (NVR)/digital video recorder (DVR) 3112, television 3114, set-top box (STB) 3116, video conferencing system 3118 , a video surveillance system 3120, a personal digital assistant (PDA) 3122, a vehicle-mounted device 3124, or a combination thereof, or the like, capable of decoding the above encoded data. For example, terminal device 3106 may include receiver device 14 described above. When the encoded data includes video, the video decoder 30 included in the terminal device is given priority to perform video decoding. When the encoded data includes audio, an audio decoder included in the terminal device is given priority to perform audio decoding processing.

Для терминального устройства со своим дисплеем, например, смартфона или планшета 3108, компьютера или ноутбука 3110, сетевого видеорегистратора (NVR)/цифрового видеорегистратора (DVR) 3112, телевизора 3114, карманного персонального компьютера (КПК) 3122 или устанавливаемого на транспортное средство устройства 3124, терминальное устройство может передавать декодированные данные на свой дисплей. Для терминального устройства, не оборудованного дисплеем, такого как STB 3116, система 3118 видеоконференцсвязи или система 3120 видеонаблюдения, контакт в нем устанавливается с внешним дисплеем 3126 для приема и показа декодированных данных.For a terminal device with its own display, such as a smartphone or tablet 3108, a computer or laptop 3110, a network video recorder (NVR)/digital video recorder (DVR) 3112, a television 3114, a personal digital assistant (PDA) 3122, or a vehicle-mounted device 3124, the terminal device can transmit the decoded data to its display. For a non-display terminal device, such as the STB 3116, video conferencing system 3118, or video surveillance system 3120, it communicates with an external display 3126 to receive and display the decoded data.

Когда каждое устройство в этой системе выполняет кодирование или декодирование, может использоваться устройство кодирования картинки или устройство декодирования картинки, как показано в вышеупомянутых вариантах осуществления.When each device in this system performs encoding or decoding, a picture encoding device or a picture decoding device may be used, as shown in the above embodiments.

Фиг.23 является схемой, показывающей структуру примерного терминального устройства 3106. После того, как терминальное устройство 3106 принимает поток от устройства 3102 захвата, блок 3202 обработки протокола анализирует протокол передачи упомянутого потока. Протокол включает в себя, но без ограничения упомянутым, протокол потоковой передачи в реальном времени (RTSP), протокол передачи гипертекста (HTTP), протокол потоковой передачи HTTP Live (HLS), MPEG-DASH, транспортный протокол реального времени (RTP), протокол обмена сообщениями в реальном времени (RTMP) или любую их комбинацию, или подобное.FIG. 23 is a diagram showing the structure of an exemplary terminal device 3106. After the terminal device 3106 receives a stream from the capture device 3102, a protocol processing unit 3202 analyzes the transmission protocol of the stream. The protocol includes, but is not limited to, Real Time Streaming Protocol (RTSP), Hypertext Transfer Protocol (HTTP), HTTP Live Streaming Protocol (HLS), MPEG-DASH, Real Time Transport Protocol (RTP), Exchange Protocol real-time messaging (RTMP) or any combination thereof, or the like.

После того, как блок 3202 обработки протокола обработает поток, генерируется файл потока. Файл выводится в блок 3204 демультиплексирования. Блок 3204 демультиплексирования может разделять мультиплексированные данные на закодированные аудиоданные и закодированные видеоданные. Как описано выше, в других практических сценариях, например, в системе видеоконференцсвязи, закодированные аудиоданные и закодированные видеоданные не мультиплексируются. В этой ситуации кодированные данные передаются на видеодекодер 3206 и аудиодекодер 3208 без использования блока 3204 демультиплексирования.After the protocol processing unit 3202 processes the stream, a stream file is generated. The file is output to a demultiplexing block 3204. A demultiplexer 3204 may separate the multiplexed data into encoded audio data and encoded video data. As described above, in other practical scenarios, such as in a video conferencing system, encoded audio data and encoded video data are not multiplexed. In this situation, the encoded data is transmitted to the video decoder 3206 and audio decoder 3208 without using the demultiplexer 3204.

Посредством обработки демультиплексирования генерируются элементарный видеопоток (ES), аудио ES и, необязательно, субтитры. Видеодекодер 3206, который включает в себя видеодекодер 30, описанный в вышеупомянутых вариантах осуществления, декодирует видео ES с помощью способа декодирования, как показано в вышеупомянутых вариантах осуществления, для генерирования видеокадра и подает эти данные в синхронный блок 3212. Аудиодекодер 3208 декодирует аудио ES для генерирования аудиокадра и подает эти данные на синхронный блок 3212. В качестве альтернативы видеокадр может сохраняться в буфере (не показан на ФИГ. 23) перед его подачей в синхронный блок 3212. Точно так же аудиокадр может сохраняться в буфере (не показан на ФИГ. 23) перед его подачей в синхронный блок 3212.Through demultiplexing processing, an elementary video stream (ES), audio ES, and optionally subtitles are generated. The video decoder 3206, which includes the video decoder 30 described in the above embodiments, decodes the ES video using the decoding method as shown in the above embodiments to generate a video frame and supplies this data to the synchronous block 3212. The audio decoder 3208 decodes the ES audio to generate audio frame and supplies this data to synchronous block 3212. Alternatively, the video frame may be stored in a buffer (not shown in FIG. 23) before it is supplied to synchronous block 3212. Likewise, the audio frame may be stored in a buffer (not shown in FIG. 23) before it is fed into the 3212 synchronous block.

Синхронный блок 3212 синхронизирует видеокадр и аудиокадр и подает видео/аудио на видео/аудио дисплей 3214. Например, синхронный блок 3212 синхронизирует представление видео и аудио информации. Информация может кодироваться в синтаксисе с использованием временных меток, касающихся представления кодированных аудио- и видеоданных, а также временных меток, касающихся доставки самого потока данных.A synchronization block 3212 synchronizes a video frame and an audio frame and supplies video/audio to a video/audio display 3214. For example, a synchronization block 3212 synchronizes the presentation of video and audio information. Information may be encoded in syntax using timestamps relating to the presentation of the encoded audio and video data, as well as timestamps relating to the delivery of the data stream itself.

Если субтитры включены в поток, декодер 3210 субтитров декодирует субтитры и синхронизирует их с видеокадром и звуковым кадром и передает видео/аудио/субтитры на дисплей 3216 видео/аудио/субтитров.If subtitles are included in the stream, subtitle decoder 3210 decodes the subtitles and synchronizes them with the video frame and audio frame and transmits the video/audio/subtitles to the video/audio/subtitle display 3216.

Настоящее изобретение не ограничивается вышеупомянутой системой, и либо устройство кодирования картинки, либо устройство декодирования картинки в вышеупомянутых вариантах осуществления может быть включено в другую систему, например, автомобильную систему.The present invention is not limited to the above system, and either the picture encoding device or the picture decoding device in the above embodiments may be included in another system, such as an automobile system.

Хотя варианты осуществления данного изобретения были в основном описаны на основе видеокодировки, следует отметить, что варианты осуществления системы 10 кодировки, кодера 20 и декодера 30 (и, соответственно, системы 10), а также другие варианты осуществления, описанные в данном документе, также могут быть выполнены с возможностью обработки или кодировки неподвижной картинки, т.е. обработки или кодировки отдельной картинки независимо от любой предшествующей или последующей картинки, как при видеокодировке. В общем, только блоки 244 внешнего предсказания (кодер) и 344 (декодер) могут не быть доступны в случае, если кодировка для обработки картинки ограничена одной картинкой 17. Все другие функции (также называемые инструментами или технологиями) видеокодера 20 и видеодекодера 30 могут в равной степени использоваться для обработки статических картинок, например, вычисление остатка 204/304, преобразование 206, квантование 208, обратное квантование 210/310, (обратное) преобразование 212/312, разделение 262/362, внутреннее предсказание 254/354 и/или контурная фильтрация 220, 320, энтропийное кодирование 270 и энтропийное декодирование 304.Although embodiments of the present invention have been primarily described in terms of video encoding, it should be noted that embodiments of encoding system 10, encoder 20, and decoder 30 (and thus system 10), as well as other embodiments described herein, may also be configured to process or encode a still picture, i.e. processing or encoding a single picture independently of any preceding or subsequent picture, as in video encoding. In general, only the inter prediction (encoder) and 344 (decoder) blocks 244 may not be available if the encoding for picture processing is limited to a single picture 17. All other functions (also referred to as tools or techniques) of video encoder 20 and video decoder 30 may equally used for processing static images, for example, remainder calculation 204/304, transform 206, quantization 208, inverse quantization 210/310, (inverse) transform 212/312, division 262/362, intra prediction 254/354 and/or contour filtering 220, 320, entropy encoding 270 and entropy decoding 304.

Варианты осуществления, например, кодера 20 и декодера 30, и функций, описанных в данном документе, например, со ссылкой на кодер 20 и декодер 30, могут быть реализованы в аппаратных средствах, программном обеспечении, встроенном программном обеспечении или любой их комбинации. Если реализованы в программном обеспечении, функции могут храниться на считываемом компьютером носителе или передаваться через среду связи в виде одной или более инструкций или кода и исполняться аппаратным блоком обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальному носителю, например носителю данных, или среде связи, в том числе любой среде, которая обеспечивает передачу компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, считываемые компьютером носители обычно могут соответствовать (1) материальным считываемым компьютером носителям, которые являются долговременными, или (2) среде связи, такой как сигнал или несущая волна. Носители данных могут быть любыми доступными носителями, к которым может быть осуществлен доступ одним или более компьютерами или одним или более процессорами для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.Embodiments of, for example, encoder 20 and decoder 30, and the functions described herein, for example, with reference to encoder 20 and decoder 30, may be implemented in hardware, software, firmware, or any combination thereof. If implemented in software, the functions may be stored on a computer-readable medium or transmitted through a communication medium in the form of one or more instructions or code and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that enables transmission of a computer program from one location to another, such as according to a communications protocol. Thus, computer readable media may typically correspond to (1) tangible computer readable media that is durable, or (2) a communication medium such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code and/or data structures for implementing the techniques described in this disclosure. The computer program product may include computer-readable media.

В качестве примера, но не ограничения, такие машиночитаемые носители данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства, флэш-память или любой другой носитель, который может использоваться для хранения желаемого программного кода в форме инструкций или структур данных и может быть доступен для компьютера. Кроме того, любое соединение правильно называть считываемой компьютером средой. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная-, радио- и микроволновая- связь, тогда коаксиальный кабель, оптоволоконный кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасная-, радио- и микроволновая- связь, включаются в определение носителя. Однако следует понимать, что считываемые компьютером носители и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие кратковременные носители, а вместо этого направлены на долговременные, материальные запоминающие носители. Диск (disk) и диск (disc), используемые используемые в данном документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), дискету и диск Blu-ray, где диски (disks) обычно воспроизводят данные магнитным образом, а диски (discs) воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также должны быть включены в объем считываемых компьютером носителей.By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device or other magnetic storage devices, flash memory or any other storage medium, which can be used to store desired program code in the form of instructions or data structures and can be accessed by a computer. Additionally, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a website, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave communications, then coaxial cable, fiber optic cable, twisted pair, DSL or wireless technologies such as infrared, radio and microwave communications are included in the definition of media. However, it should be understood that computer readable and storage media do not include connections, carrier waves, signals, or other short-lived media, but are instead directed to long-term, tangible storage media. The disk and disc used in this document include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, where discs ) typically reproduce data magnetically, while discs (discs) reproduce data optically using lasers. Combinations of the above should also be included in the scope of computer readable media.

Инструкции могут исполняться одним или более процессорами, такими как один или более цифровых сигнальных процессоров (DSP), микропроцессоров общего назначения, интегральных схем специального назначения (ASIC), программируемых вентильных матриц (FPGA) или других эквивалентных интегральных или дискретных логических схем. Соответственно, термин «процессор», используемый в данном документе, может относиться к любой из вышеупомянутой структуры или любой другой структуре, подходящей для реализации методик, описанных в данном документе. Кроме того, в некоторых аспектах описанные здесь функциональные возможности могут быть предоставлены в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования и декодирования или включенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application-specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits. Accordingly, the term “processor” as used herein can refer to any of the above structure or any other structure suitable for implementing the techniques described herein. Additionally, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules configured for encoding and decoding or included in a bundled codec. In addition, the techniques may be fully implemented in one or more circuits or logic elements.

Методики этого раскрытия могут быть реализованы в большом количестве устройств или аппаратных компонентов, в том числе беспроводной телефон, интегральная схема (ИС) или набор ИС (например, набор микросхем). В этом раскрытии описаны различные компоненты, модули или блоки, чтобы подчеркнуть функциональные аспекты устройств, выполненных с возможностью выполнения раскрытых технологий, но не обязательно требующих реализации различными аппаратными блоками. Скорее, как описано выше, различные блоки могут быть объединены в аппаратный блок кодека или предоставлены совокупностью взаимодействующих аппаратных блоков, в том числе один или более процессоров, как описано выше, вместе с подходящим программным обеспечением и/или микропрограммным обеспечением.The techniques of this disclosure may be implemented in a wide variety of devices or hardware components, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). This disclosure describes various components, modules, or blocks to highlight functional aspects of devices configured to implement the disclosed technologies, but not necessarily required to be implemented by different hardware units. Rather, as described above, the various blocks may be combined into a codec hardware block or provided by a collection of interacting hardware blocks, including one or more processors as described above, together with suitable software and/or firmware.

Claims (35)

1. Способ кодировки, реализуемый устройством декодирования, содержащий:1. An encoding method implemented by a decoding device, containing: получение битового потока, причем по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF);obtaining a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, wherein the syntax element indicates a truncation index of a truncation value for the adaptive loop filter (ALF); синтаксический анализ битового потока для получения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины;parsing the bitstream to obtain the value of a syntax element for the current block, wherein the syntax element is encoded using a fixed-length code; применение адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.Apply adaptive contour filtering to the current block based on the value of the syntax element for the current block. 2. Способ по п. 1, в котором код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита.2. The method of claim 1, wherein the fixed-length code comprises a binary representation of an unsigned integer using at least one bit. 3. Способ по п. 1 или 2, в котором элемент синтаксиса применяется к набору блоков и текущий блок представляет собой один блок в наборе блоков.3. The method of claim 1 or 2, wherein the syntax element is applied to a set of blocks and the current block is one block in the set of blocks. 4. Способ по п. 1 или 2, в котором элемент синтаксиса находится на уровне слайса.4. The method according to claim 1 or 2, in which the syntax element is at the slice level. 5. Способ по любому из пп. 1-4, в котором элемент синтаксиса представляет собой индекс значения усечения ALF и по меньшей мере один бит, представляющий элемент синтаксиса, означает два бита.5. Method according to any one of paragraphs. 1-4, in which the syntax element is an index of the truncation value ALF, and at least one bit representing the syntax element means two bits. 6. Способ по п. 5, в котором индекс значения усечения ALF идентифицирует одно значение усечения из четырех значений усечения.6. The method of claim 5, wherein the truncation value index ALF identifies one truncation value from the four truncation values. 7. Способ по любому из пп. 1-6, в котором значение индекса значения усечения ALF используется для определения диапазона усечения, причем диапазон усечения используется в процессе адаптивной контурной фильтрации.7. Method according to any one of paragraphs. 1-6, in which the truncation value index value ALF is used to determine the truncation range, wherein the truncation range is used in the adaptive loop filtering process. 8. Способ кодировки, реализуемый устройством кодирования, содержащий:8. An encoding method implemented by an encoding device, containing: определение значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF);determining a syntax element value for the current block, wherein the syntax element specifies a truncation index of the truncation value for the adaptive loop filter (ALF); генерирование битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины.generating a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the syntax element is encoded using a fixed length code. 9. Способ по п. 8, в котором код фиксированной длины содержит двоичное представление беззнакового целого числа с использованием по меньшей мере одного бита элемента синтаксиса.9. The method of claim 8, wherein the fixed-length code comprises a binary representation of the unsigned integer using at least one syntax element bit. 10. Способ по п. 8 или 9, в котором элемент синтаксиса применяется к набору блоков и текущий блок является одним блоком в наборе блоков.10. The method of claim 8 or 9, wherein the syntax element is applied to a set of blocks and the current block is one block in the set of blocks. 11. Способ по п. 8 или 9, в котором элемент синтаксиса находится на уровне слайса.11. The method of claim 8 or 9, wherein the syntax element is at the slice level. 12. Способ по любому из пп. 8-11, в котором элемент синтаксиса представляет собой индекс значения усечения ALF и по меньшей мере один бит, представляющий элемент синтаксиса, означает два бита.12. Method according to any one of paragraphs. 8-11, in which the syntax element is an ALF truncation value index and at least one bit representing the syntax element means two bits. 13. Способ по п. 12, в котором индекс значения усечения ALF идентифицирует одно значение усечения из четырех значений усечения.13. The method of claim 12, wherein the truncation value index ALF identifies one truncation value from the four truncation values. 14. Способ по любому из пп. 8-13, в котором значение индекса значения усечения ALF используется для определения диапазона усечения, причем диапазон усечения используется в процессе адаптивной контурной фильтрации.14. Method according to any one of paragraphs. 8-13, in which the truncation value index value ALF is used to determine a truncation range, wherein the truncation range is used in the adaptive loop filtering process. 15. Декодер (30), содержащий схему обработки для выполнения способа по любому из пп. 1-7.15. A decoder (30) comprising a processing circuit for performing the method according to any one of claims. 1-7. 16. Кодер (20), содержащий схему обработки для выполнения способа по любому из пп. 8-14.16. An encoder (20) containing a processing circuit for performing the method according to any one of claims. 8-14. 17. Энергонезависимый машиночитаемый носитель, несущий программный код, который при исполнении компьютерным устройством заставляет компьютерное устройство выполнять способ по любому из пп. 1-14.17. A non-transitory computer-readable medium carrying program code that, when executed by a computer device, causes the computer device to perform the method according to any one of claims. 1-14. 18. Декодер, содержащий:18. Decoder containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует декодер для выполнения способа по любому из пп. 1-7.a non-volatile computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures a decoder to perform the method of any one of claims. 1-7. 19. Кодер, содержащий:19. Encoder containing: один или более процессоров; иone or more processors; And энергонезависимый машиночитаемый носитель, связанный с процессорами и хранящий программную часть для исполнения процессорами, причем программная часть, когда исполняется процессорами, конфигурирует кодер для выполнения способа по любому из пп. 8-14.a non-transitory computer-readable medium coupled to the processors and storing a program portion for execution by the processors, wherein the program portion, when executed by the processors, configures an encoder to perform the method of any one of claims. 8-14. 20. Декодер, содержащий:20. Decoder containing: блок энтропийного декодирования, сконфигурированный для получения битового потока, причем по меньшей мере один бит в битовом потоке представляет элемент синтаксиса для текущего блока, причем элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF);an entropy decoding block configured to obtain a bitstream, wherein at least one bit in the bitstream represents a syntax element for the current block, wherein the syntax element indicates a truncation index of a truncation value for the adaptive loop filter (ALF); блок энтропийного декодирования дополнительно сконфигурирован для синтаксического анализа битового потока для получения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины; иthe entropy decoding unit is further configured to parse the bitstream to obtain a syntax element value for the current block, wherein the syntax element is encoded using a fixed length code; And блок фильтрации, сконфигурированный для применения адаптивной контурной фильтрации к текущему блоку на основе значения элемента синтаксиса для текущего блока.a filtering block configured to apply adaptive loop filtering to the current block based on the value of the syntax element for the current block. 21. Кодер, содержащий:21. Encoder containing: блок определения, сконфигурированный для определения значения элемента синтаксиса для текущего блока, при этом элемент синтаксиса указывает индекс усечения значения усечения для адаптивного контурного фильтра (ALF);a determination block configured to determine the value of a syntax element for the current block, wherein the syntax element indicates a truncation index of the truncation value for the adaptive loop filter (ALF); блок энтропийного кодирования, сконфигурированный для генерирования битового потока на основе значения элемента синтаксиса, при этом по меньшей мере один бит в битовом потоке представляет элемент синтаксиса, при этом элемент синтаксиса кодируется с использованием кода фиксированной длины.an entropy encoding unit configured to generate a bit stream based on the value of the syntax element, wherein at least one bit in the bit stream represents the syntax element, wherein the syntax element is encoded using a fixed length code.
RU2021135185A 2019-05-04 2020-04-30 Encoder, decoder and corresponding methods using adaptive loop filter RU2823558C2 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/843,431 2019-05-04

Publications (2)

Publication Number Publication Date
RU2021135185A RU2021135185A (en) 2023-06-06
RU2823558C2 true RU2823558C2 (en) 2024-07-24

Family

ID=

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103096054B (en) * 2011-11-04 2015-07-08 华为技术有限公司 Video image filtering processing method and device thereof
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
US9386316B2 (en) * 2007-10-12 2016-07-05 Qualcomm Incorporated Adaptive coding of video block header information
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
WO2017045580A1 (en) * 2015-09-14 2017-03-23 Mediatek Singapore Pte. Ltd Method and apparatus of advanced de-blocking filter in video coding
CN102857746B (en) * 2011-06-28 2017-03-29 中兴通讯股份有限公司 Loop filtering decoding method and device
RU2654138C2 (en) * 2012-07-02 2018-05-16 Квэлкомм Инкорпорейтед Video parameter set for hevc and extensions
WO2018135830A1 (en) * 2017-01-20 2018-07-26 세종대학교 산학협력단 Image encoding method/device, image decoding method/device and recording medium having bitstream stored thereon
CN109076219A (en) * 2016-05-13 2018-12-21 夏普株式会社 Picture decoding apparatus and picture coding device

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9386316B2 (en) * 2007-10-12 2016-07-05 Qualcomm Incorporated Adaptive coding of video block header information
US9094658B2 (en) * 2010-05-10 2015-07-28 Mediatek Inc. Method and apparatus of adaptive loop filtering
US9998737B2 (en) * 2010-05-10 2018-06-12 Hfi Innovation Inc. Method and apparatus of adaptive loop filtering
CN102857746B (en) * 2011-06-28 2017-03-29 中兴通讯股份有限公司 Loop filtering decoding method and device
CN103096054B (en) * 2011-11-04 2015-07-08 华为技术有限公司 Video image filtering processing method and device thereof
US9451252B2 (en) * 2012-01-14 2016-09-20 Qualcomm Incorporated Coding parameter sets and NAL unit headers for video coding
RU2654138C2 (en) * 2012-07-02 2018-05-16 Квэлкомм Инкорпорейтед Video parameter set for hevc and extensions
WO2017045580A1 (en) * 2015-09-14 2017-03-23 Mediatek Singapore Pte. Ltd Method and apparatus of advanced de-blocking filter in video coding
CN109076219A (en) * 2016-05-13 2018-12-21 夏普株式会社 Picture decoding apparatus and picture coding device
WO2018135830A1 (en) * 2017-01-20 2018-07-26 세종대학교 산학협력단 Image encoding method/device, image decoding method/device and recording medium having bitstream stored thereon

Similar Documents

Publication Publication Date Title
JP7609540B2 (en) Encoder, decoder and corresponding method using adaptive loop filter - Patents.com
US11388422B2 (en) Encoder, a decoder and corresponding methods related to intra prediction mode
KR20210100737A (en) Corresponding methods using encoders, decoders and adaptive loop filters
WO2020211765A1 (en) An encoder, a decoder and corresponding methods harmonzting matrix-based intra prediction and secoundary transform core selection
CA3131311A1 (en) An encoder, a decoder and corresponding methods for inter prediction
AU2019386917B2 (en) Encoder, decoder and corresponding methods of most probable mode list construction for blocks with multi-hypothesis prediction
CA3114341C (en) An encoder, a decoder and corresponding methods using compact mv storage
CN113287301A (en) Inter-component linear modeling method and device for intra-frame prediction
CN114556923B (en) Encoder, decoder and corresponding method using interpolation filtering
AU2024201152A1 (en) An encoder, a decoder and corresponding methods using intra mode coding for intra prediction
KR102779365B1 (en) Method and device for intra prediction without saddle
RU2823558C2 (en) Encoder, decoder and corresponding methods using adaptive loop filter
WO2021025597A1 (en) Method and apparatus of sample adaptive offset in-loop filter with application region size constraint
WO2020149769A1 (en) An encoder, a decoder and corresponding methods for local illumination compensation
RU2822448C2 (en) Encoder, decoder and corresponding intra-prediction methods
WO2021008470A1 (en) An encoder, a decoder and corresponding methods
CN113994683A (en) Encoder, decoder and corresponding methods for chroma quantization control