RU2783335C2 - Device and signaling of adaptive loop filter (alf) on block basis - Google Patents

Device and signaling of adaptive loop filter (alf) on block basis Download PDF

Info

Publication number
RU2783335C2
RU2783335C2 RU2020138901A RU2020138901A RU2783335C2 RU 2783335 C2 RU2783335 C2 RU 2783335C2 RU 2020138901 A RU2020138901 A RU 2020138901A RU 2020138901 A RU2020138901 A RU 2020138901A RU 2783335 C2 RU2783335 C2 RU 2783335C2
Authority
RU
Russia
Prior art keywords
adaptive loop
block
loop filter
current picture
video
Prior art date
Application number
RU2020138901A
Other languages
Russian (ru)
Other versions
RU2020138901A (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 RU2020138901A publication Critical patent/RU2020138901A/en
Application granted granted Critical
Publication of RU2783335C2 publication Critical patent/RU2783335C2/en

Links

Images

Abstract

FIELD: video encoding/decoding.
SUBSTANCE: method for adaptive loop filtration of video data is proposed. The method contains a stage, at which multiple sets of adaptive loop filters applicable to a slice are determined at a slice level. A set of adaptive loop filters of the mentioned multiple sets of adaptive loop filters is determined at a block level for a current image block, while the current image block is a coding tree unit (CTU) of the mentioned slice, and the set of adaptive loop filters includes multiple adaptive loop filters including one or more previous adaptive loop filters and additionally including a fixed adaptive loop filter. Next, adaptive loop filtration of the current image block is performed in accordance with the set of adaptive loop filters.
EFFECT: increase in the efficiency of adaptive loop filtration by reduction in signaling costs and computational complexity.
36 cl, 11 dwg, 2 tbl

Description

[0001] Настоящая заявка испрашивает приоритет патентной заявки США № 16/427,017, поданной 30 мая 2019, которая испрашивает приоритет предварительной заявки США № 62/679,685, поданной 1 июня 2018, все содержания которых включены в настоящий документ посредством ссылки.[0001] This application claims priority of U.S. Patent Application No. 16/427,017, filed May 30, 2019, which claims priority of U.S. Provisional Application No. 62/679,685, filed June 1, 2018, the entire contents of which are incorporated herein by reference.

Область техники Technical field

[0002] Настоящее раскрытие относится к кодированию видео и декодированию видео.[0002] The present disclosure relates to video coding and video decoding.

Предшествующий уровень техники Prior Art

[0003] Функциональные возможности цифрового видео могут быть включены в широкий диапазон устройств, включая цифровые телевизоры, цифровые системы прямого вещания, системы беспроводного вещания, персональные цифровые ассистенты (PDA), ноутбуки или стационарные компьютеры, планшеты, электронные книги, цифровые камеры, цифровые записывающие устройства, цифровые медиаплееры, видео игровые устройства, видео игровые консоли, сотовые или спутниковые радиотелефоны, так называемые “смартфоны”, устройства видео телеконференций, устройства потоковой передачи (стриминга) видео и тому подобное. Цифровые видеоустройства реализуют методы сжатия видео, такие как методы, описанные в стандартах, определенных MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4, часть 10, Расширенное кодирование видео (AVC), недавно завершенный стандарт Высокоэффективного кодирования видео (HEVC) и расширения таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методов сжатия видео. [0003] Digital video functionality can be included in a wide range of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablets, e-readers, digital cameras, digital recorders devices, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called “smartphones”, video teleconferencing devices, video streaming devices, and the like. Digital video devices implement video compression techniques such as those described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10, Advanced Video Coding (AVC ), the recently completed High Efficiency Video Coding (HEVC) standard and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video compression techniques.

[0004] Методы сжатия видео выполняют пространственное (внутри картинки) предсказание и/или временное (между картинками) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, слайс видео (т.е., кадр видео или часть кадра видео) может разбиваться на блоки видео, которые могут также называться блоками дерева, единицами кодирования (CU) и/или узлами кодирования. Блоки видео в интра-(внутри-)кодированном (I) слайсе картинки кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках в одной и той же картинке. Блоки видео в интер-(меж-)кодированном (P или B) слайсе картинки могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в одной и той же картинке или временное предсказание относительно опорных выборок в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры. [0004] Video compression techniques perform spatial (intra-picture) prediction and/or temporal (inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (ie, a video frame or part of a video frame) may be divided into video blocks, which may also be referred to as tree blocks, coding units (CUs), and/or coding nodes. Video blocks in an intra-(intra-)coded (I) slice of a picture are encoded using spatial prediction with respect to reference samples in adjacent blocks in the same picture. Video blocks in an inter-(inter-)coded (P or B) slice of a picture may use spatial prediction with respect to reference samples in adjacent blocks in the same picture, or temporal prediction with respect to reference samples in other reference pictures. Pictures may be referred to as frames, and reference pictures may be referred to as reference frames.

[0005] Пространственное или временное предсказание приводит к предсказанному блоку для блока, подлежащего кодированию. Остаточные данные представляют пиксельные разности между исходным блоком, подлежащим кодированию, и предсказанным блоком. Интер-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, образующих предсказанный блок, и остаточные данные указывают разность между закодированным блоком и предсказанным блоком. Интра-кодированный блок кодируется в соответствии с режимом интра-кодирования и остаточными данными. Для дополнительного сжатия, остаточные данные могут быть преобразованы из пиксельной области в область преобразования, что приводит к остаточным коэффициентам преобразования, которые затем могут квантоваться. Квантованные коэффициенты преобразования, первоначально упорядоченные в двумерном массиве, могут сканироваться, чтобы сформировать одномерный вектор коэффициентов преобразования, и энтропийное кодирование может применяться для достижения еще большего сжатия.[0005] Spatial or temporal prediction results in a predicted block for the block to be coded. The residual data represents the pixel differences between the original block to be encoded and the predicted block. The inter-coded block is encoded according to a motion vector that indicates the block of reference samples constituting the predicted block, and the residual data indicates the difference between the encoded block and the predicted block. The intra-coded block is encoded according to the intra-coding mode and residual data. For additional compression, the residual data may be converted from a pixel domain to a transform domain, resulting in residual transform coefficients, which may then be quantized. The quantized transform coefficients, initially ordered in a two-dimensional array, can be scanned to form a one-dimensional vector of transform coefficients, and entropy encoding can be applied to achieve even more compression.

Краткое описание сущности изобретения Brief description of the essence of the invention

[0006] Настоящее раскрытие описывает методы, связанные с методами фильтрации, упоминаемыми как “адаптивный контурный фильтр (ALF)”. ALF может использоваться на стадии пост-обработки, для кодирования в контуре или в процессе предсказания. Фильтрация с адаптивным смещением выборки (SAO) и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео. Поэтому описанные методы могут применяться к множеству методов кодирования видео на блочной основе, в которых видео восстанавливается на поблочной основе. Блоки пикселов могут по-разному упоминаться как единицы дерева кодирования (CTU), наибольшие единицы кодирования (LCU), единицы предсказания (PU) или определяться другой терминологией в зависимости от используемого кодирования видео на блочной основе, как описано далее.[0006] The present disclosure describes techniques associated with filtering techniques referred to as "adaptive loop filter (ALF)". ALF can be used in post-processing, for in-loop coding, or in the prediction process. Adaptive sampling offset (SAO) filtering and/or adaptive loop filtering may be applied to any of various existing video codec technologies, such as HEVC compatible codec technology, or represent an efficient coding tool in any future video coding standards. Therefore, the described techniques can be applied to a variety of block-based video coding techniques in which video is reconstructed on a block-by-block basis. Pixel blocks may be variously referred to as coding tree units (CTUs), largest coding units (LCUs), prediction units (PUs), or other terminology depending on the block-based video coding used, as described below.

[0007] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер видео и декодер видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео вблизи конкретного блока, тем самым повышая эффективность кодирования и/или качество картинки.[0007] As will be explained in more detail below, in accordance with the techniques of the present disclosure, a video encoder and a video decoder may be configured to determine adaptive loop filter banks, from a plurality of adaptive loop filter banks, on a block-by-block basis (e.g., for blocks, for which enable adaptive loop filtering). Thus, the set of adaptive loop filters available for use with a particular block can be more adapted to the local characteristics of the video data in the vicinity of a particular block, thereby improving coding efficiency and/or picture quality.

[0008] В одном примере, способ включает в себя определение соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0008] In one example, the method includes determining a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous an adaptive loop filter used in one or more previous pictures, and adaptive loop filtering of blocks of the current picture in accordance with the respective sets of adaptive loop filters.

[0009] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя память, сконфигурированную, чтобы хранить текущую картинку данных видео, и один или несколько процессоров в коммуникации с памятью, один или несколько процессоров сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (или предыдущих картинках, слайсах или блоков другой гранулярности), и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0009] In another example, a device configured to encode video data includes a memory configured to store a current picture of the video data and one or more processors in communication with the memory, one or more processors configured to determine a corresponding set adaptive loop filters, from a plurality of adaptive loop filter sets, to the current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous adaptive loop filter used in one or more previous pictures (or previous images, slices or blocks of other granularity), and perform adaptive contour filtering of blocks of the current picture in accordance with the corresponding sets of adaptive contour filters.

[0010] В другом примере, устройство, сконфигурированное, чтобы кодировать данные видео, включает в себя средство для определения соответственного набора адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и средство для адаптивной контурной фильтрации блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0010] In another example, an apparatus configured to encode video data includes means for determining an appropriate adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks in which adaptive loop filtering is used, wherein each respective adaptive loop filter set includes a previous adaptive loop filter used in one or more previous pictures and means for adaptively loop filtering blocks of the current picture according to the respective adaptive loop filter sets.

[0011] В другом примере, настоящее раскрытие описывает не изменяемый со временем (Долговременный) считываемый компьютером носитель данных, хранящий инструкции, которые при исполнении побуждают один или несколько процессоров определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0011] In another example, the present disclosure describes a time-invariant (Long-lived) computer-readable storage medium storing instructions that, when executed, cause one or more processors to determine an appropriate adaptive loop filter set, from a plurality of adaptive loop filter sets, per block of the current pictures for blocks that use adaptive loop filtering, each respective adaptive loop filter set including the previous adaptive loop filter used in one or more previous pictures, and perform adaptive loop filtering of the current picture blocks in accordance with the respective adaptive loop filter sets .

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

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

[0013] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему кодирования и декодирования видео, которая может использовать методы, описанные в настоящем раскрытии. [0013] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system that may use the techniques described in this disclosure.

[0014] Фиг. 2 показывает примерную блок-схему декодера HEVC.[0014] FIG. 2 shows an exemplary block diagram of an HEVC decoder.

[0015] Фиг. 3A-3D показывают четыре 1-D направленных шаблона для классификации выборок смещения края (EO).[0015] FIG. 3A-3D show four 1-D directional patterns for classifying edge offset (EO) samples.

[0016] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер видео, который может реализовывать методы, описанные в настоящем раскрытии. [0016] FIG. 4 is a block diagram illustrating an exemplary video encoder that may implement the techniques described in this disclosure.

[0017] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может реализовывать методы, описанные в настоящем раскрытии. [0017] FIG. 5 is a block diagram illustrating an exemplary video decoder that may implement the techniques described in this disclosure.

[0018] Фиг. 6 показывает примерную реализацию модуля фильтрации для выполнения методов настоящего раскрытия. [0018] FIG. 6 shows an exemplary implementation of a filtering module for executing the methods of the present disclosure.

[0019] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия.[0019] FIG. 7 is a flowchart illustrating an exemplary deployment method.

[0020] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия.[0020] FIG. 8 is a flowchart illustrating another exemplary disclosure method.

Подробное описание Detailed description

[0021] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 10 кодирования и декодирования видео, которая может использовать методы для адаптивной контурной фильтрации, описанной в настоящем раскрытии. Как показано на фиг. 1, система 10 включает в себя устройство 12 источника, которое генерирует закодированные данные видео, подлежащие декодированию в более позднее время устройством 14 места назначения. Устройство 12 источника и устройство 14 места назначения могут представлять собой любое из широкого диапазона устройств, включая настольные компьютеры, портативные компьютеры (ноутбуки), планшеты, телевизионные приставки, телефонные трубки, такие как так называемые смартфоны, так называемые умные планшеты (смартпады), телевизоры, камеры, устройства отображения, цифровые медиаплееры, видео игровые консоли, устройство стриминга видео или тому подобное. В некоторых случаях, устройство 12 источника и устройство 14 места назначения могут быть оснащены для беспроводной связи. [0021] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system 10 that may use the techniques for adaptive loop filtering described in this disclosure. As shown in FIG. 1, system 10 includes source device 12 that generates encoded video data to be decoded at a later time by destination device 14. Source device 12 and destination device 14 can be any of a wide range of devices, including desktop computers, portable computers (laptops), tablets, set-top boxes, handsets such as so-called smartphones, so-called smart tablets (smartpads), televisions , cameras, display devices, digital media players, video game consoles, video streaming device, or the like. In some cases, source device 12 and destination device 14 may be equipped for wireless communication.

[0022] Устройство 14 места назначения может принимать закодированные данные видео, подлежащие декодированию, посредством линии 16 связи. Линия 16 связи может представлять собой любой тип носителя или устройства, способного перемещать закодированные данные видео от устройства 12 источника к устройству 14 места назначения. В одном примере, линия 16 связи может представлять собой коммуникационную среду, чтобы позволять устройству 12 источника передавать закодированные данные видео непосредственно на устройство 14 места назначения в реальном времени. Закодированные данные видео могут модулироваться в соответствии со стандартом связи, таким как протокол беспроводной связи, и передаваться на устройство 14 места назначения. Коммуникационная среда может включать в себя любую среду беспроводной или проводной связи, такую как радиочастотный (RF) спектр или одна или несколько физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может использоваться для обеспечения связи от устройства 12 источника к устройству 14 места назначения. [0022] Destination device 14 may receive encoded video data to be decoded via link 16 . Link 16 may be any type of media or device capable of transporting encoded video data from source device 12 to destination device 14. In one example, link 16 may be a communication medium to allow source device 12 to transmit encoded video data directly to destination device 14 in real time. The encoded video data may be modulated according to a communication standard such as a wireless communication protocol and transmitted to the destination device 14 . The communication medium may include any wireless or wired communication medium such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet network such as a local area network, a wide area network, or a wide area network such as the Internet. The communication medium may include routers, switches, base stations, or any other equipment that may be used to provide communication from source device 12 to destination device 14.

[0023] В другом примере, закодированные данные видео могут выводиться из выходного интерфейса 22 на устройство 26 хранения. Аналогично, доступ к закодированным данным видео может осуществляться из устройства 26 хранения входным интерфейсом 28. Устройство 26 хранения может включать в себя любой из множества распределенных или локально доступных носителей данных, таких как жесткий диск, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители для хранения закодированных данных видео. В другом примере, устройство 26 хранения может соответствовать файловому серверу или другому устройству промежуточного хранения, которое может хранить закодированное видео, сгенерированное устройством 12 источника. Устройство 14 места назначения может осуществлять доступ к сохраненным данным видео из устройства 26 хранения посредством стриминга или загрузки. Файловый сервер может представлять собой любой тип сервера, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 14 места назначения. Примерные файловые серверы включают в себя веб-сервер (например, для веб-сайта), сервер протокола переноса файлов (FTP), сетевые устройства хранения (NAS) или накопитель локального диска. Устройство 14 места назначения может осуществлять доступ к закодированным данным видео через любое стандартное соединение данных, включая Интернет-соединение. Оно может включать в себя беспроводное соединение (например, соединение Wi-Fi), проводное соединение (например, DSL, кабельный модем и т.д.) или комбинацию обоих, которая является подходящей для осуществления доступа к закодированным данным видео, хранящимся на файловом сервере. Передача закодированных данных видео от устройства 26 хранения может представлять собой стриминговую передачу, передачу загрузки или комбинацию обоих. [0023] In another example, the encoded video data may be output from the output interface 22 to the storage device 26 . Similarly, encoded video data may be accessed from storage device 26 by input interface 28. Storage device 26 may include any of a variety of distributed or locally available storage media such as a hard drive, Blu-ray discs, DVDs, CD-ROMs, flash memory, volatile or non-volatile memory, or any other suitable digital media for storing encoded video data. In another example, storage device 26 may correspond to a file server or other intermediate storage device that can store encoded video generated by source device 12. The destination device 14 may access the stored video data from the storage device 26 via streaming or downloading. The file server may be any type of server capable of storing encoded video data and transmitting this encoded video data to the destination device 14 . Exemplary file servers include a web server (eg, for a website), a file transfer protocol (FTP) server, network attached storage (NAS), or a local disk drive. The destination device 14 can access the encoded video data via any standard data connection, including an Internet connection. It may include a wireless connection (eg, a Wi-Fi connection), a wired connection (eg, DSL, cable modem, etc.), or a combination of both that is suitable for accessing encoded video data stored on a file server. . The transmission of the encoded video data from the storage device 26 may be a streaming transmission, a download transmission, or a combination of both.

[0024] Методы настоящего раскрытия не обязательно ограничены беспроводными приложениями или настройками. Методы могут применяться к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как телевизионное эфирное вещание, передачи кабельного телевидения, передачи спутникового телевидения, передачи стримингового видео, например, через Интернет, кодирование цифрового видео для хранения на носителе данных, декодирование цифрового видео, сохраненного на носителе данных, или других приложений. В некоторых примерах, система 10 может быть сконфигурирована, чтобы поддерживать одностороннюю или двустороннюю передачу видео для поддержки приложений, таких как стриминг видео, воспроизведение видео, вещание видео и/или видео-телефония.[0024] The techniques of this disclosure are not necessarily limited to wireless applications or settings. The techniques can be applied to video coding supporting any of a variety of multimedia applications such as broadcast television, cable television transmissions, satellite television transmissions, streaming video transmissions such as over the Internet, digital video encoding for storage on a storage medium, digital video decoding, stored on a storage medium, or other applications. In some examples, system 10 may be configured to support one-way or two-way video to support applications such as video streaming, video playback, video broadcasting, and/or video telephony.

[0025] В примере на фиг. 1, устройство 12 источника включает в себя источник 18 видео, кодер 20 видео и выходной интерфейс 22. В некоторых случаях, выходной интерфейс 22 может включать в себя модулятор/демодулятор (модем) и/или передатчик. В устройстве 12 источника, источник 18 видео может включать в себя источник, такой как устройство захвата видео, например, видеокамеру, архив видео, содержащий ранее захваченное видео, интерфейс внешнего видеосигнала для приема видео от провайдера видеоконтента и/или систему компьютерной графики для генерации данных компьютерной графики как источника видео или комбинацию таких источников. В общем, захват данных видео может включать в себя любой метод для записи, генерации и/или восприятия данных видео. В качестве одного примера, если источник 18 видео представляет собой видеокамеру, устройство 12 источника и устройство 14 места назначения могут образовывать так называемые камерофоны или видеофоны. Однако, методы, описанные в настоящем раскрытии, могут применяться к кодированию видео в общем и могут применяться к беспроводным и/или проводным приложениям. [0025] In the example of FIG. 1, source device 12 includes a video source 18, a video encoder 20, and an output interface 22. In some cases, output interface 22 may include a modulator/demodulator (modem) and/or a transmitter. In source device 12, video source 18 may include a source such as a video capture device such as a video camera, a video archive containing previously captured video, an external video signal interface for receiving video from a video content provider, and/or a computer graphics system for generating data. computer graphics as a video source or a combination of such sources. In general, capturing video data may include any method for recording, generating and/or consuming video data. As one example, if video source 18 is a video camera, source device 12 and destination device 14 may form so-called camera phones or video phones. However, the techniques described in this disclosure may apply to video coding in general and may apply to wireless and/or wired applications.

[0026] Захваченное, предварительно захваченное или сгенерированное компьютером видео может кодироваться кодером 20 видео. Закодированные данные видео могут передаваться непосредственно на устройство 14 места назначения через выходной интерфейс 22 устройства 12 источника. Закодированные данные видео могут также (или альтернативно) сохраняться на устройство 26 хранения для последующего доступа устройством 14 места назначения или другими устройствами, для декодирования и/или воспроизведения. [0026] Captured, pre-captured, or computer-generated video may be encoded by video encoder 20. The encoded video data can be transmitted directly to the destination device 14 via the output interface 22 of the source device 12 . The encoded video data may also (or alternatively) be stored on the storage device 26 for later access by the destination device 14 or other devices, for decoding and/or playback.

[0027] Устройство 14 места назначения включает в себя входной интерфейс 28, декодер 30 видео и устройство 32 отображения. В некоторых случаях, входной интерфейс 28 может включать в себя приемник и/или модем. Входной интерфейс 28 устройства 14 места назначения принимает закодированные данные видео по линии 16 связи. Закодированные данные видео, сообщенные по линии 16 связи или обеспеченные на устройство 26 хранения, могут включать в себя множество синтаксических элементов, сгенерированных кодером 20 видео для использования декодером видео, таким как декодер 30 видео, при декодировании данных видео. Такие синтаксические элементы могут быть включены в закодированные данные видео, передаваемые по коммуникационной среде, сохраненные на носителе или сохраненные на файловом сервере. [0027] The destination device 14 includes an input interface 28, a video decoder 30, and a display device 32. In some cases, the input interface 28 may include a receiver and/or a modem. The input interface 28 of the destination device 14 receives encoded video data over the communication line 16 . Encoded video data communicated over link 16 or provided to storage device 26 may include a plurality of syntax elements generated by video encoder 20 for use by a video decoder, such as video decoder 30, when decoding video data. Such syntax elements may be included in encoded video data transmitted over a communication medium, stored on a storage medium, or stored on a file server.

[0028] Устройство 32 отображения может быть встроенным или внешним по отношению к устройству 14 места назначения. В некоторых примерах, устройство 14 места назначения может включать в себя встроенное устройство отображения, а также может быть сконфигурировано, чтобы взаимодействовать с внешним устройством отображения. В других примерах, устройство 14 места назначения может представлять собой устройство отображения. В общем, устройство 32 отображения отображает декодированные данные видео пользователю и может представлять собой любое из множества устройств отображения, таких как жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения. [0028] The display device 32 may be built-in or external to the destination device 14. In some examples, destination device 14 may include an embedded display device and may also be configured to interface with an external display device. In other examples, destination device 14 may be a display device. In general, the display device 32 displays the decoded video data to the user and may be any of a variety of display devices such as a liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

[0029] Кодер 20 видео и декодер 30 видео могут работать в соответствии со стандартом сжатия видео, таким как недавно завершенный стандарт Высокоэффективного кодирования видео (HEVC), и может быть согласован с Тестовой моделью HEVC (HM). Кодер 20 видео и декодер 30 видео могут дополнительно работать в соответствии с расширением HEVC, таким как расширение диапазона, многовидовое расширение (MV-HEVC) или масштабируемое расширение (SHVC), которые были разработаны Группой совместного сотрудничества по кодированию видео (JCT-VC), а также Группой совместного сотрудничества по разработке расширения кодирования 3D видео (JCT-3V) Экспертной группы по кодированию видео (VCEG) ITU-T и Экспертной группы по движущимся изображениям (MPEG) ISO/IEC. Альтернативно, кодер 20 видео и декодер 30 видео могут работать в соответствии с другими проприетарными или промышленными стандартами, такими как стандарт ITU-T H.264, альтернативно упоминаемый как ISO/IEC MPEG 4, часть 10, Расширенное кодирование видео (AVC), или расширениями таких стандартов, такими как расширения Масштабируемого кодирования видео (SVC) и Многовидового кодирования видео (MVC). Методы настоящего раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. Другие примеры стандартов сжатия видео включают в себя ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 или ISO/IEC MPEG-2 Visual, ITU-T H.263 и ISO/IEC MPEG-4 Visual. HEVC (ITU-T H.265), включая его расширение диапазона, многовидовое расширение (MV-HEVC) и масштабируемое расширение (SHVC), были разработаны Группой совместного сотрудничества по кодированию видео (JCT-VC), а также Группой совместного сотрудничества по разработке Расширения кодирования 3D видео (JCT-3V) Экспертной группы по кодированию видео (VCEG) ITU-T и Экспертной группой по движущимся изображениям (MPEG) ISO/IEC. Завершенный проект HEVC, упоминаемый далее как HEVC WD, доступен на http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.[0029] Video encoder 20 and video decoder 30 may operate in accordance with a video compression standard such as the recently completed High Efficiency Video Coding (HEVC) standard and may be aligned with the HEVC Test Model (HM). The video encoder 20 and the video decoder 30 may further operate in accordance with an HEVC extension such as range extension, multi-view extension (MV-HEVC), or scalable extension (SHVC), which have been developed by the Collaborative Collaboration Group on Video Coding (JCT-VC), and the ITU-T Video Coding Expert Group (VCEG) and the ISO/IEC Moving Picture Expert Group (MPEG) 3D Video Coding Extension (JCT-3V). Alternatively, video encoder 20 and video decoder 30 may operate in accordance with other proprietary or industry standards, such as the ITU-T H.264 standard, alternatively referred to as ISO/IEC MPEG 4 Part 10, Advanced Video Coding (AVC), or extensions to such standards, such as Scalable Video Coding (SVC) and Multi-View Video Coding (MVC) extensions. The techniques of the present disclosure, however, are not limited to any particular coding standard. Other examples of video compression standards include ITU-T H.261, ISO/IEC MPEG-1 Visual, ITU-T H.262 or ISO/IEC MPEG-2 Visual, ITU-T H.263 and ISO/IEC MPEG-1 Visual. 4 Visual. HEVC (ITU-T H.265), including its range extension, multi-view extension (MV-HEVC), and scalable extension (SHVC), were developed by the Video Coding Joint Collaboration Group (JCT-VC) as well as the Joint Cooperation Development Group ITU-T Video Coding Expert Group (VCEG) and ISO/IEC Moving Picture Expert Group (MPEG) 3D Video Coding Extensions (JCT-3V). The completed HEVC project, hereafter referred to as HEVC WD, is available at http://phenix.int-evry.fr/jct/doc_end_user/documents/14_Vienna/wg11/JCTVC-N1003-v1.zip.

[0030] ITU-T VCEG (Q6/16) и ISO/IEC MPEG (JTC 1/SC 29/WG 11) в настоящее время разрабатывают будущую технологию кодирования видео с функциональной возможностью сжатия, которая потенциально превышает способность сжатия текущего стандарта HEVC (включая текущие расширения и краткосрочные расширения для кодирования экранного контента и кодирования высокого динамического диапазона). Новый стандарт называется H.266/VVC (универсальное кодирование видео). Группы работают вместе в рамках этой исследовательской деятельности, совместно сотрудничая как Группа по совместному исследованию видео (JVET), чтобы оценить проекты технологии сжатия, предложенные их экспертами в этой области. Первая встреча JVET состоялась 19-21 октября 2015. Одну версию опорного программного обеспечения, т.е., Модель совместного исследования 7 (JEM7), можно загрузить из: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/HM-16.6-JEM-7.0/. Описание алгоритма для JEM7 приведено в J. Chen, E. Alshina, G. J. Sullivan, J.R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7 (JEM7)”, JVET-G1001, Torino, July 2017. Последний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019, JVET-N1001-v3 (далее “Проект 5 VVC”). Методы настоящего раскрытия, однако, не ограничены каким-либо конкретным стандартом кодирования. [0030] ITU-T VCEG (Q6/16) and ISO/IEC MPEG (JTC 1/SC 29/WG 11) are currently developing a future video coding technology with compression functionality that potentially exceeds the compression capability of the current HEVC standard (including current extensions and short-term extensions for screen content encoding and high dynamic range encoding). The new standard is called H.266/VVC (Universal Video Coding). The groups work together on this research activity, collaborating as the Joint Video Research Team (JVET) to evaluate compression technology projects proposed by their experts in the field. The first JVET meeting took place on October 19-21, 2015. One version of the reference software, i.e., Joint Exploration Model 7 (JEM7), can be downloaded from: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags /HM-16.6-JEM-7.0/. For a description of the algorithm for JEM7, see J. Chen, E. Alshina, G. J. Sullivan, J.R. Ohm, J. Boyce, “Algorithm description of Joint Exploration Test Model 7 (JEM7)”, JVET-G1001, Torino, July 2017. The latest draft of the VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 5)”, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 14th Meeting: Geneva, CH, 19-27 March 2019 , JVET-N1001-v3 (hereinafter referred to as “Project 5 VVC”). The techniques of the present disclosure, however, are not limited to any particular coding standard.

[0031] Хотя не показано на фиг. 1, в некоторых аспектах, кодер 20 видео и декодер 30 видео могут каждый быть интегрированы с кодером и декодером аудио и могут включать в себя подходящие модули MUX-DEMUX или другие аппаратные средства и программное обеспечение, чтобы обрабатывать кодирование как аудио, так и видео в общем потоке данных или отдельных потоках данных. Если применимо, в некоторых примерах, модули MUX-DEMUX могут быть согласованы с протоколом мультиплексора ITU H.223 или другими протоколами, такими как протокол пользовательских дейтаграмм (UDP).[0031] Although not shown in FIG. 1, in some aspects, video encoder 20 and video decoder 30 may each be integrated with an audio encoder and decoder and may include suitable MUX-DEMUX modules or other hardware and software to handle both audio and video encoding in general data stream or individual data streams. If applicable, in some examples, the MUX-DEMUX modules may be negotiated with the ITU H.223 Multiplexer Protocol or other protocols such as User Datagram Protocol (UDP).

[0032] Кодер 20 видео и декодер 30 видео каждый могут быть реализованы как любая из множества подходящих схем кодера или схем декодера, таких как один или несколько микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, прошивки или любых их комбинаций. Когда методы реализованы частично в программном обеспечении, устройство может хранить инструкции для программного обеспечения в подходящем долговременном считываемом компьютером носителе и исполнять инструкции в аппаратных средствах с использованием одного или нескольких процессоров для выполнения методов настоящего раскрытия. Каждый из кодера 20 видео и декодера 30 видео может быть включен в один или несколько кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (CODEC) (кодека) в соответственном устройстве.[0032] Video encoder 20 and video decoder 30 may each be implemented as any of a variety of suitable encoder circuits or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), field-programmable gate arrays ( FPGA), discrete logic, software, hardware, firmware, or any combination thereof. When the methods are implemented in part in software, a device may store instructions for the software in a suitable non-volatile computer-readable medium and execute the instructions in hardware using one or more processors to execute the methods of the present disclosure. Each of video encoder 20 and video decoder 30 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) (codec) in a respective device.

[0033] Настоящее раскрытие описывает методы, относящиеся к операциям фильтрации, которые могут использоваться на стадии пост-обработки, как часть (внутри-) контурного кодирования или на стадии предсказания кодирования видео. Методы настоящего раскрытия могут быть реализованы в существующих кодеках видео, таких как HEVC, или представлять собой эффективный инструмент кодирования для будущего стандарта кодирования видео, такого как стандарт H.266/VVC, в настоящее время находящийся в разработке.[0033] The present disclosure describes techniques related to filtering operations that can be used in the post-processing stage, as part of (intra-) loop coding, or in the prediction stage of video coding. The techniques of the present disclosure may be implemented in existing video codecs, such as HEVC, or provide a powerful coding tool for a future video coding standard, such as the H.266/VVC standard currently under development.

[0034] Кодирование видео обычно включает в себя блок предсказания данных видео либо из уже закодированного блока данных видео в той же картинке (например, интра-предсказание), либо уже закодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых примерах, кодер 20 видео также вычисляет остаточные данные путем сравнения предсказанного блока с исходным блоком. Таким образом, остаточные данные представляют разность между предсказанным блоком и исходным блоком. [0034] Video encoding typically includes a video data prediction block either from an already encoded video data block in the same picture (eg, intra prediction) or an already encoded video data block in another picture (eg, inter prediction). In some examples, video encoder 20 also calculates residual data by comparing the predicted block with the original block. Thus, the residual data represents the difference between the predicted block and the original block.

[0035] Кодер 20 видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в закодированном битовом потоке. Декодер 30 видео добавляет остаточные данные в предсказанный блок, чтобы сформировать восстановленный блок видео, который совпадает с исходным блоком видео ближе, чем только предсказанный блок. Чтобы дополнительно улучшить качество декодированного видео, кодер 20 видео и декодер 30 видео могут выполнять одну или несколько операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, адаптивную фильтрацию смещения выборки (SAO) и адаптивную контурную фильтрацию. Параметры для этих операций фильтрации могут определяться кодером 20 видео и явно сигнализироваться в закодированном битовом потоке видео или могут неявно определяться декодером 30 видео без необходимости явно сигнализировать параметры в закодированном битовом потоке видео.[0035] The video encoder 20 transforms and quantizes the residual data and signals the transformed and quantized residual data in the encoded bitstream. Video decoder 30 adds residual data to the predicted block to generate a reconstructed video block that matches the original video block closer than just the predicted block. To further improve the quality of the decoded video, video encoder 20 and video decoder 30 may perform one or more filtering operations on the reconstructed video blocks. Examples of these filtering operations include deblocking filtering, sample offset adaptive (SAO) filtering, and adaptive loop filtering. The parameters for these filtering operations may be determined by the video encoder 20 and explicitly signaled in the encoded video bitstream, or may be implicitly determined by the video decoder 30 without having to explicitly signal the parameters in the encoded video bitstream.

[0036] Настоящее раскрытие описывает методы, относящиеся к способу(ам) фильтрации, упоминаемому как “адаптивная контурная фильтрация (ALF)”. ALF может использоваться на стадии пост-обработки, для контурного кодирования или в процессе предсказания. Фильтрация SAO и/или адаптивная контурная фильтрация может применяться к любой из различных существующих технологий кодека видео, таких как технология кодека, совместимого с HEVC, или представлять собой эффективный инструмент кодирования в любых будущих стандартах кодирования видео. [0036] The present disclosure describes techniques related to the filtering method(s) referred to as "adaptive loop filtering (ALF)". ALF can be used in post-processing, for contour coding, or in the prediction process. SAO filtering and/or adaptive loop filtering may be applied to any of various existing video codec technologies, such as HEVC compatible codec technology, or represent an efficient coding tool in any future video coding standards.

[0037] Как использовано в настоящем раскрытии, термин кодирование видео в общем относится либо к кодированию видео, либо к декодированию видео. Аналогично, термин кодер видео может в общем относиться к кодеру видео или декодеру видео. Более того, определенные методы, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео и наоборот. Например, часто кодеры видео и декодеры видео сконфигурированы, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер 20 видео обычно выполняет декодирование видео как часть процессов определения того, как следует кодировать данные видео.[0037] As used in this disclosure, the term video coding generally refers to either video coding or video decoding. Likewise, the term video encoder may generically refer to a video encoder or video decoder. Moreover, certain techniques described in this disclosure in relation to video decoding can also be applied to video coding and vice versa. For example, often video encoders and video decoders are configured to perform the same process or reciprocal processes. Also, video encoder 20 typically performs video decoding as part of the processes of determining how video data should be encoded.

[0038] Как будет объяснено более подробно ниже, в соответствии с методами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять наборы адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на поблочной основе (например, для блоков, для которых разрешается адаптивная контурная фильтрация). Таким образом, набор адаптивных контурных фильтров, доступных для использования с конкретным блоком, может быть более адаптирован к локальным характеристикам данных видео рядом с конкретным блоком, таким образом, улучшая эффективность кодирования и/или качество картинки.[0038] As will be explained in more detail below, in accordance with the techniques of the present disclosure, video encoder 20 and video decoder 30 may be configured to determine adaptive loop filter banks, from a plurality of adaptive loop filter banks, on a block-by-block basis (e.g., for blocks for which adaptive loop filtering is enabled). Thus, the set of adaptive loop filters available for use with a particular block can be more adapted to the local characteristics of the video data next to a particular block, thus improving coding efficiency and/or picture quality.

[0039] В HEVC, VVC и других спецификациях кодирования видео, последовательность видео обычно включает в себя последовательность картинок. Картинки могут также называться “кадрами”. В одном примерном подходе, картинка может включать в себя три массива выборок, обозначенных SL, SCb и SCr. В таком примерном подходе, SL представляет собой двумерный массив (т.е., блок) выборок яркости. SCb представляет собой двумерный массив выборок цветности Cb. SCr представляет собой двумерный массив выборок цветности Cr. Выборки цветности могут также упоминаться как выборки “насыщенности цвета” (цветности). В других примерах, картинка может быть монохромной и может включать в себя только массив выборок яркости. [0039] In HEVC, VVC, and other video coding specifications, a video sequence typically includes a picture sequence. Pictures may also be referred to as “frames”. In one exemplary approach, the picture may include three arrays of samples, denoted S L , S Cb and S Cr . In such an exemplary approach, S L is a two-dimensional array (ie, block) of luminance samples. S Cb is a two-dimensional array of chrominance samples Cb. S Cr is a two-dimensional array of Cr chromaticity samples. Chroma samples may also be referred to as "chroma" samples. In other examples, the picture may be monochrome and may include only an array of luminance samples.

[0040] Чтобы сгенерировать закодированное представление картинки, кодер 20 видео может генерировать набор единиц дерева кодирования (CTU). Каждая из CTU может включать в себя блок дерева кодирования выборок яркости, два соответствующих блока дерева кодирования выборок цветности и синтаксические структуры, используемые для кодирования выборок блоков дерева кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CTU может включать в себя один блок дерева кодирования и синтаксические структуры, используемые, чтобы кодировать выборки блока дерева кодирования. Блок дерева кодирования может представлять собой N×N блок выборок. CTU может также упоминаться как “блок дерева” или “наибольшая единица кодирования” (LCU). CTU HEVC могут быть в широком смысле аналогичны макроблокам других стандартов, таких как H.264/AVC. Однако CTU не обязательно ограничена конкретным размером и может включать в себя одну или несколько единиц кодирования (CU). Слайс может включать в себя целое число CTU, упорядоченных последовательно в порядке растрового сканирования.[0040] To generate an encoded representation of a picture, video encoder 20 may generate a set of coding tree units (CTUs). Each of the CTUs may include a luminance sample coding tree block, two corresponding chrominance sample coding tree blocks, and syntax structures used to encode the coding tree block samples. In monochrome pictures or pictures having three separate color planes, the CTU may include one coding tree block and syntax structures used to encode samples of the coding tree block. The coding tree block may be an N×N block of samples. A CTU may also be referred to as a "tree block" or "largest coding unit" (LCU). HEVC CTUs may be broadly similar to macroblocks in other standards such as H.264/AVC. However, the CTU is not necessarily limited to a specific size and may include one or more coding units (CUs). A slice may include an integer number of CTUs ordered sequentially in raster scan order.

[0041] В одном примере, чтобы сгенерировать закодированную CTU, кодер 20 видео может рекурсивно выполнять разбиение квадродерева на блоках дерева кодирования CTU, чтобы разделить блоки дерева кодирования на блоки кодирования, отсюда название “единицы дерева кодирования”. Блок кодирования может представлять собой N×N блок выборок. CU может включать в себя блок кодирования выборок яркости и два соответствующих блока кодирования выборок цветности картинки, которая имеет массив выборок яркости, массив выборок Cb и массив выборок Cr и синтаксические структуры, используемые для кодирования выборок блоков кодирования. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, CU может включать в себя один блок кодирования и синтаксические структуры, используемые для кодирования выборок блока кодирования.[0041] In one example, to generate an encoded CTU, video encoder 20 may recursively perform quadtree partitioning on CTU coding tree blocks to divide coding tree blocks into coding blocks, hence the name “coding tree units”. A coding block may be an N×N block of samples. The CU may include a luminance sample coding block and two corresponding chrominance sample coding blocks of a picture that has a luminance sample array, a Cb sample array, and a Cr sample array, and syntax structures used to encode the coding block samples. In monochrome pictures or pictures having three separate color planes, the CU may include one coding block and syntax structures used to encode coding block samples.

[0042] Кодер 20 видео может разбивать блок кодирования CU на один или несколько блоков предсказания. Блок предсказания представляет собой прямоугольный (т.е., квадратный или неквадратный) блок выборок, на которых применяется то же самое предсказание. Единица предсказания (PU) CU может включать в себя блок предсказания выборок яркости, два соответствующих блока предсказания выборок цветности и синтаксические структуры, используемые для предсказания блоков предсказания. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, PU может включать в себя один блок предсказания и синтаксические структуры, используемые для предсказания блока предсказания. Кодер 20 видео может генерировать предсказанные блоки яркости, Cb и Cr для блоков предсказания яркости, Cb и Cr каждой PU CU.[0042] Video encoder 20 may partition a CU coding block into one or more prediction blocks. A prediction block is a rectangular (ie, square or non-square) block of samples over which the same prediction is applied. A prediction unit (PU) of a CU may include a luminance sample predictor, two corresponding chrominance sample predictors, and syntax structures used to predict the prediction blocks. In monochrome pictures or pictures having three separate color planes, the PU may include one prediction block and syntax structures used to predict the prediction block. Video encoder 20 may generate predicted luminance blocks, Cb and Cr for luminance prediction blocks, Cb and Cr of each CU PU.

[0043] В качестве другого примера, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы работать в соответствии с JEM или VVC. В соответствии с JEM или VVC, кодер видео (такой как кодер 20 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 20 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева/двоичного дерева (QTBT) или структура дерева множественного типа (MTT). Структура QTBT удаляет концепции множества типов разбиения, такие как разделения между CU, PU и TU (единицами преобразования) HEVC. Структура QTBT включает в себя два уровня: первый уровень, разбиваемый в соответствии с разбиением квадродерева, и второй уровень, разбиваемый в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).[0043] As another example, video encoder 20 and video decoder 30 may be configured to operate in accordance with JEM or VVC. According to JEM or VVC, a video encoder (such as video encoder 20) splits a picture into multiple coding tree units (CTUs). The video encoder 20 may partition the CTU according to a tree structure such as a quadtree/binary tree structure (QTBT) or a multiple type tree structure (MTT). The QTBT framework removes the concepts of multiple partition types, such as partitions between CUs, PUs, and TUs (transformation units) of HEVC. The QTBT structure includes two levels: a first level split according to a quadtree split and a second level split according to a binary tree split. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

[0044] В структуре разбиения MTT, блоки могут разбиваться с использованием разбиения квадродерева (QT), разбиения двоичного дерева (BT) и одного или нескольких типов разбиений троичного дерева (TT). Разбиение троичного дерева представляет собой разбиение, где блок разделяется на три подблока. В некоторых примерах, разбиение троичного дерева делит блок на три подблока без деления исходного блока через центр. Типы разбиения в MTT (например, QT, BT и TT) могут быть симметричными или ассиметричными.[0044] In an MTT split structure, blocks may be split using a quadtree split (QT), a binary tree split (BT), and one or more types of ternary tree splits (TT). A ternary tree split is a split where a block is split into three subblocks. In some examples, splitting a ternary tree divides a block into three subblocks without dividing the original block through the center. Partition types in MTT (for example, QT, BT, and TT) can be symmetrical or asymmetric.

[0045] В некоторых примерах, кодер 20 видео и декодер 30 видео могут использовать одну структуру QTBT или MTT, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, кодер 20 видео и декодер 30 видео могут использовать две или более структур QTBT или MTT, таких как одна структура QTBT/MTT для компонента яркости и другая структура QTBT/MTT для обоих компонентов цветности (или две структуры QTBT/MTT для соответственных компонентов цветности). [0045] In some examples, video encoder 20 and video decoder 30 may use a single QTBT or MTT structure to represent each of the luminance and chrominance components, while in other examples, video encoder 20 and video decoder 30 may use two or more QTBT or MTT structures such as one QTBT/MTT structure for the luminance component and another QTBT/MTT structure for both chrominance components (or two QTBT/MTT structures for the respective chrominance components).

[0046] Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать разбиение квадродерева, разбиение QTBT, разбиение MTT или другие структуры разбиения. [0046] Video encoder 20 and video decoder 30 may be configured to use quadtree splitting, QTBT splitting, MTT splitting, or other splitting structures.

[0047] Кодер 20 видео может использовать интра-предсказание или интер-предсказание, чтобы генерировать предсказанные блоки для блока (например, PU). Если кодер 20 видео использует интра-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок картинки, ассоциированной с PU. Если кодер 20 видео использует интер-предсказание, чтобы сгенерировать предсказанные блоки PU, кодер 20 видео может генерировать предсказанные блоки PU на основе декодированных выборок одной или нескольких картинок, отличных от картинки, ассоциированной с PU.[0047] Video encoder 20 may use intra-prediction or inter-prediction to generate predicted blocks for a block (eg, PU). If video encoder 20 uses intra prediction to generate predicted PUs, video encoder 20 may generate predicted PUs based on decoded samples of a picture associated with the PU. If video encoder 20 uses inter-prediction to generate predicted PUs, video encoder 20 may generate predicted PUs based on decoded samples of one or more pictures other than the picture associated with the PU.

[0048] Некоторые примеры JEM и VVC также обеспечивают режим компенсации аффинного движения, который может рассматриваться как режим интер-предсказания. В режиме компенсации аффинного движения, кодер 20 видео может определять два или более векторов движения, которые представляют непоступательное движение, такое как приближение или отдаление, вращение, движение перспективы или другие типы нерегулярного движения. [0048] Some examples of JEM and VVC also provide an affine motion compensation mode, which can be considered an inter-prediction mode. In the affine motion compensation mode, video encoder 20 may determine two or more motion vectors that represent non-translational motion such as zooming in and out, rotation, perspective motion, or other types of irregular motion.

[0049] Чтобы выполнить интра-предсказание, кодер 20 видео может выбирать режим интра-предсказания, чтобы сгенерировать блок предсказания. Некоторые примеры JEM и VVC обеспечивают шестьдесят семь режимов интра-предсказания, включая различные направленные режимы, а также планарный режим и режим DC. В общем, кодер 20 видео выбирает режим интра-предсказания, который описывает выборки, соседние с текущим блоком (например, блоком CU), из которого следует предсказывать выборки текущего блока. Такие выборки могут, в общем, находиться выше, выше и слева или слева от текущего блока в той же самой картинке, что и текущей блок, предполагая, что кодер 20 видео кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз). [0049] To perform intra prediction, video encoder 20 may select an intra prediction mode to generate a prediction block. Some examples of JEM and VVC provide sixty-seven intra-prediction modes, including various directional modes as well as planar and DC modes. In general, video encoder 20 selects an intra-prediction mode that describes samples adjacent to the current block (eg, CU) from which the current block samples are to be predicted. Such samples may generally be above, above, and to the left or left of the current block in the same picture as the current block, assuming video encoder 20 encodes CTUs and CUs in raster scan order (left to right, top to bottom) .

[0050] После того как кодер 20 видео сгенерировал предсказанные блоки яркости, Cb и Cr для одной или нескольких PU CU, кодер 20 видео может генерировать остаточный блок яркости для CU. Каждая выборка в остаточном блоке яркости CU указывает разность между выборкой яркости в одном из предсказанных блоков яркости CU и соответствующей выборкой в исходном блоке кодирования яркости CU. К тому же, кодер 20 видео может генерировать остаточный блок Cb для CU. Каждая выборка в остаточном блоке Cb для CU может указывать разность между выборкой Cb в одном из предсказанных блоков Cb CU и соответствующей выборкой в исходном блоке кодирования Cb CU. Кодер 20 видео может также генерировать остаточный блок Cr для CU. Каждая выборка в остаточном блоке Cr CU может указывать разность между выборкой Cr в одном из предсказанных блоков Cr CU и соответствующей выборкой в исходном блоке кодирования Cr CU.[0050] After video encoder 20 has generated predicted luminance blocks, Cb, and Cr for one or more CU PUs, video encoder 20 may generate a residual luma block for the CU. Each sample in the residual luma CU indicates the difference between a luma sample in one of the predicted luma CUs and a corresponding sample in the original CU luma coding block. In addition, the video encoder 20 may generate a residual block Cb for the CU. Each sample in the Cb residual block for the CU may indicate the difference between the Cb sample in one of the predicted Cb CU blocks and the corresponding sample in the original CU coding block Cb. The video encoder 20 may also generate a residual block Cr for the CU. Each sample in the residual Cr CU may indicate a difference between a Cr sample in one of the predicted Cr CUs and a corresponding sample in the original Cr CU coding block.

[0051] В некоторых примерах, кодер 20 видео может использовать разбиение квадродерева, чтобы разлагать остаточные блоки яркости, Cb и Cr CU на один или несколько блоков преобразования яркости, Cb и Cr. В других примерах, блок преобразования имеет тот же размер, что и блок предсказания. Блок преобразования представляет собой прямоугольный (например, квадратный или неквадратный) блок выборок, на которых применяется то же самое преобразование. Единица преобразования (TU) CU может включать в себя блок преобразования выборок яркости, два соответствующих блока преобразования выборок цветности и синтаксические структуры, используемые, чтобы преобразовывать выборки блока преобразования. Таким образом, каждая TU CU может быть ассоциирована с блоком преобразования яркости, блоком преобразования Cb и блоком преобразования Cr. Блок преобразования яркости, ассоциированный с TU, может представлять собой подблок остаточного блока яркости CU. Блок преобразования Cb может представлять собой подблок остаточного блока Cb CU. Блок преобразования Cr может представлять собой подблок остаточного блока Cr CU. В монохромных картинках или картинках, имеющих три отдельные цветовые плоскости, TU может включать в себя один блок преобразования и синтаксические структуры, использованные для преобразования выборок блока преобразования. [0051] In some examples, video encoder 20 may use quadtree partitioning to decompose the residual luma units, Cb and Cr CUs into one or more luma transform units, Cb and Cr. In other examples, the transform block has the same size as the prediction block. A transform block is a rectangular (eg, square or non-square) block of samples on which the same transform is applied. A transform unit (TU) of a CU may include a luminance sample transform block, two corresponding chrominance sample transform blocks, and syntax structures used to transform transform block samples. Thus, each TU CU may be associated with a luma transform block, a transform block Cb, and a transform block Cr. The luminance transform block associated with the TU may be a sub-block of the CU's residual luminance block. The transform block Cb may be a subblock of the residual block Cb of the CU. The transform block Cr may be a subblock of the residual block Cr of the CU. In monochrome pictures or pictures having three separate color planes, the TU may include one transform block and the syntax structures used to transform the transform block samples.

[0052] Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования яркости TU, чтобы генерировать блок коэффициентов яркости для TU. Блок коэффициентов может представлять собой двумерный массив коэффициентов преобразования. Коэффициент преобразования может представлять собой скалярную величину. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cb TU, чтобы генерировать блок коэффициентов Cb для TU. Кодер 20 видео может применять одно или несколько преобразований к блоку преобразования Cr TU, чтобы генерировать блок коэффициентов Cr для TU.[0052] Video encoder 20 may apply one or more transforms to the TU luminance transform block to generate a luminance coefficient block for the TU. The coefficient block may be a two-dimensional array of transform coefficients. The conversion factor may be a scalar value. Video encoder 20 may apply one or more transforms to the transform block Cb of the TU to generate a block of Cb coefficients for the TU. Video encoder 20 may apply one or more transforms to the transform block Cr of the TU to generate a block of Cr coefficients for the TU.

[0053] Вышеописанная структура блоков с CTU, CU, PU и TU, в общем, описывает структуру блоков, используемую в HEVC. Другие стандарты кодирования видео, однако, могут использовать другие структуры блоков. В качестве одного примера, хотя HEVC позволяет PU и TU иметь разные размеры или формы, другие стандарты кодирования видео могут требовать, чтобы предсказанные блоки и блоки преобразования имели один и тот же размер. Методы настоящего раскрытия не ограничены структурой блоков HEVC и могут быть совместимы с другими структурами блоков.[0053] The above block structure with CTU, CU, PU, and TU generally describes the block structure used in HEVC. Other video coding standards, however, may use other block structures. As one example, while HEVC allows PUs and TUs to have different sizes or shapes, other video coding standards may require predicted and transform blocks to be the same size. The techniques of the present disclosure are not limited to the HEVC block structure and may be compatible with other block structures.

[0054] После генерации блока коэффициентов (например, блока коэффициентов яркости, блока коэффициентов Cb или блока коэффициентов Cr), кодер 20 видео может квантовать блок коэффициентов. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить количество данных, используемых для представления коэффициентов преобразования, обеспечивая дополнительное сжатие. После того как кодер 20 видео квантовал блок коэффициентов, кодер 20 видео может энтропийно кодировать синтаксические элементы, указывающие квантованные коэффициенты преобразования. Например, кодер 20 видео может выполнять контекстно-адаптивное двоичное арифметическое кодирование (CABAC) на синтаксических элементах, указывающих квантованные коэффициенты преобразования. [0054] After generating a coefficient block (eg, a luminance coefficient block, a Cb coefficient block, or a Cr coefficient block), video encoder 20 may quantize the coefficient block. Quantization generally refers to a process in which transform coefficients are quantized to reduce the amount of data used to represent the transform coefficients as much as possible, providing additional compression. After video encoder 20 has quantized the block of coefficients, video encoder 20 may entropy encode syntax elements indicating the quantized transform coefficients. For example, video encoder 20 may perform context-adaptive binary arithmetic coding (CABAC) on syntax elements indicating quantized transform coefficients.

[0055] Кодер 20 видео может выводить битовый поток, который включает в себя последовательность битов, которая образует представление закодированных картинок и ассоциированных данных. Битовый поток может включать в себя последовательность единиц слоя сетевой абстракции (NAL). Единица NAL представляет собой синтаксическую структуру, содержащую указание типа данных в единице NAL и байты, содержащие эти данные в форме полезной нагрузки необработанной последовательности байтов (RBSP), перемеженных по необходимости с битами предотвращения эмуляции. Каждая из единиц NAL включает в себя заголовок единицы NAL и инкапсулирует RBSP. Заголовок единицы NAL может включать в себя синтаксический элемент, который указывает код типа единицы NAL. Код типа единицы NAL, специфицированный заголовком единицы NAL единицы NAL, указывает тип единицы NAL. RBSP может представлять собой синтаксическую структуру, содержащую целое число байтов, которое инкапсулировано в единице NAL. В некоторых примерах, RBSP включает в себя нулевые биты.[0055] Video encoder 20 may output a bit stream that includes a bit sequence that forms a representation of encoded pictures and associated data. The bitstream may include a sequence of network abstraction layer (NAL) units. The NAL unit is a syntactic structure containing an indication of the type of data in the NAL unit and bytes containing this data in the form of a raw byte sequence payload (RBSP), interleaved as necessary with emulation prevention bits. Each of the NAL units includes a NAL unit header and encapsulates an RBSP. The NAL unit header may include a syntax element that specifies a NAL unit type code. The NAL unit type code specified by the NAL unit header of the NAL unit indicates the type of the NAL unit. An RBSP may be a syntax structure containing an integer number of bytes that is encapsulated in a NAL unit. In some examples, RBSP includes zero bits.

[0056] Разные типы единиц NAL могут инкапсулировать разные типы RBSP. Например, первый тип единицы NAL может инкапсулировать RBSP для набора параметров картинки (PPS), второй тип единицы NAL может инкапсулировать RBSP для закодированного слайса, третий тип единицы NAL может инкапсулировать RBSP для сообщений информации дополнительного расширения (SEI) и так далее. Единицы NAL, которые инкапсулируют RBSP для данных кодирования видео (в противоположность RBSP для наборов параметров и сообщений SEI), могут упоминаться как единицы NAL уровня кодирования видео (VCL).[0056] Different types of NAL units may encapsulate different types of RBSPs. For example, a first NAL unit type may encapsulate RBSP for a Picture Parameter Set (PPS), a second NAL unit type may encapsulate RBSP for an encoded slice, a third NAL unit type may encapsulate RBSP for Additional Extension Information (SEI) messages, and so on. NAL units that encapsulate RBSP for video coding data (as opposed to RBSP for parameter sets and SEI messages) may be referred to as video coding layer (VCL) NAL units.

[0057] Декодер 30 видео может принимать битовый поток, сгенерированный кодером 20 видео. К тому же, декодер 30 видео может проводить синтаксический анализ битового потока, чтобы получить синтаксические элементы из битового потока. Декодер 30 видео может восстанавливать картинки данных видео на основе по меньшей мере частично синтаксических элементов, полученных из битового потока. Процесс для восстановления данных видео может, в общем, быть противоположным процессу, выполняемому кодером 20 видео. К тому же, декодер 30 видео может обратно квантовать блоки коэффициентов, ассоциированные с TU текущей CU. Декодер 30 видео может выполнять обратные преобразования на блоках коэффициентов, чтобы восстанавливать блоки преобразования, ассоциированные с TU текущей CU. Декодер 30 видео может восстанавливать блоки кодирования текущей CU путем добавления выборок предсказанных блоков для PU текущей CU к соответствующим выборкам блоков преобразования TU текущей CU. Путем восстановления блоков кодирования для каждой CU картинки, декодер 30 видео может восстанавливать картинку. [0057] The video decoder 30 may receive a bitstream generated by the video encoder 20. In addition, video decoder 30 may parse the bitstream to obtain syntax elements from the bitstream. The video decoder 30 may reconstruct pictures of the video data based at least in part on the syntax elements obtained from the bitstream. The process for recovering video data may generally be the opposite of the process performed by video encoder 20. In addition, the video decoder 30 may inversely quantize the coefficient blocks associated with the TU of the current CU. Video decoder 30 may perform inverse transforms on the coefficient blocks to recover transform blocks associated with the TU of the current CU. The video decoder 30 may recover the coding blocks of the current CU by adding the predicted block samples for the PUs of the current CU to the corresponding TU transform block samples of the current CU. By recovering the coding blocks for each picture CU, video decoder 30 can recover the picture.

[0058] Теперь будут рассмотрены аспекты методов HEVC и JEM. Фиг. 2 показывает примерную блок-схему декодера 31 HEVC. Декодер 31 видео, показанный на фиг. 2, в общем соответствует декодеру 30 видео, но в отличие от декодера 30 видео, не включает в себя адаптивный контурный фильтр между восстановлением и буфером опорной картинки. Декодер 30 видео проиллюстрирован более подробно на фиг. 5. HEVC применяет два контурных фильтра, включая фильтр устранения блочности (DBF) и фильтр адаптивного смещения выборки (SAO). Дополнительные подробности касательно декодирования HEVC и SAO описаны в C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012).[0058] Aspects of the HEVC and JEM methods will now be discussed. Fig. 2 shows an exemplary block diagram of a HEVC decoder 31. The video decoder 31 shown in FIG. 2 generally corresponds to video decoder 30, but unlike video decoder 30 does not include an adaptive loop filter between the reconstruction and the reference picture buffer. Video decoder 30 is illustrated in more detail in FIG. 5. HEVC applies two loop filters, including a deblocking filter (DBF) and an adaptive sample bias (SAO) filter. Additional details regarding HEVC and SAO decoding are described in C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012).

[0059] Как проиллюстрировано на фиг. 2, ввод в DBF может представлять собой восстановленное изображение после интра- или интер-предсказания, как показано при помощи вывода из блока восстановления. DBF выполняет обнаружение артефактов на границах закодированного блока и ослабляет артефакты путем применения выбранного фильтра. По сравнению с фильтром устранения блочности H.264/AVC, фильтр устранения блочности HEVC имеет более низкую вычислительную сложность и лучшие способности параллельной обработки при достижении значительного уменьшения визуальных артефактов. Для дополнительных примеров, см. A. Norkin, G. Bjontegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, Minhua Zhou, G. Van der Auwera, “HEVC Deblocking Filter,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1746-1754 (2012). [0059] As illustrated in FIG. 2, the input to the DBF may be a reconstructed image after intra- or inter-prediction, as shown by the output from the reconstruction block. The DBF performs artifact detection at the boundaries of the encoded block and attenuates the artifacts by applying the selected filter. Compared with the H.264/AVC deblocking filter, the HEVC deblocking filter has lower computational complexity and better parallel processing capabilities while achieving a significant reduction in visual artifacts. For more examples, see A. Norkin, G. Bjontegaard, A. Fuldseth, M. Narroschke, M. Ikeda, K. Andersson, Minhua Zhou, G. Van der Auwera, “HEVC Deblocking Filter,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1746-1754 (2012).

[0060] В HEVC, решения фильтра устранения блочности принимаются отдельно для каждой границы длиной четыре выборки, которая лежит на сетке, разделяющей картинку на блоки 8×8 выборок. Устранение блочности выполняется на границе блока, если следующие условия истинны: (1) граница блока является границей единицы предсказания (PU) или единицы преобразования (TU); (2) интенсивность границы (Bs), как определено в Таблице 1 ниже, больше нуля; (3) вариация сигнала, как определено в Уравнении (1) ниже, на обеих сторонах границы блока ниже специфицированного порога.[0060] In HEVC, deblocking filter decisions are made separately for each four-sample-long boundary that lies on a grid dividing the picture into blocks of 8x8 samples. Deblocking is performed at a block boundary if the following conditions are true: (1) the block boundary is a prediction unit (PU) or transform unit (TU) boundary; (2) boundary intensity (Bs), as defined in Table 1 below, is greater than zero; (3) signal variation, as defined in Equation (1) below, on both sides of a block boundary below a specified threshold.

[0061] Таблица 1. Значения интенсивности границы (Bs) для границ между двумя соседними блоками яркости [0061] Table 1. Edge Intensity (Bs) Values for Edges Between Two Adjacent Luminance Blocks

УсловияTerms BsBs По меньшей мере один из блоков интра-кодированAt least one of the blocks is intra-coded 22 По меньшей мере один из блоков имеет ненулевой закодированный остаточный коэффициент, и граница является границей единицы преобразования At least one of the blocks has a non-zero encoded residual coefficient and the boundary is the boundary of the transform unit 1one Абсолютные разности между соответствующими компонентами вектора пространственного движения двух блоков >=1 в единицах целых пикселовAbsolute differences between the corresponding components of the spatial motion vector of two blocks >=1 in units of integer pixels 1one Предсказание скомпенсированного движения для двух блоков относится к разным опорным картинкам, или число векторов движения отличается для двух блоковMotion compensated prediction for two blocks refers to different reference pictures, or the number of motion vectors is different for two blocks 1one ИноеOther 00

Если Bs>0 для границы блока яркости, то фильтрация устранения блочности применяется к этой границе, если удовлетворено следующее условие: If Bs>0 for a luminance block boundary, then deblocking filtering is applied to that boundary if the following condition is satisfied:

Figure 00000001
(1)
Figure 00000001
(one)

где p и q являются значениями выборок яркости на границе, и

Figure 00000002
является порогом.where p and q are the values of the brightness samples at the boundary, and
Figure 00000002
is the threshold.

[0062] HEVC обеспечивает возможности двух типов фильтров устранения блочности яркости, а именно: (i) нормальный фильтр и (ii) сильный фильтр. Выбор фильтра устранения блочности зависит от того, являются ли пределы отклонения конкретного сигнала меньшими, чем определенные пороги (см. “HEVC Deblocking Filter”, Norkin et al (2012), упомянутый выше, для подробностей). Хотя решения фильтрования основаны на двух строках (или столбцах) вертикальной (или горизонтальной, в зависимости от ситуации) границы длиной четыре пиксела, фильтр применяется к каждой строке (или столбцу, в зависимости от ситуации) на границе. Число пикселов, используемых в процессе фильтрации, и число пикселов, которые могут быть модифицированы с помощью каждого типа фильтрации, кратко изложены в Таблице 2 ниже. [0062] HEVC provides two types of luminance deblocking filter capabilities, namely: (i) normal filter and (ii) strong filter. The choice of a deblocking filter depends on whether the rejection limits of a particular signal are less than certain thresholds (see “HEVC Deblocking Filter”, Norkin et al (2012), cited above, for details). Although the filtering decisions are based on two rows (or columns) of a four-pixel vertical (or horizontal, as the case may be) border, the filter is applied to each row (or column, as the case may be) on the border. The number of pixels used in the filtering process and the number of pixels that can be modified with each type of filtering are summarized in Table 2 below.

Таблица 2. Число используемых/модифицированных пикселов на границу при устранении блочности HEVC Table 2. Number of used/modified pixels per border in HEVC deblocking

Используемые пикселы (на любой стороне границы)Pixels used (on either side of the border) Модифицированные пикселы (на любой стороне границы) Modified pixels (on either side of the border) Нормальный фильтр normal filter 3 или 2 3 or 2 2 или 1 2 or 1 Сильный фильтр strong filter 4four 33

[0063] Устранение блочности цветности (т.е., фильтрация устранения блочности, выполняемая на компонентах цветности) выполняется, только когда Bs равно двум (2). В HEVC, используется только один тип фильтра устранения блочности цветности. Фильтр устранения блочности цветности использует пикселы p0, p1, q0, q1 и может модифицировать пикселы p0 и q0 в каждой строке (второй индекс, указывающий нижний индекс, опущен в описании выше для краткости, поскольку фильтр применяется к каждой строке). В JEM, устранение блочности выполняется на уровне CU. Размер CU на любой стороне границы может быть больше, чем 8×8. Минимальный размер CU в JEM составляет 4×4. Поэтому, фильтр устранения блочности может также применяться к границам 4×4 блока. [0063] Chroma deblocking (ie, deblocking filtering performed on chrominance components) is performed only when Bs is equal to two (2). In HEVC, only one type of chroma deblocking filter is used. The chroma deblocking filter uses pixels p 0 , p 1 , q 0 , q 1 and can modify pixels p 0 and q 0 in each row (the second subscript indicating subscript is omitted in the description above for brevity because the filter is applied to each row ). In JEM, deblocking is performed at the CU level. The CU size on either side of the boundary may be larger than 8x8. The minimum CU size in JEM is 4x4. Therefore, the deblocking filter can also be applied to 4×4 block boundaries.

[0064] Вход в фильтр SAO может представлять собой восстановленный блок после применения фильтра устранения блочности, как показано выходом из фильтра устранения блочности на фиг. 2. Кодер видео может применять фильтр SAO, чтобы уменьшить среднее искажение выборки области путем сначала классифицирования выборок области на множество категорий при помощи выбранного классификатора, получения смещения для каждой категории и затем добавления смещения к каждой выборке категории, где индекс классификатора и смещения области кодированы в битовом потоке. В HEVC, область (единица для сигнализации параметров SAO) определяется как CTU.[0064] The input to the SAO filter may be a reconstructed block after applying the deblocking filter, as shown by the output from the deblocking filter in FIG. 2. The video encoder can apply the SAO filter to reduce the average area sample distortion by first classifying the area samples into a set of categories using the selected classifier, obtaining an offset for each category, and then adding an offset to each category sample where the classifier index and area offsets are encoded in bitstream. In HEVC, an area (a unit for signaling SAO parameters) is defined as a CTU.

[0065] Два типа SAO, которые могут удовлетворять требованию низкой сложности, были приняты в HEVC. Этими двумя типами являются SAO смещения края (EO) и смещения полосы (BO), которые рассмотрены более подробно ниже. Кодер 20 видео и декодер 30 видео могут кодировать индекс типа SAO. Для EO, классификация выборок основана на сравнении между текущими выборками и соседними выборками в соответствии с 1-D направленными шаблонами: горизонтальный, вертикальный, диагональный 135° и диагональный 45°. [0065] Two types of SAO that can meet the requirement of low complexity have been adopted in HEVC. The two types are edge offset (EO) and band offset (BO) SAO, which are discussed in more detail below. Video encoder 20 and video decoder 30 may encode an SAO type index. For EO, the classification of samples is based on a comparison between current samples and neighboring samples according to 1-D directional patterns: horizontal, vertical, 135° diagonal, and 45° diagonal.

[0066] Фиг. 3A-3D показывают четыре 1-D направленных шаблона для классификации выборок EO: горизонтальный (фиг. 3A, класс EO=0), вертикальный (фиг. 3B, класс EO=1), диагональный 135° (фиг. 3C, класс EO=2) и горизонтальный 45° (фиг. 3D, класс EO=3). Дополнительные подробности, относящиеся к SAO, описаны в C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012). На фиг. 3A-3D, блок C является текущим блоком, и блоки A и B являются соседними блоками.[0066] FIG. 3A-3D show four 1-D directional patterns for classifying EO samples: horizontal (Fig. 3A, class EO=0), vertical (Fig. 3B, class EO=1), diagonal 135° (Fig. 3C, class EO= 2) and horizontal 45° (Fig. 3D, class EO=3). Additional details relating to SAO are described in C. Fu, E. Alshina, A. Alshin, Y. Huang, C. Chen, Chia. Tsai, C. Hsu, S. Lei, J. Park, W. Han, “Sample adaptive offset in the HEVC standard,” IEEE Trans. Circuits Syst. Video Technol., 22(12): 1755-1764 (2012). In FIG. 3A-3D, block C is the current block, and blocks A and B are neighboring blocks.

Категория
(edgeIdx)
Category
( edgeIdx )
УсловиеCondition
00 C < A && C < BC < A && C < B 1one (C < A && C==B ) || (C==A && C<B)(C < A && C==B ) || (C==A && C<B) 22 (C > A && C==B) || (C == A && C > B)(C > A && C==B) || (C==A&&C>B) 33 C > A && C > BC > A && C > B 4four Ничего из приведенного вышеNone of the above

[0068] Для BO, классификация выборок основана на значениях выборок. Каждый цветной компонент может иметь свои собственные параметры SAO для классификации для фильтрации SAO типа BO. BO подразумевает, что одно смещение добавляется ко всем выборкам одной и той же полосы. Диапазон значений выборок равномерно делится на 32 полосы. Для 8-битных выборок в диапазоне от 0 до 255, ширина полосы составляет 8, и значения выборок от 8k до 8k+7 принадлежат полосе k, где k имеет диапазон от 0 до 31. Одно смещение добавляется ко всем выборкам одной и той же полосы. Средняя разность между исходными выборками и восстановленными выборками в полосе (т.е., смещение полосы) сигнализируется на декодер (например, декодер 30 видео). Не имеется ограничения для знаков смещения. Только смещения четырех (4) последовательных полос и положение начальной полосы сигнализируются на декодер (например, декодер 30 видео).[0068] For BO, the classification of samples is based on the values of the samples. Each color component can have its own SAO parameters for classification for filtering SAO type BO. BO implies that one offset is added to all samples of the same band. The range of sample values is evenly divided into 32 bands. For 8-bit samples in the range 0 to 255, the bandwidth is 8, and the sample values from 8k to 8k+7 belong to band k, where k has a range of 0 to 31. One offset is added to all samples of the same band . The average difference between the original samples and the reconstructed samples in the band (ie, band offset) is signaled to a decoder (eg, video decoder 30). There is no restriction on offset characters. Only the offsets of the four (4) consecutive bands and the position of the start band are signaled to the decoder (eg, video decoder 30).

[0069] Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы реализовывать различные методы адаптивной контурной фильтрации, изложенные в JEM и/или рабочих проектах VVC. Теперь будут описаны аспекты некоторых примерных методов фильтрации JEM (например, ALF). В дополнение к модифицированным способам устранения блочности (DB) и HEVC SAO, JEM включает в себя другой способ фильтрации, называемый адаптивной контурной фильтрацией на основе геометрического преобразования (GALF). Вход в ALF/GALF может представлять собой восстановленное изображение после применения SAO (например, выход адаптивного смещения выборки на фиг. 2). Аспекты GALF описаны в Tsai, C.Y., Chen, C.Y., Yamakage, T., Chong, I.S., Huang, Y.W., Fu, C.M., Itoh, T., Watanabe, T., Chujoh, T., Karczewicz, M. and Lei, S.M., “Adaptive loop filtering for video coding”, IEEE Journal of Selected Topics in Signal Processing, 7(6), pp. 934-945, 2013 и в M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter”, Picture Coding Symposium (PCS), 2016.[0069] Video encoder 20 and video decoder 30 may be configured to implement various adaptive loop filtering techniques outlined in the JEM and/or VVC working drafts. Aspects of some exemplary JEM filtering methods (eg, ALF) will now be described. In addition to modified deblocking (DB) and HEVC SAO methods, JEM includes another filtering method called geometric transform-based adaptive loop filtering (GALF). The input to ALF/GALF may be a reconstructed image after applying SAO (eg, the output of the adaptive sampling bias in FIG. 2). Aspects of GALF are described in Tsai, C.Y., Chen, C.Y., Yamakage, T., Chong, I.S., Huang, Y.W., Fu, C.M., Itoh, T., Watanabe, T., Chujoh, T., Karczewicz, M. and Lei , S.M., “Adaptive loop filtering for video coding”, IEEE Journal of Selected Topics in Signal Processing, 7(6), pp. 934-945, 2013 and in M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter”, Picture Coding Symposium (PCS), 2016.

[0070] Методы ALF пытаются минимизировать среднюю квадратичную ошибку между исходными выборками и декодированными/восстановленными выборками с использованием адаптивного фильтра Винера. Обозначим входное изображение как p, изображение источника как S и фильтр с конечным импульсным откликом (FIR) как h. Тогда следующее выражение суммы квадратичных ошибок (SSE) должно быть минимизировано, где (x, y) обозначает положение любого пиксела в p или S. [0070] ALF techniques attempt to minimize the mean square error between the original samples and the decoded/recovered samples using an adaptive Wiener filter. Let's denote the input image as p , the source image as S , and the finite impulse response (FIR) filter as h . Then the following sum of squared error expression (SSE) must be minimized, where (x, y) denotes the position of any pixel in p or S .

Figure 00000003
Figure 00000003

Оптимальный h, обозначенный как h opt , может быть получен, приравнивая частную производную SSE по h(i, j) к 0:The optimal h , denoted h opt , can be obtained by setting the partial derivative of SSE with respect to h(i, j) to 0:

Figure 00000004
Figure 00000004

Это приводит к уравнению Винера-Хопфа, показанному ниже, которое дает оптимальный фильтр h opt : This leads to the Wiener-Hopf equation shown below, which gives the optimal filter h opt :

Figure 00000005
Figure 00000005

[0071] В некоторых примерах JEM или VVC, вместо использования одного фильтра для всей картинки, кодер 20 видео и/или декодер 30 видео может быть сконфигурирован, чтобы классифицировать выборки в картинке на двадцать пять (25) классов на основе локальных градиентов. Кодер 20 видео и/или декодер 30 видео может получать отдельные оптимальные фильтры Винера для пикселов в каждом классе. Несколько методов использовалось для повышения эффективности адаптивной контурной фильтрации путем уменьшения издержек сигнализации и вычислительной сложности. Некоторые из методов, которые могут использоваться для повышения эффективности ALF путем уменьшения издержек сигнализации и/или вычислительной сложности, перечислены ниже:[0071] In some JEM or VVC examples, instead of using a single filter for the entire picture, video encoder 20 and/or video decoder 30 may be configured to classify the samples in the picture into twenty-five (25) classes based on local gradients. Video encoder 20 and/or video decoder 30 may obtain individual optimal Wiener filters for pixels in each class. Several techniques have been used to improve the efficiency of adaptive loop filtering by reducing signaling overhead and computational complexity. Some of the techniques that can be used to improve the efficiency of ALF by reducing signaling overhead and/or computational complexity are listed below:

1. Предсказание из фиксированных фильтров: Коэффициенты оптимального фильтра для каждого класса предсказываются с использованием пула предсказаний фиксированных фильтров, которые включают в себя 16 фильтров-кандидатов для каждого класса. Лучший кандидат предсказания выбирается для каждого класса, и передаются только ошибки предсказания. 1. Prediction from fixed filters: The optimal filter coefficients for each class are predicted using a pool of fixed filter predictions that includes 16 candidate filters for each class. The best prediction candidate is selected for each class, and only prediction errors are transmitted.

2. Объединение классов: Вместо использования двадцати пяти (25) разных фильтров (один для каждого класса), пикселы во множестве классов могут совместно использовать один фильтр, чтобы уменьшить число параметров фильтра, подлежащих кодированию. Объединение двух классов может приводить к более высокой совокупной SSE, но более низкой стоимости по критерию искажение-скорость (RD). 2. Class Merging: Instead of using twenty-five (25) different filters (one for each class), pixels in multiple classes can share one filter to reduce the number of filter parameters to be encoded. Combining the two classes may result in a higher total SSE but lower cost in terms of distortion-rate (RD).

3. Переменное число отводов: Число отводов фильтра является адаптивным на уровне кадра. Теоретически, фильтры с большим числом отводов могут достигать более низкой SSE, но может не являться хорошим выбором с точки зрения стоимости RD, из-за битовых издержек, ассоциированных с большими коэффициентами фильтра.3. Variable number of taps: The number of filter taps is adaptive at the frame level. Theoretically, filters with more taps can achieve lower SSE, but may not be a good choice in terms of RD cost, due to the bit overhead associated with large filter coefficients.

4. Управление включением/выключением на блочном уровне: ALF может включаться и выключаться (разрешаться или блокироваться) на блочной основе. Размер блока, при котором сигнализируется флаг управления включением/выключением, адаптивно выбирается на кадровом уровне. Коэффициенты фильтра могут повторно вычисляться с использованием пикселов только из тех блоков, для которых ALF разрешено (т.е., ALF используется). 4. Block Level On/Off Control: ALF can be turned on and off (enabled or disabled) on a block basis. The block size at which the on/off control flag is signaled is adaptively selected at the frame level. The filter coefficients can only be recalculated using pixels from those blocks for which ALF is enabled (ie, ALF is used).

5. Временное предсказание: Фильтры, выведенные для ранее закодированных кадров, хранятся в буфере. Если текущий кадр представляет собой P или B кадр, то один из сохраненного набора фильтров может использоваться, чтобы фильтровать этот кадр, если это ведет к лучшей стоимости RD. Флаг сигнализируется, чтобы указывать использование временного предсказания. Если временное предсказание используется, то сигнализируется индекс, указывающий, какой набор сохраненных фильтров используется. Не требуется дополнительной сигнализации коэффициентов ALF. Флаги управления включением/выключением ALF блочного уровня могут также сигнализироваться для кадра с использованием временного предсказания. 5. Temporal prediction: Filters derived for previously encoded frames are stored in a buffer. If the current frame is a P or B frame, then one of the stored filter set may be used to filter that frame if it results in a better RD cost. The flag is signaled to indicate the use of temporal prediction. If temporal prediction is used, then an index indicating which set of stored filters is being used is signaled. No additional signaling of the ALF coefficients is required. Block level ALF on/off control flags may also be signaled for a frame using temporal prediction.

[0072] Подробности некоторых аспектов ALF кратко изложены в этом и следующих абзацах. Некоторые аспекты ALF относятся к классификации пикселов и геометрическому преобразованию. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы вычислять суммы абсолютных значений вертикального, горизонтального и диагонального операторов Лапласа во всех пикселах в пределах окна 6×6, которое охватывает каждый пиксел в восстановленном кадре (до ALF). Кодер 20 видео и декодер 30 видео делят восстановленный кадр на неперекрывающиеся блоки 2×2. Кодер 20 видео и декодер 30 видео классифицируют четыре пиксела в этих блоках на одну из двадцати пяти (25) категорий, обозначенных как Ck (k=0, 1, …, 24), на основе общей активности операторов Лапласа и направленности этого блока. Дополнительно, кодер 20 видео и декодер 30 видео применяют одно из четырех геометрических преобразований (отсутствие преобразования, диагональный переворот, вертикальный переворот или вращение) к фильтрам на основе направленности градиента этого блока. Дополнительные подробности можно найти в M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter,” Picture Coding Symposium (PCS), 2016.[0072] Details of some aspects of the ALF are summarized in this and the following paragraphs. Some aspects of ALF relate to pixel classification and geometric transformation. In one example, video encoder 20 and video decoder 30 may be configured to calculate the sums of the absolute values of the vertical, horizontal, and diagonal Laplace operators over all pixels within a 6×6 window that spans each pixel in the reconstructed frame (before ALF). Video encoder 20 and video decoder 30 divide the reconstructed frame into non-overlapping 2×2 blocks. Video encoder 20 and video decoder 30 classify the four pixels in these blocks into one of twenty-five (25) categories, denoted as C k (k=0, 1, ..., 24), based on the total activity of the Laplace operators and the directionality of this block. Additionally, video encoder 20 and video decoder 30 apply one of four geometric transforms (no transform, diagonal flip, vertical flip, or rotation) to the filters based on the block's gradient directionality. Additional details can be found in M. Karczewicz, L. Zhang, W.-J. Chien, and X. Li, “Geometry transformation-based adaptive in-loop filter,” Picture Coding Symposium (PCS), 2016.

[0073] Некоторые аспекты адаптивной контурной фильтрации относятся к выводу фильтра и предсказанию из фиксированных фильтров. Для каждого класса Ck, кодер 20 видео и декодер 30 видео сначала определяют лучший фильтр предсказания из пула для Ck, обозначенный как hpred, k, на основе SSE, выданной фильтрами. SSE C k , который следует минимизировать, может быть записан следующим образом[0073] Some aspects of adaptive loop filtering relate to filter derivation and prediction from fixed filters. For each class C k , video encoder 20 and video decoder 30 first determine the best pooled prediction filter for C k , denoted h pred, k , based on the SSE output by the filters. The SSE C k to be minimized can be written as follows

Figure 00000006
Figure 00000006

где

Figure 00000007
представляет собой разность между оптимальным фильтром для C k и h pred , k . Положим, что
Figure 00000008
является результатом фильтрации пиксела p(x, y) посредством h pred , k . Тогда выражение для SSE K может быть переписано какwhere
Figure 00000007
is the difference between the optimal filter for C k and h pred , k . Let's assume that
Figure 00000008
is the result of filtering the pixel p(x, y) by h pred , k . Then the expression for SSE K can be rewritten as

Figure 00000009
Figure 00000009

Figure 00000010
Figure 00000010

Приравнивая частную производную SSE k по

Figure 00000011
к 0, получим модифицированное уравнение Винера-Хопфа:Equating the partial derivative of SSE k with respect to
Figure 00000011
to 0, we get the modified Wiener-Hopf equation:

Figure 00000012
Figure 00000012

Figure 00000013
Figure 00000013

Для простоты выражения, обозначим

Figure 00000014
и
Figure 00000015
при
Figure 00000016
как
Figure 00000017
и
Figure 00000018
, соответственно. Тогда, уравнение выше может быть записано как:For simplicity of expression, we denote
Figure 00000014
and
Figure 00000015
at
Figure 00000016
how
Figure 00000017
and
Figure 00000018
, respectively. Then, the equation above can be written as:

Figure 00000019
Figure 00000020
(1)
Figure 00000019
Figure 00000020
(one)

Для каждого C k , матрица

Figure 00000017
автокорреляции и вектор
Figure 00000018
кросс-корреляции вычисляются по всем
Figure 00000016
. For each C k , the matrix
Figure 00000017
autocorrelations and vector
Figure 00000018
cross-correlations are calculated over all
Figure 00000016
.

[0074] В одном примере адаптивной контурной фильтрации, кодер 20 видео вычисляет и передает только разность между оптимальным фильтром и фиксированным фильтром предсказания. Если ни один из фильтров-кандидатов, доступных в пуле, не является хорошим предсказателем, то кодер 20 видео и декодер 30 видео используют единичный фильтр (т.е., фильтр с только одним ненулевым коэффициентом, равным 1 в центре, что делает вход и выход идентичными) в качестве предсказателя. [0074] In one example of adaptive loop filtering, video encoder 20 calculates and transmits only the difference between the optimal filter and the fixed prediction filter. If none of the candidate filters available in the pool is a good predictor, then video encoder 20 and video decoder 30 use a unity filter (i.e., a filter with only one non-zero coefficient equal to 1 at the center, which makes the input and output identical) as a predictor.

[0075] Некоторые аспекты адаптивной контурной фильтрации относятся к объединению классов пикселов. Классы объединяются для уменьшения издержек сигнализации коэффициентов фильтров. Стоимость объединения двух классов повышается относительно SSE. Рассмотрим два класса C m и C n с SSE, заданными посредством SSE m и SSE n , соответственно. Положим, что C m + n обозначает класс, полученный путем объединения C m и C n с SSE, обозначенной как SSE m + n . SSE m + n всегда больше или равна SSE m +SSE n . Положим, что ΔSSE m + n обозначает увеличение в SSE, вызванное объединением C m и C n , которое равно SSE m + n -(SSE m +SSE n ). Чтобы вычислить SSE m + n , кодер 20 видео может вывести

Figure 00000021
, ошибку предсказания фильтра для C m + n , с использованием следующего выражения, аналогичного (1): [0075] Some aspects of adaptive edge filtering relate to combining pixel classes. The classes are combined to reduce the signaling overhead of the filter coefficients. The cost of combining two classes increases relative to SSE. Consider two classes C m and C n with SSEs defined by SSE m and SSE n , respectively. Let C m + n denote the class obtained by combining C m and C n with the SSE denoted SSE m + n . SSE m + n is always greater than or equal to SSE m + SSE n . Let ΔSSE m + n denote the increase in SSE caused by the union of C m and C n , which is equal to SSE m + n -(SSE m +SSE n ) . To compute SSE m + n , video encoder 20 may output
Figure 00000021
, filter prediction error for C m + n , using the following expression similar to (1):

Figure 00000022
(2)
Figure 00000022
(2)

Кодер 20 видео может вычислить SSE для объединенной категории C m + n как:Video encoder 20 may calculate the SSE for the combined category C m + n as:

Figure 00000023
Figure 00000024
Figure 00000023
Figure 00000024

[0076] Чтобы уменьшить число классов с N до N-1, может потребоваться найти два класса, C m и C n , так что их объединение приводит к наименьшей ΔSSE m + n по сравнению с любыми другими комбинациями. В некоторых проектах ALF, кодер 20 видео сконфигурирован, чтобы проверять каждую пару доступных классов для объединения, чтобы найти пару с наименьшей стоимостью объединения. [0076] To reduce the number of classes from N to N-1 , it may be necessary to find two classes, C m and C n , so that their combination results in the smallest ΔSSE m + n compared to any other combinations. In some ALF designs, the video encoder 20 is configured to check each pair of available classes to merge to find the pair with the lowest merge cost.

[0077] Если C m и C n (при m<n) объединяются, то кодер 20 видео и декодер 30 видео могут маркировать C n как недоступный для дополнительного объединения, и авто- и кросс-корреляции для C m изменяются в комбинированные авто- и кросс-корреляции следующим образом:[0077] If C m and C n (when m<n) are combined, then video encoder 20 and video decoder 30 may mark C n as unavailable for further combining, and the auto- and cross-correlations for C m are changed to combined auto- and cross-correlations as follows:

Figure 00000025
Figure 00000025

Figure 00000026
Figure 00000026

Figure 00000027
Figure 00000027

[0078] Кодер 20 видео может определять оптимальное число классов ALF после объединения для каждого кадра на основе затрат RD. В одном примере, это производится, начиная с двадцати пяти (25) классов и успешно объединяя пару классов (из набора доступных классов), пока не останется только один класс. Для каждого возможного числа классов (1, 2, …, 25), оставшихся после объединения, кодер 20 видео может хранить карту, указывающую, какие классы объединены вместе. Кодер 20 видео затем выбирает оптимальное число классов, так что стоимость RD минимизируется следующим образом: [0078] Video encoder 20 may determine the optimal number of post-combining ALF classes for each frame based on the RD cost. In one example, this is done by starting with twenty-five (25) classes and successfully merging a couple of classes (from the set of available classes) until only one class remains. For each possible number of classes (1, 2, ..., 25) remaining after the merging, video encoder 20 may store a map indicating which classes are merged together. Video encoder 20 then selects the optimal number of classes so that the RD cost is minimized as follows:

Figure 00000028
,
Figure 00000028
,

где

Figure 00000029
- полная SSE использования N классов (
Figure 00000030
),
Figure 00000031
- полное число битов, используемых для кодирования N фильтров, и
Figure 00000032
- весовой коэффициент, определенный параметром квантования (QP). Кодер 20 видео может передавать карту объединений для числа
Figure 00000033
классов, указывающую, какие классы объединены вместе, на декодер 30 видео.where
Figure 00000029
- full SSE using N classes (
Figure 00000030
),
Figure 00000031
is the total number of bits used to encode the N filters, and
Figure 00000032
is the weighting factor defined by the quantization parameter (QP). The video encoder 20 may transmit a pool map for the number
Figure 00000033
classes indicating which classes are combined together to the video decoder 30 .

[0079] Аспекты параметров сигнализации ALF описаны ниже. Краткое поэтапное описание примерного процесса кодирования параметров ALF, выполняемого кодером 20 видео, приведено ниже. Декодер 30 видео может быть сконфигурирован, чтобы выполнять противоположный процесс (например, сигналом с точки зрения декодера 30 видео является прием синтаксических элементов).[0079] Aspects of the ALF signaling parameters are described below. A brief step-by-step description of an exemplary ALF parameter encoding process performed by video encoder 20 is provided below. The video decoder 30 may be configured to perform the opposite process (eg, the signal from the point of view of the video decoder 30 is the reception of syntax elements).

1. Сигнализировать флаг включения/выключения ALF кадрового уровня. 1. Signal the frame level ALF enable/disable flag.

2. Если ALF включен, то сигнализировать флаг временного предсказания, указывающий использование фильтров из предыдущих картинок. 2. If ALF is enabled, then signal a temporal prediction flag indicating the use of filters from previous pictures.

3. Если временное предсказание используется, то сигнализировать индекс кадра, из которого соответствующие параметры ALF используются для фильтрации текущего кадра. 3. If temporal prediction is used, then signal the frame index from which the corresponding ALF parameters are used to filter the current frame.

4. Если временное предсказание не используется, то сигнализировать вспомогательную информацию ALF и коэффициенты фильтра следующим образом:4. If temporal prediction is not used, then signal the ALF side information and filter coefficients as follows:

a. Следующая вспомогательная информация ALF может сигнализироваться перед сигнализацией коэффициентов фильтра. Вспомогательная информация ALF может включать в себя: a. The following auxiliary information ALF may be signaled before signaling the filter coefficients. Ancillary ALF information may include:

i. Число уникальных фильтров, использованных после объединения классов. i. The number of unique filters used after the classes were merged.

ii. Число отводов фильтра. ii. Number of filter outlets.

iii. Информацию объединения классов, указывающую, какие классы совместно используют ошибки предсказания фильтра.iii. Class union information indicating which classes share filter prediction errors.

iv. Индекс предсказателя фиксированного фильтра для каждого класса. iv. Fixed filter predictor index for each class.

b. После сигнализации вспомогательной информации ALF, ошибки предсказания коэффициента фильтра могут сигнализироваться следующим образом:b. After signaling the ALF side information, filter coefficient prediction errors may be signaled as follows:

i. Флаг сигнализируется, чтобы указывать, приводятся ли к нулю (0) ошибки предсказания фильтра для некоторых из оставшихся классов после объединения.i. The flag is signaled to indicate whether the filter prediction errors for some of the remaining classes after the merging are nullified (0).

ii. Флаг сигнализируется, чтобы указывать, используется ли дифференциальное кодирование для сигнализации ошибок предсказания фильтра (если число классов, оставшихся после объединения, больше одного (1)). ii. The flag is signaled to indicate whether differential coding is used to signal filter prediction errors (if the number of classes remaining after merging is greater than one (1)).

iii. Ошибки предсказания коэффициента фильтра затем сигнализируются с использованием экспоненциального кода Голомба k-го порядка, где значение k для разных положений коэффициентов выбирается эмпирически. iii. Filter coefficient prediction errors are then signaled using a k-th order Exponential Golomb code, where the value of k for different coefficient positions is chosen empirically.

c. Коэффициенты фильтра для компонентов цветности, если имеются, напрямую кодируются без каких-либо способов предсказания. c. The filter coefficients for the chrominance components, if any, are directly encoded without any prediction methods.

5. Наконец, сигнализируются флаги управления включением/выключением ALF блочного уровня. 5. Finally, block-level ALF enable/disable control flags are signaled.

[0080] Проект адаптивной контурной фильтрации в некоторых примерах JEM может представлять одну или несколько потенциальных проблем. В качестве одного примера, некоторые примерные проекты адаптивной контурной фильтрации выполняют множество проходов по каждому кадру, чтобы создать один набор фильтров (например, один фильтр для каждого класса пикселов или один фильтр, совместно используемый среди множества классов в кадре) для всего кадра. Такие методы вводят высокую задержку кодера. Высокая задержка кодера может быть особенно проблематичной в применениях с низким запаздыванием, таких как видеоконференции, где может быть важно по возможности быстро отправлять в канал даже частично закодированный кадр.[0080] The adaptive loop filtering design in some JEM examples may present one or more potential problems. As one example, some exemplary adaptive loop filtering designs perform multiple passes over each frame to create one set of filters (eg, one filter per pixel class, or one filter shared among multiple classes in a frame) for the entire frame. Such methods introduce high encoder latency. High encoder latency can be particularly problematic in low latency applications such as videoconferencing, where it can be important to send even a partially encoded frame onto the channel as quickly as possible.

[0081] В качестве другого примера, в соответствии с некоторыми проектами адаптивной контурной фильтрации, один набор фильтров используется для всей картинки. Локальная статистика в малом блоке исходной картинки и восстановленной картинки может отличаться от совокупной статистики, полученной с использованием всей картинки. Поэтому, ALF, которая является оптимальной для всей картинки, может быть неоптимальной для данного блока.[0081] As another example, according to some adaptive loop filtering designs, one set of filters is used for the entire picture. Local statistics in a small block of the original image and the reconstructed image may differ from the aggregate statistics obtained using the entire image. Therefore, an ALF that is optimal for the entire picture may not be optimal for a given block.

[0082] В качестве другого примера, потенциальная проблема с проектированием нового набора фильтров Винера с использованием малого блока картинки, чтобы получить лучшую локальную адаптивность, состоит в том, что число пикселов, доступных в малом блоке, может быть недостаточным, чтобы кодер 20 видео определил хорошую оценку матриц и векторов корреляции. Это может приводить к некорректным уравнениям Винера-Хопфа, что, в свою очередь, может давать менее чем оптимальные коэффициенты ALF.[0082] As another example, a potential problem with designing a new Wiener filter bank using a small picture block to obtain better local adaptability is that the number of pixels available in the small block may not be sufficient for video encoder 20 to determine a good estimate of the matrices and vectors of the correlation. This can lead to incorrect Wiener-Hopf equations, which in turn can lead to less than optimal ALF coefficients.

[0083] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации определяют шестнадцать (16) фиксированных фильтров для каждого из двадцати пяти (25) классов, тем самым выдавая всего четыреста (400) фильтров. Эти фильтры могут использоваться как фильтры предсказателя для конечных коэффициентов фильтра для каждого класса. Индекс используемого фильтра предсказателя сигнализируется для каждого класса. Это может вызывать высокие издержки сигнализации и уменьшать общий выигрыш кодирования. [0083] As another example, some exemplary adaptive loop filtering designs define sixteen (16) fixed filters for each of twenty-five (25) classes, thereby producing a total of four hundred (400) filters. These filters can be used as predictor filters for the final filter coefficients for each class. The index of the predictor filter used is signaled for each class. This can cause high signaling overhead and reduce the overall coding gain.

[0084] Другой потенциальный недостаток использования фиксированного набора фильтров в качестве предсказателей состоит в том, что набор предсказателей не модифицируется на основе новых фильтров, спроектированных для предыдущих кадров. Поскольку соседние по времени кадры по всей вероятности имеют сходную статистику, использование оптимальных фильтров для предыдущих кадров может приводить к эффективному предсказанию оптимальных фильтров для текущего кадра.[0084] Another potential disadvantage of using a fixed filter bank as predictors is that the predictor bank is not updated based on new filters designed for previous frames. Because temporally adjacent frames are likely to have similar statistics, using optimal filters for previous frames can lead to efficient prediction of optimal filters for the current frame.

[0085] В качестве другого примера, некоторые примерные проекты адаптивной контурной фильтрации требуют двух проходов по текущему кадру, чтобы принять решения о включении/выключении фильтра блочного уровня. Это вводит дополнительную задержку кодера. Блоки, для которых сигнализируются флаги включения/выключения ALF, не выровнены с единицами кодирования (CU). Поэтому, информация CU, такая как режим, флаг закодированного блока и т.д. не могут учитываться в решении управления включением/выключением ALF. Использование этой информации может уменьшить издержки сигнализации включения/выключения. [0085] As another example, some exemplary adaptive loop filtering designs require two passes through the current frame to make block-level filter on/off decisions. This introduces additional encoder delay. The blocks for which the ALF enable/disable flags are signaled are not aligned with the coding units (CU). Therefore, CU information such as mode, encoded block flag, etc. cannot be taken into account in the ALF on/off control decision. Using this information can reduce the on/off signaling overhead.

[0086] Чтобы решить одну или несколько из проблем, рассмотренных выше, настоящее раскрытие описывает методы для дополнительного улучшения выигрышей кодирования и визуального качества, получаемых с использованием адаптивной контурной фильтрации. Кодер 20 видео и/или декодер 30 видео могут применять любой из следующих перечисленных методов. Альтернативно, кодер 20 видео и/или декодер 30 видео может применять любую комбинацию перечисленных методов, обсужденных ниже. [0086] In order to address one or more of the problems discussed above, the present disclosure describes techniques for further improving coding gains and visual quality obtained using adaptive loop filtering. Video encoder 20 and/or video decoder 30 may employ any of the following listed techniques. Alternatively, video encoder 20 and/or video decoder 30 may employ any combination of the listed techniques discussed below.

[0087] В соответствии с одним примерным методом настоящего раскрытия, кодер 20 видео может сигнализировать набор адаптивных контурных фильтров поблочно в одной картинке/слайсе/тайле. Например, для каждого блока данных видео в картинке, слайсе или тайле данных видео, кодер 20 видео может быть сконфигурирован, чтобы кодировать один или несколько синтаксических элементов, указывающих набор адаптивных контурных фильтров, подлежащих использованию для блока. Декодер 30 видео может быть сконфигурирован, чтобы декодировать один или несколько синтаксических элементов для каждого блока, чтобы определять набор адаптивных контурных фильтров, подлежащих использованию для блока. [0087] In accordance with one exemplary method of the present disclosure, video encoder 20 may signal the adaptive loop filter bank block by block in a single picture/slice/tile. For example, for each block of video data in a picture, slice, or tile of video data, video encoder 20 may be configured to encode one or more syntax elements indicating a set of adaptive loop filters to be used for the block. Video decoder 30 may be configured to decode one or more syntax elements for each block to determine the set of adaptive loop filters to be used for the block.

[0088] В одном примере, кодер 20 видео может быть сконфигурирован, чтобы указывать набор ALF (например, набор адаптивных контурных фильтров, упомянутых выше) путем кодирования индекса набора в список наборов фильтров (например, множество наборов адаптивных контурных фильтров). В настоящем раскрытии, термин “набор фильтров” может относиться к одному набору адаптивных контурных фильтров, термин “наборы фильтров” может относиться к множеству наборов адаптивных контурных фильтров, и термин “список наборов фильтров” может относиться к списку множества наборов адаптивных контурных фильтров. В одном примере, список наборов фильтров может включать в себя множество наборов адаптивных контурных фильтров. То есть, список наборов фильтров может включать в себя все определенные возможные наборы фильтров (т.е., множество наборов адаптивных контурных фильтров) для картинки/слайса/тайла. Индекс, в некоторых примерах, идентифицирует конкретный набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, включенных в список. Декодер 30 видео может быть сконфигурирован, чтобы хранить и/или определять множество наборов адаптивных контурных фильтров в соответствии с предопределенными правилами. Как будет обсуждено ниже, множество наборов адаптивных контурных фильтров может включать в себя предварительно обученные фильтры, адаптивные контурные фильтры, которые сигнализируются для текущей картинке, и адаптивные контурные фильтры, которые используются повторно из предыдущих картинок. В одном примере, для конкретного набора адаптивных контурных фильтров, каждый соответственный набор конкретного набора адаптивных контурных фильтров включает в себя один или более из текущего адаптивного контурного фильтра, сигнализированного для текущей картинки, или предварительно обученного адаптивного контурного фильтра. Декодер 30 видео может быть сконфигурирован, чтобы декодировать индекс, отправленный кодером 20 видео, и определять набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, чтобы использовать для конкретного блока данных видео.[0088] In one example, video encoder 20 may be configured to indicate an ALF set (eg, the adaptive loop filter set mentioned above) by encoding the set index into a list of filter sets (eg, a plurality of adaptive loop filter sets). In the present disclosure, the term “filter bank” may refer to a single adaptive loop filter bank, the term “filter banks” may refer to a plurality of adaptive loop filter banks, and the term “filter bank list” may refer to a list of a plurality of adaptive loop filter banks. In one example, the filter bank list may include a plurality of adaptive loop filter banks. That is, the filter set list may include all defined possible filter sets (ie, a plurality of adaptive loop filter sets) for a picture/slice/tile. The index, in some examples, identifies a particular adaptive loop filter bank from a plurality of adaptive loop filter banks included in the list. The video decoder 30 may be configured to store and/or determine a plurality of adaptive loop filter sets according to predefined rules. As will be discussed below, the plurality of adaptive loop filter sets may include pre-trained filters, adaptive loop filters that are signaled for the current picture, and adaptive loop filters that are reused from previous pictures. In one example, for a specific adaptive loop filter bank, each respective adaptive loop filter bank specific bank includes one or more of the current adaptive loop filter signaled for the current picture or a pre-trained adaptive loop filter. Video decoder 30 may be configured to decode the index sent by video encoder 20 and determine an adaptive loop filter set from a plurality of adaptive loop filter banks to use for a particular video data block.

[0089] Таким образом, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация. В одном примере раскрытия, каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров для соответственного блока текущей картинки в случае, когда адаптивная контурная фильтрация разрешена для блока (например, как указано флагом включения/выключения ALF). [0089] Thus, video encoder 20 and video decoder 30 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering. In one exemplary disclosure, each respective adaptive loop filter set includes the previous adaptive loop filter used in one or more previous pictures. Video encoder 20 and video decoder 30 may be configured to determine an appropriate set of adaptive loop filters for a respective block of the current picture in case adaptive loop filtering is enabled for the block (eg, as indicated by the ALF on/off flag).

[0090] Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров. Например, как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы классифицировать выборки блока и затем использовать адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров, который ассоциирован с классификацией. В другом примере, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать синтаксический элемент, который указывает, какой адаптивный контурный фильтр в соответственном наборе адаптивных контурных фильтров следует использовать для текущего блока. Соответственно, в одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать соответственный флаг на блок, указывая, используется ли адаптивная контурная фильтрация для соответственного блока (например, флаг включения/выключения ALF блочного уровня), и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В некоторых примерах, кодер 20 видео и декодер 30 видео не будут кодировать соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, в случае, когда адаптивная контурная фильтрация не используется для текущего блока (например, флаг ALF блочного уровня указывает, что адаптивная контурная фильтрация выключена и/или не разрешена).[0090] Video encoder 20 and video decoder 30 may be further configured to perform adaptive loop filtering of blocks of the current picture in accordance with respective adaptive loop filter banks. For example, as described above, video encoder 20 and video decoder 30 may be configured to classify block samples and then use an adaptive loop filter in a respective adaptive loop filter set that is associated with the classification. In another example, video encoder 20 may be configured to signal a syntax element that indicates which adaptive loop filter in the respective adaptive loop filter set to use for the current block. Accordingly, in one example, video encoder 20 and video decoder 30 may be configured to encode a respective flag per block indicating whether adaptive loop filtering is used for the respective block (eg, a block level ALF on/off flag), and encode, per based on the respective flag per block, the respective syntax element indicating the respective adaptive loop filter set, from the plurality of adaptive loop filter sets, to the current picture block. In some examples, video encoder 20 and video decoder 30 will not encode the respective syntax element indicating the respective set of adaptive loop filters in the case where adaptive loop filtering is not used for the current block (e.g., a block level ALF flag indicates that adaptive loop filtering is disabled and/or not allowed).

[0091] В примерах выше, “блок” текущей картинки может определяться как любой размер блока. В одном примере, блок может представлять собой единицу дерева кодирования (CTU) или любой другой блок. Блок может быть не связан с разбиением. В случае, когда блок представляет собой CTU, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать набор адаптивных контурных фильтров, сигнализируемый для CTU для всех блоков, разделенных из CTU.[0091] In the examples above, a "block" of the current picture may be defined as any block size. In one example, the block may be a coding tree unit (CTU) or any other block. A block may not be associated with a break. In the case where the block is a CTU, video encoder 20 and video decoder 30 may be configured to use the adaptive loop filter bank signaled to the CTU for all blocks split from the CTU.

[0092] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять список множества наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять такой список на картинку, на слайс или на тайл. Каждый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров может быть сконфигурирован так, что каждая возможная классификация выборок имеет ассоциированный фильтр. То есть, каждый набор может содержать фильтр, назначенный на класс. Как описано выше, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать индекс набора в список из множества наборов адаптивных контурных фильтров на блок. В одном примере, список множества наборов адаптивных контурных фильтров может представлять собой таблицу, где каждая запись в таблице представляет собой конкретный набор адаптивных контурных фильтров. К тому же, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать флаг на блок для указания, используется или нет ALF (например, флаг включения/выключения ALF блочного уровня). Список множества наборов адаптивных контурных фильтров может включать в себя один или несколько предварительно обученных фильтров, один или несколько фильтров, выведенных с использованием фильтров из предыдущих картинок, и/или фильтры, сигнализированные в битовом потоке для текущей картинки.[0092] In one example, video encoder 20 and video decoder 30 may be configured to define a list of multiple adaptive loop filter banks. Video encoder 20 and video decoder 30 may be configured to define such a list per picture, per slice, or per tile. Each adaptive loop filter bank of the plurality of adaptive loop filter banks may be configured such that each possible sample classification has an associated filter. That is, each set can contain a filter assigned to a class. As described above, video encoder 20 and video decoder 30 may be configured to encode a set index into a list of multiple adaptive loop filter banks per block. In one example, the list of multiple adaptive loop filter sets may be a table, where each entry in the table represents a particular adaptive loop filter set. In addition, video encoder 20 and video decoder 30 may be configured to encode a flag per block to indicate whether or not ALF is used (eg, a block level ALF on/off flag). The list of multiple sets of adaptive loop filters may include one or more pre-trained filters, one or more filters derived using filters from previous pictures, and/or filters signaled in the bitstream for the current picture.

[0093] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и/или декодер 30 видео могут совместно использовать список множества наборов фильтров по разным картинкам (например, адаптивный контурный фильтр, использованный для предыдущей картинки, включен в набор из множества наборов фильтров, использованных для кодирования текущего блока). В одном примере, список наборов фильтров может быть инициализирован с предварительно обученными фильтрами. После кодирования картинки, кодер 20 видео может выводить новый набор фильтров на основе закодированной картинки и добавлять новый набор фильтров в список наборов фильтров. Альтернативно, новый набор фильтров может заменять существующий набор фильтров в списке. После кодирования другой картинки, кодер 20 видео может выводить другой набор фильтров и включать выведенный набор фильтров в список наборов фильтров. В этом примере, список наборов фильтров является общим для всех картинок и может обновляться после кодирования картинки. Со стороны декодера, декодер 30 видео может обнаруживать сигнализацию нового набора фильтров после декодирования картинки или перед декодированием картинки.[0093] In accordance with some examples of the present disclosure, video encoder 20 and/or video decoder 30 may share a list of multiple filter banks across different pictures (e.g., an adaptive loop filter used for a previous picture is included in a set of multiple filter banks, used to encode the current block). In one example, a list of filter sets may be initialized with pre-trained filters. After encoding the picture, the video encoder 20 may derive a new filter set based on the encoded picture and add the new filter set to the filter set list. Alternatively, the new filter set may replace the existing filter set in the list. After encoding another picture, video encoder 20 may output another filter bank and include the output filter bank in the filter bank list. In this example, the list of filter sets is common to all pictures and can be updated after the picture is encoded. On the decoder side, video decoder 30 may detect new filter bank signaling after picture decoding or before picture decoding.

[0094] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать (например, кодировать) синтаксические элементы нового набора фильтров на картинку, на слайс и/или на тайл. Декодер 30 видео может быть сконфигурирован, чтобы определять новый набор фильтров на основе сигнализации от кодера 20 видео и добавлять новый набор фильтров в список, включающий в себя множество наборов фильтров.[0094] In accordance with some examples of the present disclosure, the video encoder 20 may be configured to signal (eg, encode) the syntax elements of the new filter set per picture, per slice, and/or per tile. The video decoder 30 may be configured to determine a new filter set based on the signaling from the video encoder 20 and add the new filter set to a list including the plurality of filter sets.

[0095] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять новый набор фильтров в список наборов фильтров. Обновленный список может затем использоваться, чтобы фильтровать блок в следующей картинке или картинках. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы использовать обновленный список (например, содержащий новый набор фильтров, выведенных с использованием текущей картинки/слайса/тайла), чтобы фильтровать блок в текущей картинке/слайсе/тайле. [0095] In one example, video encoder 20 and video decoder 30 may be configured to add a new filter set to the filter set list. The updated list can then be used to filter the block in the next picture or pictures. In another example, video encoder 20 and video decoder 30 may be configured to use an updated list (eg, containing a new set of filters derived using the current picture/slice/tile) to filter a block in the current picture/slice/tile.

[0096] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут обновлять список наборов фильтров (например, список множества наборов адаптивных контурных фильтров) фильтрами, выведенными с использованием предыдущих картинок, предыдущих слайсов и/или предыдущих тайлов. Порядок, в котором кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы адаптивных контурных фильтров в список наборов фильтров, может быть фиксированным, предопределенным или гибким. Список может переупорядочиваться в расчете на картинку на основе информации, относящейся к текущей картинке, и информации, относящейся к картинкам, из которых выведены соответствующие фильтры в списке. Кодер 20 видео может указывать набор фильтров декодеру 30 видео с использованием индекса в списке наборов фильтров. В некоторых примерах, кодер 20 видео может назначать меньшее значение индекса более часто используемым фильтрам или заново добавленным фильтрам.[0096] In accordance with some examples of the present disclosure, video encoder 20 and video decoder 30 may update a list of filter banks (eg, a list of multiple adaptive loop filter banks) with filters derived using previous pictures, previous slices, and/or previous tiles. The order in which video encoder 20 and video decoder 30 can be configured to add adaptive loop filter banks to the filter bank list can be fixed, predefined, or flexible. The list may be reordered per picture based on information related to the current picture and information related to pictures from which the corresponding filters in the list are derived. The video encoder 20 may indicate the filter set to the video decoder 30 using an index in the filter set list. In some examples, video encoder 20 may assign a lower index value to more frequently used filters or newly added filters.

[0097] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять заново выведенный набор фильтров в начало списка. В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять наборы фильтров, выведенные с использованием предыдущих кадров (например, предыдущие адаптивные контурные фильтры), в список после текущих сигнализированных фильтров и перед наборами существующих фильтров в списке (например, наборами предварительно обученных фиксированных фильтров). В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять адаптивные контурные фильтры в каждый соответственный набор адаптивных контурных фильтров, так что текущие адаптивные контурные фильтры добавляются первыми, предыдущие адаптивные контурные фильтры добавляются вторыми, и предварительно обученные адаптивные контурные фильтры добавляются последними.[0097] In one example, video encoder 20 and video decoder 30 may be configured to add the newly derived filter set to the front of the list. In another example, video encoder 20 and video decoder 30 may be configured to add filter banks derived using previous frames (eg, previous adaptive loop filters) to the list after the current signaled filters and before the existing filter banks in the list (eg, sets of pretrained fixed filters). In another example, video encoder 20 and video decoder 30 may be configured to add adaptive loop filters to each respective adaptive loop filter set such that current adaptive loop filters are added first, previous adaptive loop filters are added second, and pretrained adaptive loop filters added last.

[0098] В другом примере раскрытия, упорядочивание наборов фильтров в списке может зависеть от другой связанной с картинкой информации. Например, фильтры, выведенные из картинок на том же самом временном уровне, что и текущая картинка, могут помещаться в списке перед фильтрами, выведенными с использованием картинок на другом временном уровне. В другом примере, индекс набора фильтров в списке может зависеть от того, является ли соответствующая картинка, из которой он выведен, опорной картинкой, используемой для предсказания текущей картинки. Кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, соответствующие более часто используемой опорной картинке, перед фильтрами, выведенными из других опорных картинок. Упорядочивание наборов фильтров таким образом может приводить к синтаксическим элементам (например, индексам в списке наборов фильтров) с меньшим количеством битов для наиболее часто используемых наборов фильтров в списке наборов фильтров. Соответственно, меньше битов может использоваться для сигнализации набора фильтров, используемого для блока, тем самым повышая эффективность кодирования.[0098] In another exemplary disclosure, the ordering of the filter sets in the list may depend on other picture-related information. For example, filters derived from pictures at the same time level as the current picture may be listed before filters derived from pictures at a different time level. In another example, the index of the filter bank in the list may depend on whether the corresponding picture from which it is derived is the reference picture used to predict the current picture. Video encoder 20 and video decoder 30 may be configured to add filters corresponding to the more commonly used reference picture before filters derived from other reference pictures. Ordering filter sets in this manner may result in syntax elements (eg, indexes in the filter set list) with fewer bits for the most frequently used filter sets in the filter set list. Accordingly, fewer bits can be used to signal the filterbank used for the block, thereby improving coding efficiency.

[0099] В другом примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы добавлять фильтры, выведенные с использованием картинок, закодированных с аналогичным параметром квантования (QP), в текущую картинку перед фильтрами, выведенными из предыдущих картинок, закодированных с другим QP. [0099] In another example, video encoder 20 and video decoder 30 may be configured to add filters derived using pictures encoded with a similar quantization parameter (QP) to the current picture before filters derived from previous pictures encoded with a different QP.

[0100] В другом примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы ограничивать максимальное число наборов фильтров в списке наборов фильтров. В одном примере, до тридцати двух (32) наборов фильтров могут сохраняться в списке наборов фильтров. В некоторых примерах, кодер 20 видео может быть сконфигурирован, чтобы сигнализировать максимальное число наборов фильтров в списке в заголовке слайса, наборе параметров последовательности, наборе параметров картинки, в другой информации синтаксиса высокого уровня или где-либо еще.[0100] In another example of the disclosure, video encoder 20 and video decoder 30 may be configured to limit the maximum number of filter sets in the filter set list. In one example, up to thirty-two (32) filter sets may be stored in the filter set list. In some examples, video encoder 20 may be configured to signal the maximum number of filter sets in a list in a slice header, sequence parameter set, picture parameter set, other high level syntax information, or elsewhere.

[0101] В другом примере раскрытия, кодер 20 видео может использовать разное число битов, чтобы сигнализировать разные индексы наборов фильтров. Меньше битов может использоваться, чтобы указывать более низкое положение индекса в списке (поскольку наборы фильтров вверху списка будут выбираться с большей вероятностью) по сравнению с более высоким положением индекса. Вновь, это может приводить к тому, что меньше битов используется, чтобы сигнализировать набор фильтров, более часто используемый для блока, тем самым повышая эффективность кодирования.[0101] In another exemplary disclosure, video encoder 20 may use a different number of bits to signal different filterbank indices. Fewer bits can be used to indicate a lower index position in the list (because the filter sets at the top of the list are more likely to be selected) than the higher index position. Again, this may result in fewer bits being used to signal a filterbank more frequently used for a block, thereby improving coding efficiency.

[0102] В соответствии с некоторыми примерами настоящего раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать информацию ALF для некоторых блоков (например, объединение информации ALF по двум или более блокам). В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы совместно использовать индекс набора фильтров и/или флаг включения/выключения ALF (этот флаг указывает, применяется ли адаптивная контурная фильтрация к блоку) по множеству блоков. Указатель объединения ALF может указывать, какие блоки объединены, и какая информация ALF ассоциирована с указателем объединения ALF. Указатель объединения может представлять собой индекс, флаг или любой другой синтаксический элемент.[0102] In accordance with some examples of the present disclosure, video encoder 20 and video decoder 30 may be configured to share ALF information for some blocks (eg, combining ALF information across two or more blocks). In one example, video encoder 20 and video decoder 30 may be configured to share a filterbank index and/or an ALF on/off flag (this flag indicates whether adaptive loop filtering is applied to a block) across multiple blocks. The ALF merging indicator may indicate which blocks are merged and what ALF information is associated with the ALF merging indicator. The union pointer can be an index, a flag, or any other syntax element.

[0103] В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы объединять информацию ALF блока с блоком выше или с блоком слева. В других примерах, может также использоваться более гибкая информация объединения ALF, которая разрешает объединение одного блока с любым другим блоком (т.е., не обязательно соседним блоком) в картинке. [0103] In one example, video encoder 20 and video decoder 30 may be configured to combine block information ALF with the block above or with the block to the left. In other examples, the more flexible ALF merging information may also be used, which permits the merging of one block with any other block (ie, not necessarily a neighboring block) in the picture.

[0104] В некоторых примерах настоящего раскрытия, декодер 30 видео может быть сконфигурирован, чтобы выводить флаг включения/выключения ALF на основе другой существующей информации блока. В одном примере, декодер 30 видео может выводить флаг включения/выключения ALF на основе существующей информации блока, и например, кодер 20 видео может не сигнализировать флаг включения/выключения ALF. Кодер 20 видео может сигнализировать флаг включения/выключения ALF для группы блоков, обозначенной как блок ALF. Размер блока ALF может быть предопределен или может сигнализироваться кодером 20 видео. В одном примере, блоки, совместно использующие тот же самый флаг включения/выключения ALF, могут представлять блок ALF. В другом примере, блок ALF может быть равен блоку.[0104] In some examples of the present disclosure, video decoder 30 may be configured to output an ALF on/off flag based on other existing block information. In one example, video decoder 30 may output an ALF on/off flag based on existing block information, and for example, video encoder 20 may not signal an ALF on/off flag. Video encoder 20 may signal an ALF on/off flag for a group of blocks designated as an ALF block. The size of the ALF block may be predetermined or may be signaled by the video encoder 20 . In one example, blocks sharing the same ALF on/off flag may represent an ALF block. In another example, an ALF block may be equal to a block.

a. В одном примере, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы выводить флаг включения/выключения ALF на основе числа блоков в блоке ALF, которые совместно используют тот же самый флаг включения/выключения ALF, имеющий ненулевые флаги закодированных блоков (CBF). CBF указывает, включает ли в себя блок что-либо значимое (например, ненулевые коэффициенты преобразования). Значение “1” для CBF указывает, что блок включает в себя ненулевые коэффициенты преобразования. Если число ненулевых CBF меньше определенного порога, то ALF может блокироваться, или фильтр ALF по умолчанию может применяться к этим блокам в блоке ALF. a. In one example, video encoder 20 and video decoder 30 may be configured to output an ALF on/off flag based on the number of blocks in an ALF block that share the same ALF on/off flag having non-zero coded block flags (CBFs) . CBF indicates whether the block includes anything significant (eg, non-zero transform coefficients). A value of "1" for CBF indicates that the block includes non-zero transform coefficients. If the number of non-zero CBFs is less than a certain threshold, then ALF may be blocked, or a default ALF filter may be applied to those blocks in the ALF block.

b. В примере под-пункта ‘a’ выше, может подсчитываться число ненулевых коэффициентов преобразования вместо CBF. Может вводиться порог для подсчитанных коэффициентов, и если число ненулевых коэффициентов преобразования меньше порога, адаптивная контурная фильтрация может блокироваться для блоков, включенных в блок ALF, или фильтр ALF по умолчанию может применяться к этим блокам. b. In the example of sub-clause 'a' above, the number of non-zero transform coefficients may be counted instead of CBF. A threshold may be introduced for the calculated coefficients, and if the number of non-zero transform coefficients is less than the threshold, adaptive loop filtering may be disabled for blocks included in the ALF block, or a default ALF filter may be applied to those blocks.

c. В другом примере, если число блоков в блоке ALF, закодированном с режимом пропуска, больше определенного порога, то адаптивная контурная фильтрация может блокироваться для этих блоков в блоке ALF. Методы под-пункта ‘c’ могут использоваться вместе с методами под-пункта ‘a’ и ‘b’ в любой комбинации.c. In another example, if the number of blocks in an ALF block encoded with skip mode is greater than a certain threshold, then adaptive loop filtering may be disabled for those blocks in the ALF block. The methods of subclause 'c' may be used together with the methods of subclause 'a' and 'b' in any combination.

d. В примере под-пункта ‘c’ выше, режим пропуска используется в качестве примера, и другие режимы кодирования (например, конкретный режим, такой как конкретное направление интра-предсказания, конкретный режим интер-предсказания и т.д.) могут использоваться при выведении флага включения/выключения ALF. d. In the example of sub-clause 'c' above, the skip mode is used as an example, and other coding modes (for example, a specific mode such as a specific intra-prediction direction, a specific inter-prediction mode, etc.) may be used in deriving ALF enable/disable flag.

[0105] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный кодер 20 видео, который может реализовывать методы, описанные в настоящем раскрытии. Кодер 20 видео может выполнять интра- и интер-кодирование блоков видео в слайсах видео. Интра-кодирование опирается на пространственное предсказание для уменьшения или удаления пространственной избыточности в видео в пределах данного кадра или картинки видео. Интер-кодирование опирается на временное предсказание для уменьшения или удаления временной избыточности в видео в пределах смежных кадров или картинок последовательности видео. Интра-режим (I-режим) может относиться к любому из нескольких режимов сжатия на пространственной основе. Интер-режимы, такие как однонаправленное предсказание (P-режим) или би- (двунаправленное) предсказание (B-режим), могут относиться к любому из нескольких режимов сжатия на временной основе. [0105] FIG. 4 is a block diagram illustrating an exemplary video encoder 20 that may implement the techniques described in this disclosure. Video encoder 20 may perform intra- and inter-coding of video blocks in video slices. Intra-coding relies on spatial prediction to reduce or remove spatial redundancy in video within a given frame or video picture. Inter-coding relies on temporal prediction to reduce or remove temporal redundancy in video within adjacent frames or pictures of a video sequence. Intra-mode (I-mode) may refer to any of several spatially based compression modes. Inter-modes, such as unidirectional prediction (P-mode) or bi- (bidirectional) prediction (B-mode), may refer to any of several time-based compression modes.

[0106] В примере на фиг. 4, кодер 20 видео включает в себя память 33 данных видео, модуль 35 разбиения, модуль 41 обработки предсказания, сумматор 50, модуль 52 обработки преобразования, модуль 54 квантования, модуль 56 энтропийного кодирования. Модуль 41 обработки предсказания включает в себя модуль 42 оценки движения (MEU), модуль 44 компенсации движения (MCU) и модуль 46 интра-предсказания. Для восстановления блока видео, кодер 20 видео также включает в себя модуль 58 обратного квантования, модуль 60 обработки обратного преобразования, сумматор 62, модуль 64 фильтрации и буфер 66 декодированной картинки (DPB). [0106] In the example of FIG. 4, the video encoder 20 includes a video data memory 33, a partitioning unit 35, a prediction processing unit 41, an adder 50, a transformation processing unit 52, a quantization unit 54, an entropy encoding unit 56. The prediction processing unit 41 includes a motion estimation unit (MEU) 42 , a motion compensation unit (MCU) 44 , and an intra prediction unit 46 . To reconstruct the video block, the video encoder 20 also includes an inverse quantization module 58, an inverse transform processing module 60, an adder 62, a filter module 64, and a decoded picture buffer (DPB) 66 .

[0107] Как показано на фиг. 4, кодер 20 видео принимает данные видео и сохраняет принятые данные видео в памяти 33 данных видео. Память 33 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 20 видео. Данные видео, хранящиеся в памяти 33 данных видео, можно получить, например, из источника 18 видео. DPB 66 может представлять собой память опорной картинки, которая хранит опорные данные видео для использования при кодировании данных видео кодером 20 видео, например, в режимах интра- или интер-кодирования. Память 33 данных видео и DPB 66 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 33 данных видео и DPB 66 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 33 данных видео может быть на чипе с другими компонентами кодера 20 видео или вне чипа относительно этих компонентов. [0107] As shown in FIG. 4, the video encoder 20 receives video data and stores the received video data in the video data memory 33 . The video data memory 33 may store video data to be encoded by the components of the video encoder 20 . The video data stored in the video data memory 33 can be obtained from the video source 18, for example. The DPB 66 may be a reference picture memory that stores video reference data for use in encoding video data by video encoder 20, such as in intra- or inter-coding modes. The video data memory 33 and the DPB 66 may be formed by any of a variety of memory devices such as dynamic random access memory (DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of memory devices. . The video data memory 33 and the DPB 66 may be provided by the same memory device or by separate memory devices. In various examples, the video data memory 33 may be on-chip with other components of the video encoder 20 or off-chip with respect to these components.

[0108] Модуль 35 разбиения извлекает данные видео из памяти 33 данных видео и разбивает данные видео на блоки видео. Это разбиение может также включать в себя разбиение на слайсы, тайлы или другие большие единицы, а также разбиение блока видео, например, в соответствии со структурой квадродерева LCU и CU. Кодер 20 видео, в общем, иллюстрирует компоненты, которые кодируют блоки видео в пределах слайса видео, подлежащие кодированию. Слайс может делиться на множество блоков видео (и возможно на наборы блоков видео, упоминаемых как тайлы). Модуль 41 обработки предсказания может выбирать один из множества возможных режимов кодирования, например, один из множества режимов интра-кодирования или один из множества режимов интер-кодирования, для текущего блока видео на основе ошибочных результатов (например, скорости кодирования и уровня искажения). Модуль 41 обработки предсказания может обеспечивать результирующий интра- или интер-кодированный блок на сумматор 50, чтобы генерировать остаточные данные блока, и на сумматор 62, чтобы восстанавливать закодированный блок для использования в качестве опорной картинки. [0108] The splitter 35 extracts the video data from the video data memory 33 and splits the video data into video blocks. This partitioning may also include partitioning into slices, tiles, or other large units, as well as partitioning a video block, for example, according to a quadtree structure of LCUs and CUs. The video encoder 20 generally illustrates the components that encode blocks of video within a video slice to be encoded. A slice may be divided into multiple video blocks (and possibly sets of video blocks, referred to as tiles). The prediction processing unit 41 may select one of a plurality of possible coding modes, such as one of a plurality of intra coding modes or one of a plurality of inter coding modes, for the current video block based on erroneous results (eg, coding rate and distortion level). Prediction processing unit 41 may provide the resulting intra- or inter-coded block to adder 50 to generate block residual data and to adder 62 to recover the encoded block for use as a reference picture.

[0109] Модуль 46 интра-предсказания в модуле 41 обработки предсказания может выполнять кодирование с интра-предсказанием текущего блока видео относительно одного или нескольких соседних блоков в том же самом кадре или слайсе, что и текущий блок, подлежащий кодированию, чтобы обеспечить пространственное сжатие. Модуль 42 оценки движения и модуль 44 компенсации движения в модуле 41 обработки предсказания выполняют кодирование с интер-предсказанием текущего блока видео относительно одного или нескольких предсказанных блоков в одной или нескольких опорных картинках, чтобы обеспечить временное сжатие. [0109] The intra-prediction module 46 in the prediction processing module 41 may perform intra-prediction encoding of the current video block with respect to one or more neighboring blocks in the same frame or slice as the current block to be coded to provide spatial compression. The motion estimation unit 42 and the motion compensation unit 44 in the prediction processing unit 41 perform inter prediction encoding of the current video block with respect to one or more predicted blocks in one or more reference pictures to provide temporal compression.

[0110] Модуль 42 оценки движения может быть сконфигурирован, чтобы определять режим интер-предсказания для слайса видео в соответствии с предопределенным шаблоном для последовательности видео. Предопределенный шаблон может назначать слайс видео в последовательности как P-слайса или B-слайса. Модуль 42 оценки движения и модуль 44 компенсации движения могут быть высоко интегрированными, но проиллюстрированы по отдельности в концептуальных целях. Оценка движения, выполняемая модулем 42 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для блоков видео. Вектор движения, например, может указывать перемещение PU блока видео в текущем кадре видео или картинке относительно предсказанного блока в опорной картинке. [0110] The motion estimation unit 42 may be configured to determine the inter-prediction mode for the video slice according to a predetermined pattern for the video sequence. The predefined template may designate a video slice in a sequence as a P-slice or a B-slice. Motion estimation module 42 and motion compensation module 44 may be highly integrated, but are illustrated separately for conceptual purposes. Motion estimation performed by motion estimation module 42 is a process of generating motion vectors that estimate motion for blocks of video. The motion vector, for example, may indicate the movement of the PU of a video block in the current video frame or picture relative to the predicted block in the reference picture.

[0111] Предсказанный блок представляет собой блок, который найден близко совпадающим с PU блока видео, подлежащего кодированию, в терминах пиксельной разности, которая может определяться суммой абсолютной разности (SAD), суммы квадратов разности (SSD) или другими метриками разности. В некоторых примерах, кодер 20 видео может вычислять значения для суб-целочисленных пиксельных положений опорных картинок, хранящихся в DPB 66. Например, кодер 20 видео может интерполировать значения положений в одну четверть пиксела, положений в одну восьмую пиксела или других дробно-пиксельных положений опорной картинки. Поэтому, модуль 42 оценки движения может выполнять поиск движения относительно полно-пиксельных положений и дробно-пиксельных положений и выводить вектор движения с дробно-пиксельной точностью. [0111] A predicted block is a block that is found to closely match the PU of the video block to be encoded in terms of pixel difference, which may be defined by sum absolute difference (SAD), sum of squared difference (SSD), or other difference metrics. In some examples, video encoder 20 may calculate values for sub-integer pixel reference picture positions stored in DPB 66. Pictures. Therefore, the motion estimation unit 42 can search for motion with respect to full-pixel positions and fractional-pixel positions, and output a motion vector with fractional-pixel precision.

[0112] Модуль 42 оценки движения вычисляет вектор движения для PU блока видео в интер-кодированном слайсе путем сравнения положения PU с положением предсказанного блока опорной картинки. Опорная картинка может выбираться из первого списка опорных картинок (Список 0) или второго списка опорных картинок (Список 1), все из которых идентифицируют одну или несколько опорных картинок, сохраненных в DPB 66. Модуль 42 оценки движения отправляет вычисленный вектор движения на модуль 56 энтропийного кодирования и модуль 44 компенсации движения. [0112] Motion estimator 42 calculates a motion vector for a PU of a video block in an inter-coded slice by comparing the position of the PU with the position of the predicted reference picture block. The reference picture may be selected from a first reference picture list (List 0) or a second reference picture list (List 1), all of which identify one or more reference pictures stored in the DPB 66. The motion estimation module 42 sends the computed motion vector to the entropy entropy module 56 encoding and module 44 motion compensation.

[0113] Компенсация движения, выполняемая модулем 44 компенсации движения, может включать в себя извлечение или генерацию предсказанного блока на основе вектора движения, определенного оценкой движения, возможно выполняя интерполяцию с суб-пиксельной точностью. После приема вектора движения для PU текущего блока видео, модуль 44 компенсации движения может определять местоположение предсказанного блока, на который указывает вектор движения, в одном из списков опорных картинок. Кодер 20 видео формирует остаточный блок видео путем вычитания пиксельных значений предсказанного блока из пиксельных значений текущего кодируемого блока видео, формируя пиксельные разностные значения. Пиксельные разностные значения формируют остаточные данные для блока и могут включать в себя разностные компоненты как яркости, так и цветности. Сумматор 50 представляет компонент или компоненты, которые выполняют эту операцию вычитания. Модуль 44 компенсации движения может также генерировать синтаксические элементы, ассоциированные с блоками видео и слайсом видео для использования декодером 30 видео при декодировании блоков видео слайса видео. [0113] The motion compensation performed by the motion compensation module 44 may include extracting or generating a predicted block based on the motion vector determined by the motion estimate, possibly performing sub-pixel precision interpolation. After receiving the motion vector for the PU of the current video block, the motion compensation module 44 may locate the predicted block pointed to by the motion vector in one of the reference picture lists. The video encoder 20 generates a residual video block by subtracting the pixel values of the predicted block from the pixel values of the currently encoded video block, generating pixel delta values. The pixel difference values form residual data for the block and may include both luma and chrominance difference components. The adder 50 represents the component or components that perform this subtraction operation. Motion compensation module 44 may also generate syntax elements associated with video blocks and a video slice for use by video decoder 30 when decoding video blocks of a video slice.

[0114] После того, как модуль 41 обработки предсказания сгенерировал предсказанный блок для текущего блока видео, посредством либо интра-предсказания, либо интер-предсказания, кодер 20 видео образует остаточный блок видео путем вычитания предсказанного блока из текущего блока видео. Остаточные данные видео в остаточном блоке могут быть включены в одну или несколько TU и подаваться на модуль 52 обработки преобразования. Модуль 52 обработки преобразования преобразует остаточные данные видео в остаточные коэффициенты преобразования с использованием преобразования, такого как дискретное косинусное преобразование (DCT) или концептуально аналогичное преобразование. Модуль 52 обработки преобразования может преобразовывать остаточные данные видео из пиксельной области в область преобразований, такую как частотная область. [0114] After the prediction processing unit 41 has generated a predicted block for the current video block by either intra-prediction or inter-prediction, video encoder 20 generates a residual video block by subtracting the predicted block from the current video block. The residual video data in the residual block may be included in one or more TUs and supplied to the conversion processing unit 52 . The transform processing unit 52 converts the residual video data into residual transform coefficients using a transform such as a discrete cosine transform (DCT) or a conceptually similar transform. The conversion processing unit 52 may convert the residual video data from the pixel domain to a transformation domain such as a frequency domain.

[0115] Модуль 52 обработки преобразования может отправлять результирующие коэффициенты преобразования на модуль 54 квантования. Модуль 54 квантования квантует коэффициенты преобразования, чтобы дополнительно уменьшить битовую скорость. Процесс квантования может уменьшать битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Степень квантования может модифицироваться путем регулирования параметра квантования. В некоторых примерах, модуль 54 квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. В другом примере, модуль 56 энтропийного кодирования может выполнять сканирование. [0115] Transform processing module 52 may send the resulting transform coefficients to quantization module 54 . Quantization module 54 quantizes the transform coefficients to further reduce the bit rate. The quantization process may reduce the bit depth associated with some or all of the coefficients. The degree of quantization can be modified by adjusting the quantization parameter. In some examples, quantizer 54 may then perform a matrix scan including the quantized transform coefficients. In another example, entropy encoding module 56 may perform scanning.

[0116] Вслед за квантованием, модуль 56 энтропийного кодирования энтропийно кодирует квантованные коэффициенты преобразования. Например, модуль 56 энтропийного кодирования может выполнять контекстно-адаптивное кодирование переменной длины (CAVLC), контекстно-адаптивное двоичное арифметическое кодирование (CABAC), контекстно-адаптивное двоичное арифметическое кодирование на основе синтаксиса (SBAC), энтропийное кодирование с разбиением интервалов вероятности (PIPE) или другую методологию или метод энтропийного кодирования. Вслед за энтропийным кодированием модулем 56 энтропийного кодирования, закодированный битовый поток может передаваться на декодер 30 видео или архивироваться для дальнейшей передачи или извлечения декодером 30 видео. Модуль 56 энтропийного кодирования может также энтропийно кодировать векторы движения и другие синтаксические элементы для текущего кодируемого слайса видео, обеспеченного модулем 51 обработки предсказания. [0116] Following quantization, entropy encoding module 56 entropy encodes the quantized transform coefficients. For example, entropy encoding unit 56 can perform context adaptive variable length coding (CAVLC), context adaptive binary arithmetic coding (CABAC), syntax-based context adaptive binary arithmetic coding (SBAC), probability interval partitioned entropy coding (PIPE) or another entropy encoding methodology or method. Following entropy encoding by entropy encoding module 56, the encoded bitstream may be transmitted to video decoder 30 or archived for onward transmission or retrieval by video decoder 30. Entropy encoding module 56 may also entropy encode motion vectors and other syntax elements for the current encoded video slice provided by prediction processing module 51 .

[0117] Модуль 58 обратного квантования и модуль 60 обработки обратного преобразования применяют обратное квантование и обратное преобразование, соответственно, чтобы восстановить остаточный блок в пиксельной области для дальнейшего использования в качестве опорного блока опорной картинки. Модуль 44 компенсации движения может вычислять опорный блок путем суммирования остаточного блока с предсказанным блоком одной из опорных картинок в одном из списков опорных картинок. Модуль 44 компенсации движения может также применять один или несколько фильтров интерполяции к восстановленному остаточному блоку, чтобы вычислить суб-целочисленные пиксельные значения для использования в оценке движения. Сумматор 62 суммирует восстановленный остаточный блок с блоком предсказания скомпенсированного движения, сформированным модулем 54 компенсации движения, чтобы сформировать восстановленный блок. [0117] The inverse quantization unit 58 and the inverse transform processing unit 60 apply inverse quantization and inverse transform, respectively, to reconstruct a residual block in the pixel region for further use as a reference block of a reference picture. The motion compensation module 44 may calculate the reference block by summing the residual block with the predicted block of one of the reference pictures in one of the reference picture lists. Motion compensation module 44 may also apply one or more interpolation filters to the reconstructed residual block to calculate sub-integer pixel values for use in motion estimation. The adder 62 adds the reconstructed residual block with the motion compensated prediction block generated by the motion compensation unit 54 to form the reconstructed block.

[0118] Модуль 64 фильтрации фильтрует восстановленный блок (например, выход сумматора 62) и сохраняет отфильтрованный восстановленный блок в DPB 66 для использований в качестве опорного блока. Опорный блок может использоваться модулем 52 оценки движения и модулем 54 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 64 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалять артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к восстановленным пиксельным значениям, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).[0118] Filtering module 64 filters the reconstructed block (eg, the output of adder 62) and stores the filtered reconstructed block in DPB 66 for use as a reference block. The reference block may be used by motion estimation module 52 and motion compensation module 54 as a reference block to inter-predict a block in a subsequent video frame or picture. Filter module 64 may perform any type of filtering such as deblocking filtering, SAO filtering, SAO peak filtering, ALF and/or GALF, and/or other types of loop filters. The deblocking filter may, for example, apply deblocking filtering to filter block boundaries to remove deblocking artifacts from the reconstructed video. The peaking SAO filter can apply offsets to the reconstructed pixel values to improve the overall encoding quality. Additional loop filters (in-loop or post-loop) can also be used.

[0119] К тому же, модуль 64 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 64 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0119] In addition, filter module 64 may be configured to perform any of the techniques in the present disclosure relating to adaptive loop filtering. In particular, as described above, filtering module 64 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set includes the previous adaptive loop filter used in one or more previous pictures, and perform adaptive loop filtering of blocks of the current picture in accordance with the respective sets of adaptive loop filters.

[0120] Фиг. 5 представляет собой блок-схему, иллюстрирующую примерный декодер 30 видео, который может реализовывать методы, описанные в настоящем раскрытии. Декодер 30 видео согласно фиг. 5 может, например, быть сконфигурирован, чтобы принимать сигнализацию, описанную выше в отношении кодера 20 видео на фиг. 4. В примере на фиг. 5, декодер 30 видео включает в себя память 78 данных видео, модуль 80 энтропийного декодирования, модуль 81 обработки предсказания, модуль 86 обратного квантования, модуль 88 обработки обратного преобразования, сумматор 90, DPB 94 и модуль 92 фильтрации. Модуль 81 обработки предсказания включает в себя модуль 82 компенсации движения и модуль 84 интра-предсказания. Декодер 30 видео может, в некоторых примерах, выполнять проход декодирования, в общем противоположный проходу кодирования, описанному в отношении кодера 20 видео на фиг. 4.[0120] FIG. 5 is a block diagram illustrating an exemplary video decoder 30 that may implement the techniques described in this disclosure. The video decoder 30 of FIG. 5 may, for example, be configured to receive the signaling described above with respect to the video encoder 20 of FIG. 4. In the example of FIG. 5, the video decoder 30 includes a video data memory 78, an entropy decoding unit 80, a prediction processing unit 81, an inverse quantization unit 86, an inverse transform processing unit 88, an adder 90, a DPB 94, and a filter unit 92. The prediction processing unit 81 includes a motion compensation unit 82 and an intra prediction unit 84 . Video decoder 30 may, in some examples, perform a decoding pass generally opposite to the encoding pass described with respect to video encoder 20 in FIG. four.

[0121] Во время процесса декодирования, декодер 30 видео принимает закодированный битовый поток видео, который представляет блоки видео закодированного слайса видео, и ассоциированные синтаксические элементы от кодера 20 видео. Декодер 30 видео сохраняет принятый закодированный битовый поток видео в памяти 78 данных видео. Память 78 данных видео может хранить данные видео, такие как закодированный битовый поток видео, подлежащий декодированию компонентами декодера 30 видео. Данные видео, хранящиеся в памяти 78 данных видео, можно получить, например, по линии 16 связи, от устройства 26 хранения или от локального источника видео, такого как камера, или путем осуществления доступа к физическим носителям данных. Память 78 данных видео может образовывать буфер закодированной картинки (CPB), который хранит закодированные данные видео из закодированного битового потока видео. DPB 94 может представлять собой память опорной картинки, которая хранит опорные данные видео для использования при декодировании данных видео декодером 30 видео, например, в режимах интра- или интер-кодирования. Память 78 данных видео и DPB 94 могут быть образованы любым из множества устройств памяти, таких как DRAM, SDRAM, MRAM, RRAM или другие типы устройств памяти. Память 78 данных видео и DPB 94 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 78 данных видео может находиться на чипе с другими компонентами декодера 30 видео или вне чипа относительно этих компонентов. [0121] During the decoding process, video decoder 30 receives an encoded video bitstream that represents video blocks of an encoded video slice, and associated syntax elements from video encoder 20. The video decoder 30 stores the received encoded video bitstream in the video data memory 78 . The video data memory 78 may store video data, such as an encoded video bitstream to be decoded by the components of the video decoder 30 . The video data stored in the video data memory 78 may be obtained, for example, over the link 16, from the storage device 26, or from a local video source such as a camera, or by accessing physical storage media. The video data memory 78 may form a coded picture buffer (CPB) that stores encoded video data from the encoded video bitstream. The DPB 94 may be a reference picture memory that stores video reference data for use in decoding video data by video decoder 30, such as in intra- or inter-coding modes. Video data memory 78 and DPB 94 may be formed by any of a variety of memory devices such as DRAM, SDRAM, MRAM, RRAM, or other types of memory devices. The video data memory 78 and the DPB 94 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 78 may be on-chip with other components of video decoder 30, or off-chip relative to those components.

[0122] Модуль 80 энтропийного декодирования декодера 30 видео энтропийно декодирует данные видео, хранящиеся в памяти 78 данных видео, чтобы генерировать квантованные коэффициенты, векторы движения и другие синтаксические элементы. Модуль 80 энтропийного декодирования направляет векторы движения и другие синтаксические элементы на модуль 81 обработки предсказания. Декодер 30 видео может принимать синтаксические элементы на уровне слайса видео и/или уровне блока видео. [0122] Entropy decoding unit 80 of video decoder 30 entropy decodes video data stored in video data memory 78 to generate quantized coefficients, motion vectors, and other syntax elements. Entropy decoding module 80 sends motion vectors and other syntax elements to prediction processing module 81 . Video decoder 30 may receive syntax elements at a video slice level and/or a video block level.

[0123] Когда слайс видео закодирован как интра-закодированный (I) слайс, модуль 84 интра-предсказания модуля 81 обработки предсказания может генерировать данные предсказания для блока видео текущего слайса видео на основе сигнализированного режима интра-предсказания и данных из ранее декодированных блоков текущего кадра или картинки. Когда кадр видео закодирован как интер-кодированный слайс (например, B-слайс или P-слайс), модуль 82 компенсации движения модуля 81 обработки предсказания формирует предсказанные блоки для блока видео текущего слайса видео на основе векторов движения и других синтаксических элементов, принятых от модуля 80 энтропийного декодирования. Предсказанные блоки могут формироваться из одной из опорных картинок в одном из списков опорных картинок. Декодер 30 видео может создавать списки опорных кадров, Список 0 и Список 1, с использованием методов создания по умолчанию на основе опорных картинок, хранящихся в DPB 94. [0123] When a video slice is encoded as an intra-coded (I) slice, the intra-prediction module 84 of the prediction processing module 81 may generate prediction data for a video block of the current video slice based on the signaled intra-prediction mode and data from previously decoded blocks of the current frame or pictures. When a video frame is encoded as an inter-coded slice (eg, B-slice or P-slice), the motion compensation module 82 of the prediction processing module 81 generates predicted blocks for the video block of the current video slice based on the motion vectors and other syntax elements received from the module. 80 entropy decoding. The predicted blocks may be generated from one of the reference pictures in one of the reference picture lists. The video decoder 30 may create lists of key frames, List 0 and List 1, using default creation methods based on the reference pictures stored in the DPB 94.

[0124] Модуль 82 компенсации движения определяет информацию предсказания для блока видео текущего слайса видео путем синтаксического анализа векторов движения и других синтаксических элементов и использует информацию предсказания, чтобы формировать предсказанные блоки для текущего декодируемого блока видео. Например, модуль 82 компенсации движения использует некоторые из принятых синтаксических элементов, чтобы определить режим предсказания (например, интра- или интер-предсказание), использованный для кодирования блоков видео слайса видео, тип слайса интер-предсказания (например, B-слайс или P-слайс), информацию создания для одного или нескольких списков опорных картинок для слайса, векторы движения для каждого интер-закодированного блока видео слайса, статус интер-предсказания для каждого интер-закодированного блока видео слайса и другую информацию для декодирования блоков видео в текущем слайсе видео. [0124] Motion compensation unit 82 determines prediction information for the video block of the current video slice by parsing motion vectors and other syntax elements, and uses the prediction information to generate predicted blocks for the current video block being decoded. For example, motion compensation module 82 uses some of the received syntax elements to determine the prediction mode (eg, intra- or inter-prediction) used to encode the video blocks of the video slice, the type of inter-prediction slice (eg, B-slice or P- slice), creation information for one or more reference picture lists for the slice, motion vectors for each inter-coded video slice block, inter-prediction status for each inter-coded video slice block, and other information for decoding video blocks in the current video slice.

[0125] Модуль 82 компенсации движения может также выполнять интерполяцию на основе фильтров интерполяции. Модуль 82 компенсации движения может использовать фильтры интерполяции, как использовано кодером 20 видео во время кодирования блоков видео, чтобы вычислить интерполированные значения для суб-целочисленных пикселов опорных блоков. В этом случае, модуль 82 компенсации движения может определять фильтры интерполяции, использованные кодером 20 видео, из принятых синтаксических элементов и использовать фильтры интерполяции, чтобы формировать предсказанные блоки. [0125] Motion compensation module 82 may also perform interpolation based on interpolation filters. Motion compensation module 82 may use interpolation filters, as used by video encoder 20 during video block encoding, to calculate interpolated values for sub-integer pixels of the reference blocks. In this case, the motion compensation module 82 may determine the interpolation filters used by the video encoder 20 from the received syntax elements and use the interpolation filters to generate predicted blocks.

[0126] Модуль 86 обратного квантования обратно квантует, т.е. деквантует, квантованные коэффициенты преобразования, обеспеченные в битовом потоке и декодированные модулем 80 энтропийного декодирования. Процесс обратного квантования может включать в себя использование параметра квантования, вычисленного кодером 20 видео для каждого блока видео в слайсе видео, чтобы определить степень квантования и, подобным же образом, степень обратного квантования, которая должна применяться. Модуль 88 обработки обратного преобразования применяет обратное преобразование, например, обратное DCT, обратное целое преобразование или концептуально аналогичный процесс обратного преобразования к коэффициентам преобразования, чтобы сформировать остаточные блоки в пиксельной области. [0126] The inverse quantizer 86 inversely quantizes, i. dequantizes the quantized transform coefficients provided in the bitstream and decoded by entropy decoding module 80 . The inverse quantization process may include using a quantization parameter calculated by video encoder 20 for each video block in a video slice to determine the amount of quantization, and likewise, the amount of inverse quantization to be applied. The inverse transform processing unit 88 applies an inverse transform, such as an inverse DCT, an inverse integer transform, or a conceptually similar inverse transform process, to the transform coefficients to form residual blocks in the pixel region.

[0127] После того, как модуль 81 обработки предсказания сгенерировал предсказанный блок для текущего блока видео с использованием, например, интра- или интер-предсказания, декодер 30 видео формирует восстановленный блок видео путем суммирования остаточных блоков из модуля 88 обработки обратного преобразования с соответствующими предсказанными блоками, сгенерированными модулем 82 компенсации движения. Сумматор 90 представляет компонент или компоненты, которые выполняют эту операцию суммирования. [0127] After the prediction processing unit 81 has generated a predicted block for the current video block using, for example, intra or inter prediction, the video decoder 30 generates a reconstructed video block by summing the residual blocks from the inverse transform processing unit 88 with the corresponding predicted blocks generated by the motion compensation module 82 . The adder 90 represents the component or components that perform this summing operation.

[0128] Модуль 92 фильтрации фильтрует восстановленный блок (например, выход сумматора 90) и сохраняет отфильтрованный восстановленный блок в DPB 94 для использований в качестве опорного блока. Опорный блок может использоваться модулем 82 компенсации движения в качестве опорного блока, чтобы интер-предсказывать блок в последующем кадре видео или картинке. Модуль 92 фильтрации может выполнять любой тип фильтрации, такой как фильтрация устранения блочности, фильтрация SAO, пиковая фильтрация SAO, ALF и/или GALF и/или другие типы контурных фильтров. Фильтр устранения блочности может, например, применять фильтрацию устранения блочности, чтобы фильтровать границы блока, чтобы удалить артефакты блочности из восстановленного видео. Пиковый фильтр SAO может применять смещения к значениям восстановленных пикселов, чтобы улучшить общее качество кодирования. Могут также использоваться дополнительные контурные фильтры (внутриконтурные или пост-контурные).[0128] The filter module 92 filters the reconstructed block (eg, the output of the adder 90) and stores the filtered reconstructed block in the DPB 94 for use as a reference block. The reference block may be used by motion compensation module 82 as a reference block to inter-predict a block in a subsequent video frame or picture. Filter module 92 can perform any type of filtering such as deblocking filtering, SAO filtering, SAO peak filtering, ALF and/or GALF, and/or other types of loop filters. The deblocking filter may, for example, apply deblocking filtering to filter block boundaries to remove deblocking artifacts from the reconstructed video. The SAO peak filter can apply offsets to the reconstructed pixel values to improve the overall encoding quality. Additional loop filters (in-loop or post-loop) can also be used.

[0129] К тому же, модуль 92 фильтрации может быть сконфигурирован, чтобы выполнять любой из методов в настоящем раскрытии, относящихся к адаптивной контурной фильтрации. В частности, как описано выше, модуль 92 фильтрации может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0129] In addition, filter module 92 may be configured to perform any of the techniques in the present disclosure relating to adaptive loop filtering. In particular, as described above, the filter module 92 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each respective adaptive loop filter set includes the previous adaptive loop filter used in one or more previous pictures, and perform adaptive loop filtering of blocks of the current picture in accordance with the corresponding sets of adaptive loop filters.

[0130] Фиг. 6 показывает примерную реализацию модуля 92 фильтрации. Модуль 64 фильтрации может быть реализован аналогичным образом. Модули 64 и 92 фильтрации могут выполнять методы настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 20 видео или декодера 30 видео. В примере на фиг. 6, модуль 92 фильтрации включает в себя фильтр 102 устранения блочности, фильтр 104 SAO и фильтр 106 ALF/GALF. Фильтр 104 SAO может, например, быть сконфигурирован, чтобы определять значения смещения для выборок блока, как описано в настоящем раскрытии. Фильтр 106 ALF/GALF может быть сконфигурирован, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, использованный в одной или нескольких предыдущих картинках, и осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров.[0130] FIG. 6 shows an exemplary implementation of the filter module 92. The filter module 64 may be implemented in a similar manner. Filter modules 64 and 92 may perform the methods of the present disclosure, possibly in conjunction with other components of video encoder 20 or video decoder 30. In the example in FIG. 6, the filter module 92 includes a deblocking filter 102, an SAO filter 104, and an ALF/GALF filter 106. SAO filter 104 may, for example, be configured to determine offset values for block samples, as described in this disclosure. The ALF/GALF filter 106 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, with each respective adaptive loop filter set including a previous adaptive loop filter set. contour filter used in one or several previous pictures, and perform adaptive contour filtering of blocks of the current picture in accordance with the corresponding sets of adaptive contour filters.

[0131] Модуль 92 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 6, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться для сглаживания пиксельных переходов или улучшения иным образом качества видео. Декодированные блоки видео в данном кадре или картинке затем сохраняются в DPB 94, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 94 может быть частью или быть отдельным от дополнительной памяти, которая хранит декодированное видео для дальнейшего представления на устройстве отображения, таком как устройство 32 отображения на фиг. 1. [0131] Filtering module 92 may include fewer filters and/or may include additional filters. Additionally, the specific filters shown in FIG. 6 may be implemented in a different order. Other loop filters (either in the encoding loop or after the encoding loop) may also be used to smooth out pixel transitions or otherwise improve video quality. The decoded video blocks in a given frame or picture are then stored in the DPB 94, which stores the reference pictures used for subsequent motion compensation. The DPB 94 may be part of, or separate from, an additional memory that stores decoded video for further presentation on a display device, such as display device 32 in FIG. one.

[0132] Фиг. 7 представляет собой блок-схему последовательности операций, иллюстрирующую примерный способ раскрытия. Методы согласно фиг. 7 могут выполняться одной или несколькими структурными модулями кодера 20 видео и декодера 30 видео, включая модуль 64 фильтрации и модуль 92 фильтрации. Как рассмотрено выше, термин “кодирование”, в общем, относится как к кодированию, так и к декодированию. Подобным же образом, термин “кодировать”, в общем, включает в себя как кодировать, так и декодировать. [0132] FIG. 7 is a flowchart illustrating an exemplary deployment method. The methods according to FIG. 7 may be performed by one or more of the video encoder 20 and video decoder 30 building blocks, including a filter module 64 and a filter module 92. As discussed above, the term "coding" generally refers to both encoding and decoding. Similarly, the term "encode" generally includes both encode and decode.

[0133] В одном примере раскрытия, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы определять соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки для блоков, в которых используется адаптивная контурная фильтрация, причем каждый соответственный набор адаптивных контурных фильтров включает в себя предыдущий адаптивный контурный фильтр, используемый в одной или нескольких предыдущих картинках (700). В одном примере, чтобы определить соответственные наборы адаптивных контурных фильтров, кодер 20 видео и декодер 30 видео дополнительно сконфигурированы, чтобы кодировать соответственный флаг на блок, указывающий, используется ли адаптивная контурная фильтрация для соответственного блока, и кодировать, на основе соответственного флага на блок, соответственный синтаксический элемент, указывающий соответственный набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, на блок текущей картинки. В одном примере, соответственный синтаксический элемент представляет собой индекс для списка, включающего в себя множество наборов адаптивных контурных фильтров. Кодер 20 видео и декодер 30 видео могут быть дополнительно сконфигурированы, чтобы осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с соответственными наборами адаптивных контурных фильтров (702).[0133] In one example disclosure, video encoder 20 and video decoder 30 may be configured to determine a respective adaptive loop filter set, from a plurality of adaptive loop filter sets, per current picture block for blocks that use adaptive loop filtering, each the respective adaptive loop filter set includes the previous adaptive loop filter used in one or more previous pictures (700). In one example, to determine respective adaptive loop filter sets, video encoder 20 and video decoder 30 are further configured to encode a respective flag per block indicating whether adaptive loop filtering is used for the respective block, and encode, based on the respective flag per block, a respective syntax element indicating a respective adaptive loop filter set, of the plurality of adaptive loop filter sets, to the current picture block. In one example, the corresponding syntax element is an index to a list including a plurality of adaptive loop filter sets. Video encoder 20 and video decoder 30 may be further configured to perform adaptive loop filtering of blocks of the current picture in accordance with respective adaptive loop filter banks (702).

[0134] Фиг. 8 представляет собой блок-схему последовательности операций, иллюстрирующую другой примерный способ раскрытия. Фиг. 8 показывает пример методов согласно фиг. 7 более подробно. Например, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать блок данных видео в текущей картинке, чтобы создать восстановленный блок данных видео (800). То есть, кодер 20 видео и декодер 30 видео могут быть сконфигурированы, чтобы кодировать первый блок данных видео в текущей картинке, чтобы создать первый восстановленный блок данных видео.[0134] FIG. 8 is a flowchart illustrating another exemplary disclosure method. Fig. 8 shows an example of the methods according to FIG. 7 in more detail. For example, video encoder 20 and video decoder 30 may be configured to encode a video data block in the current picture to create a reconstructed video data block (800). That is, video encoder 20 and video decoder 30 may be configured to encode the first video data block in the current picture to create the first reconstructed video data block.

[0135] Кодер 20 видео и декодер 30 видео могут тогда быть сконфигурированы, чтобы определять, является ли флаг включения/выключения ALF блочного уровня включенным (802). Если нет, кодер 20 видео и декодер 30 видео не применяют ALF и вместо этого приступают к кодированию следующего блока данных видео (810). Если да, кодер 20 видео и декодер 30 видео кодируют, для блока, синтаксический элемент, указывающий набор адаптивных контурных фильтров (804). Например, кодер 20 видео и декодер 30 видео кодируют, для первого блока данных видео, первый синтаксический элемент, указывающий первый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров.[0135] Video encoder 20 and video decoder 30 can then be configured to determine if the block level ALF on/off flag is on (802). If not, video encoder 20 and video decoder 30 do not apply ALF and instead proceed to encode the next video data block (810). If yes, video encoder 20 and video decoder 30 encode, per block, a syntax element indicating an adaptive loop filter set (804). For example, video encoder 20 and video decoder 30 encode, for a first video data block, a first syntax element indicating a first adaptive loop filter set of a plurality of adaptive loop filter banks.

[0136] Кодер 20 видео и декодер 30 видео могут затем определять адаптивный контурный фильтр из набора адаптивных контурных фильтров для текущего кодируемого блока (806). Например, кодер 20 видео и декодер 30 видео могут определять первый адаптивный контурный фильтр из первого набора адаптивных контурных фильтров для первого восстановленного блока данных видео. Кодер 20 видео и декодер 30 видео могут затем применять адаптивный контурный фильтр к восстановленному блоку (808). Кодер 20 видео и декодер 30 видео могут затем приступать к кодированию следующего блока данных видео (810). Например, следующий блок данных видео может представлять собой второй блок данных видео. Процесс согласно фиг. 8 затем повторяется. Следует отметить, что при выполнении методов настоящего раскрытия, при определении набора адаптивных контурных фильтров для следующего блока данных видео (например, второго блока данных видео), набор адаптивных контурных фильтров для второго блока данных видео может отличаться от набора адаптивных контурных фильтров, используемого для других блоков данных видео.[0136] Video encoder 20 and video decoder 30 may then determine an adaptive loop filter from the set of adaptive loop filters for the current block being coded (806). For example, video encoder 20 and video decoder 30 may determine a first adaptive loop filter from a first set of adaptive loop filters for the first reconstructed video data block. Video encoder 20 and video decoder 30 may then apply an adaptive loop filter to the reconstructed block (808). Video encoder 20 and video decoder 30 may then proceed to encode the next block of video data (810). For example, the next video data block may be a second video data block. The process according to Fig. 8 is then repeated. It should be noted that when performing the methods of the present disclosure, when determining the adaptive loop filter set for the next video data unit (e.g., the second video data unit), the adaptive loop filter set for the second video data unit may be different from the adaptive loop filter set used for the others. video data blocks.

[0137] В одном или нескольких примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, прошивке или любой их комбинации. При реализации в программном обеспечении, функции могут храниться или передаваться, как одна или несколько инструкций или код, на считываемом компьютером носителе и исполняться аппаратным модулем обработки. Считываемые компьютером носители могут включать в себя считываемые компьютером носители, которые соответствуют материальным носителям, таким как носители данных или коммуникационные среды, включающие в себя любой носитель, который облегчает перенос компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, считываемые компьютером носители, в общем, могут соответствовать (1) материальным считываемым компьютером носителям хранения, которые являются долговременными, или (2) коммуникационным средам, таким как сигнал или несущая волна. Носитель данных может представлять собой любой доступный носитель, доступ к которому может осуществляться одним или несколькими компьютерами или одним или несколькими процессорами, чтобы извлекать инструкции, код и/или структуры данных для реализации методов, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя считываемый компьютером носитель.[0137] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted as one or more instructions or code on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable media that corresponds to tangible media such as storage media or communication media, including any media that facilitates transfer of a computer program from one place to another, such as in accordance with a communication protocol. Thus, computer-readable media can generally correspond to (1) tangible computer-readable storage media that is durable, or (2) communication media such as a signal or carrier wave. A storage medium may be any available medium 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 methods described in this disclosure. The computer program product may include a computer-readable medium.

[0138] В качестве примера, но не для ограничения, такие считываемые компьютером носители могут представлять собой любой из RAM, ROM, EEPROM, CD-ROM или другого хранилища на оптическом диске, хранилища на магнитном диске или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может использоваться для хранения желательного программного кода в форме инструкций или структур данных и к которому может обращаться компьютер. Также, любое соединение может надлежащим образом определяться как считываемый компьютером носитель. Например, если инструкции передаются от веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, оптоволоконного кабеля, скрученной пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасная, радио- и микроволновая, то коаксиальный кабель, оптоволоконный кабель, скрученная пара, DSL или беспроводные технологии, такие как инфракрасная, радио- и микроволновая, включены в определение носителя. Следует понимать, однако, что считываемые компьютером носители и носители данных не включают в себя соединения, несущие волны, сигналы или другие изменяемые во времени носители, но вместо этого направлены на долговременные, материальные носители. Магнитный диск (disk) и оптический диск (disc), как использовано здесь, включают в себя компакт-диск (CD), лазерный диск, оптический диск, цифровой универсальный диск (DVD), флоппи-диск и Blu-ray диск, где магнитные диски (disks) обычно воспроизводят данные магнитным образом, в то время как оптические диски (discs) воспроизводят данные оптически при помощи лазеров. Комбинации изложенного выше должны также быть включены в объем считываемых компьютером носителей.[0138] By way of example, and not limitation, such computer-readable media can be any of RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, flash memory or any other medium that can be used to store the desired program code in the form of instructions or data structures and that can be accessed by a computer. Also, any connection may properly be defined 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, then the coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave are included in the media definition. It should be understood, however, that computer-readable media and storage media do not include connections, carrier waves, signals, or other time-varying media, but are instead directed towards durable, tangible media. The magnetic disc (disk) and the optical disc (disc) as used herein include a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disc, and a Blu-ray disc, where the magnetic discs usually reproduce data magnetically, while optical discs (discs) reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer-readable media.

[0139] Инструкции могут исполняться одним или несколькими процессорами, такими как один или несколько цифровых сигнальных процессоров (DSP), универсальных микропроцессоров, специализированными интегральными схемами (ASIC), программируемыми вентильными матрицами (FPGA) или другой эквивалентной интегральной или дискретной логической схемой. Соответственно, термин “процессор”, как использовано здесь, может относиться к любой из вышеописанных структур или любой другой структуре, подходящей для реализации методов, описанных здесь. К тому же, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или модулях программного обеспечения, сконфигурированных для кодирования и декодирования, или встроена в комбинированный кодек. Также, методы могут быть полностью реализованы в одной или нескольких схемах или логических элементах. [0139] 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 circuit. Accordingly, the term "processor", as used here, may refer to any of the structures described above, or any other structure suitable for implementing the methods described here. Also, in some aspects, the functionality described herein may be provided in dedicated hardware and/or software modules configured for encoding and decoding, or embedded in a combined codec. Also, the methods may be fully implemented in one or more circuits or logic elements.

[0140] Методы настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводной телефон, интегральную схему (IC) или набор IC (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии, чтобы подчеркнуть функциональные аспекты устройств, сконфигурированных, чтобы выполнять раскрытые методы, но не обязательно требуют реализации разными аппаратными модулями. Напротив, как описано выше, различные модули могут комбинироваться в аппаратном модуле кодека или обеспечиваться совокупностью взаимодействующих аппаратных модулей, включая один или несколько процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или прошивкой.[0140] The techniques of the present disclosure may be implemented in a wide variety of devices or devices, including a wireless telephone, an integrated circuit (IC), or a set of ICs (eg, a chipset). Various components, modules, or blocks are described in this disclosure to emphasize the functional aspects of devices configured to perform the disclosed methods, but do not necessarily require implementation by different hardware modules. Rather, as described above, various modules may be combined in a codec hardware module, or provided by a combination of cooperating hardware modules, including one or more processors, as described above, in conjunction with suitable software and/or firmware.

[0141] Были описаны различные примеры. Эти и другие примеры соответствуют объему следующей формулы изобретения.[0141] Various examples have been described. These and other examples fall within the scope of the following claims.

Claims (92)

1. Способ адаптивной контурной фильтрации данных видео, причем способ содержит:1. A method for adaptive contour filtering of video data, the method comprising: определение, на уровне слайса, множества наборов адаптивных контурных фильтров, применимых к слайсу; determining, at the slice level, a plurality of adaptive loop filter sets applicable to the slice; определение, на уровне блока, набора адаптивных контурных фильтров из упомянутого множества наборов адаптивных контурных фильтров для блока текущей картинки, при этом блок текущей картинки представляет собой единицу дерева кодирования (CTU) упомянутого слайса, и при этом набор адаптивных контурных фильтров включает в себя множество адаптивных контурных фильтров, включающих в себя один или более предыдущих адаптивных контурных фильтров и дополнительно включающих в себя фиксированный адаптивный контурный фильтр; иdetermining, at the block level, an adaptive loop filter set from said set of adaptive loop filter banks for the current picture block, wherein the current picture block is a coding tree unit (CTU) of said slice, and wherein the adaptive loop filter set includes a set of adaptive loop filters including one or more of the previous adaptive loop filters and further including a fixed adaptive loop filter; and адаптивную контурную фильтрацию блока текущей картинки в соответствии с набором адаптивных контурных фильтров.adaptive contour filtering of the block of the current picture in accordance with the set of adaptive contour filters. 2. Способ по п. 1, причем определение набора адаптивных контурных фильтров содержит:2. The method according to claim 1, wherein the definition of a set of adaptive loop filters comprises: кодирование синтаксического элемента, указывающего набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, для блока текущей картинки.encoding a syntax element indicating an adaptive loop filter set from a plurality of adaptive loop filter sets for the current picture block. 3. Способ по п. 2, причем синтаксический элемент является индексом для списка, включающего в себя множество наборов адаптивных контурных фильтров.3. The method of claim 2, wherein the syntax element is an index to a list including a plurality of adaptive loop filter sets. 4. Способ по п. 1, дополнительно содержащий:4. The method according to p. 1, further comprising: кодирование соответственного флага на группу блоков текущей картинки, указывающего, используется ли адаптивная контурная фильтрация для каждого блока в соответственной группе блоков текущей картинки.encoding a corresponding flag per block group of the current picture indicating whether adaptive loop filtering is used for each block in the corresponding block group of the current picture. 5. Способ по п. 1, дополнительно содержащий:5. The method according to claim 1, further comprising: кодирование соответственного флага на группу блоков текущей картинки, указывающего, используется ли адаптивная контурная фильтрация для каждого блока в соответственной группе блоков текущей картинки.encoding a corresponding flag per block group of the current picture indicating whether adaptive loop filtering is used for each block in the corresponding block group of the current picture. 6. Способ по п. 1, дополнительно содержащий:6. The method according to p. 1, further comprising: определение, используется ли адаптивная контурная фильтрация для каждого блока текущей картинки или для каждого блока в группе блоков текущей картинки на основе одного или нескольких из:determining whether adaptive contour filtering is used for each block in the current picture or for each block in a group of blocks in the current picture based on one or more of: числа блоков в группе блоков, имеющих ненулевые флаги закодированных блоков (CBF),the number of blocks in the block group having non-zero coded block flags (CBFs), числа ненулевых коэффициентов преобразования,the number of non-zero transformation coefficients, числа блоков в группе блоков, закодированных в конкретном режиме, иthe number of blocks in the group of blocks encoded in a particular mode, and числа блоков в группе блоков, закодированных с режимом пропуска. the number of blocks in the block group encoded with the skip mode. 7. Способ по п. 1, причем упомянутый набор адаптивных контурных фильтров дополнительно включает в себя один или несколько из одного или нескольких текущих адаптивных контурных фильтров, сигнализированных для текущей картинки.7. The method of claim 1, wherein said adaptive loop filter set further includes one or more of the one or more current adaptive loop filters signaled for the current picture. 8. Способ по п. 7, дополнительно содержащий:8. The method of claim 7, further comprising: добавление адаптивных контурных фильтров в упомянутый набор адаптивных контурных фильтров, так что один или несколько текущих адаптивных контурных фильтров, сигнализированных для текущей картинки, добавляются первыми, один или несколько предыдущих адаптивных контурных фильтров добавляются вторыми, и упомянутый фиксированный адаптивный контурный фильтр добавляется последним.adding adaptive loop filters to said adaptive loop filter set such that one or more current adaptive loop filters signaled for the current picture are added first, one or more previous adaptive loop filters are added second, and said fixed adaptive loop filter is added last. 9. Способ по п. 8, причем один или более текущих адаптивных контурных фильтров, сигнализированных для текущей картинки, имеют более низкое значение индекса в списке наборов фильтров относительно одного или нескольких предыдущих адаптивных контурных фильтров.9. The method of claim 8, wherein the one or more current adaptive loop filters signaled for the current picture have a lower index value in the filter bank list relative to the one or more previous adaptive loop filters. 10. Способ по п. 7, дополнительно содержащий:10. The method of claim 7, further comprising: кодирование, для текущей картинки, одного или нескольких синтаксических элементов, указывающих текущий адаптивный контурный фильтр из одного или нескольких текущих адаптивных контурных фильтров для текущей картинки.encoding, for the current picture, one or more syntax elements indicating the current adaptive loop filter from one or more current adaptive loop filters for the current picture. 11. Способ по п. 1, причем набор адаптивных контурных фильтров включает в себя адаптивные контурные фильтры, назначенные каждому классу из множества классов.11. The method of claim 1, wherein the set of adaptive loop filters includes adaptive loop filters assigned to each class of the plurality of classes. 12. Способ по п. 1, причем определение набора адаптивных контурных фильтров содержит кодирование, для первого блока данных видео, первого синтаксического элемента, указывающего первый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, и кодирование, для второго блока данных видео, второго синтаксического элемента, указывающего второй набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, причем второй набор адаптивных контурных фильтров отличается от первого набора адаптивных контурных фильтров, причем способ дополнительно содержит:12. The method of claim 1, wherein determining the adaptive loop filter set comprises encoding, for the first video data block, a first syntax element indicating the first adaptive loop filter set of the plurality of adaptive loop filter sets, and encoding, for the second video data block, the second a syntax element indicating a second adaptive loop filter set of a plurality of adaptive loop filter sets, the second adaptive loop filter set being different from the first adaptive loop filter set, the method further comprising: кодирование первого блока данных видео в текущей картинке, чтобы создать первый восстановленный блок данных видео;encoding a first video data block in the current picture to create a first reconstructed video data block; определение первого адаптивного контурного фильтра из первого набора адаптивных контурных фильтров для первого восстановленного блока данных видео;determining a first adaptive loop filter from the first set of adaptive loop filters for the first reconstructed video data block; применение первого адаптивного контурного фильтра к первому восстановленному блоку данных видео;applying the first adaptive loop filter to the first reconstructed video data block; кодирование второго блока данных видео в текущей картинке, чтобы создать второй восстановленный блок данных видео;encoding a second video data block in the current picture to create a second reconstructed video data block; определение второго адаптивного контурного фильтра из второго набора адаптивных контурных фильтров для второго восстановленного блока данных видео; иdetermining a second adaptive loop filter from the second set of adaptive loop filters for the second reconstructed video data block; and применение второго адаптивного контурного фильтра ко второму восстановленному блоку данных видео.applying the second adaptive loop filter to the second reconstructed video data block. 13. Способ по п. 1, причем кодирование содержит преобразование в закодированную форму, способ дополнительно содержит:13. The method according to claim 1, wherein the encoding comprises converting to an encoded form, the method further comprises: захват текущей картинки камерой.capture the current picture by the camera. 14. Способ по п. 1, причем кодирование содержит декодирование, способ дополнительно содержит:14. The method according to claim 1, wherein the encoding comprises decoding, the method further comprises: отображение текущей картинки. displaying the current picture. 15. Способ по п. 1, в котором блок текущей картинки является первым блоком текущей картинки, причем способ дополнительно содержит:15. The method of claim 1, wherein the current picture block is the first current picture block, the method further comprising: адаптивную контурную фильтрацию второго блока текущей картинки в соответствии с набором адаптивных контурных фильтров, определенных для первого блока текущей картинки.adaptive contour filtering of the second block of the current picture in accordance with the set of adaptive contour filters defined for the first block of the current picture. 16. Устройство, сконфигурированное, чтобы осуществлять адаптивную контурную фильтрацию данных видео, причем устройство содержит:16. A device configured to perform adaptive loop filtering of video data, the device comprising: память, сконфигурированную, чтобы хранить текущую картинку данных видео; иa memory configured to store a current picture of the video data; and один или несколько процессоров в коммуникации с памятью, причем один или несколько процессоров сконфигурированы, чтобы:one or more processors in communication with memory, the one or more processors configured to: определять, на уровне слайса, множество наборов адаптивных контурных фильтров, применимых к слайсу; determine, at the slice level, a plurality of adaptive loop filter sets applicable to the slice; определять, на уровне блока, набор адаптивных контурных фильтров из упомянутого множества наборов адаптивных контурных фильтров для блока текущей картинки, при этом блок текущей картинки представляет собой единицу дерева кодирования (CTU) упомянутого слайса, и при этом набор адаптивных контурных фильтров включает в себя множество адаптивных контурных фильтров, включающих в себя один или более предыдущих адаптивных контурных фильтров и дополнительно включающих в себя фиксированный адаптивный контурный фильтр; иdefine, at the block level, an adaptive loop filter set from said set of adaptive loop filter sets for the current picture block, wherein the current picture block is a coding tree unit (CTU) of said slice, and wherein the adaptive loop filter set includes a set of adaptive loop filters including one or more of the previous adaptive loop filters and further including a fixed adaptive loop filter; and осуществлять адаптивную контурную фильтрацию блоков текущей картинки в соответствии с упомянутым набором адаптивных контурных фильтров.perform adaptive contour filtering of blocks of the current picture in accordance with the mentioned set of adaptive contour filters. 17. Устройство по п. 16, причем, чтобы определить набор адаптивных контурных фильтров, один или несколько процессоров дополнительно сконфигурированы, чтобы:17. The apparatus of claim 16, wherein in order to define the adaptive loop filter set, one or more processors are further configured to: кодировать синтаксический элемент, указывающий набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, для упомянутого блока текущей картинки.encode a syntax element indicating an adaptive loop filter set from a plurality of adaptive loop filter sets for said current picture block. 18. Устройство по п. 17, причем синтаксический элемент представляет собой индекс для списка, включающего в себя множество наборов адаптивных контурных фильтров.18. The apparatus of claim 17, wherein the syntax element is an index to a list including a plurality of adaptive loop filter sets. 19. Устройство по п. 16, причем один или несколько процессоров дополнительно сконфигурированы, чтобы:19. The apparatus of claim 16, wherein the one or more processors are further configured to: кодировать соответственный флаг на блок, указывающий, используется ли адаптивная контурная фильтрация для соответственного блока.encode a corresponding flag per block indicating whether adaptive loop filtering is used for the corresponding block. 20. Устройство по п. 16, причем один или несколько процессоров дополнительно сконфигурированы, чтобы:20. The apparatus of claim 16, wherein the one or more processors are further configured to: кодировать соответственный флаг на группу блоков текущей картинки, указывающий, используется ли адаптивная контурная фильтрация для каждого блока в соответственной группе блоков текущей картинки. encode a corresponding flag per block group of the current picture indicating whether adaptive loop filtering is used for each block in the corresponding block group of the current picture. 21. Устройство по п. 16, причем один или несколько процессоров дополнительно сконфигурированы, чтобы:21. The apparatus of claim 16, wherein the one or more processors are further configured to: определять, используется ли адаптивная контурная фильтрация для каждого блока текущей картинки или для каждого блока в группе блоков текущей картинки, на основе одного или нескольких из:determine whether adaptive contour filtering is used for each block of the current picture or for each block in a group of blocks of the current picture, based on one or more of: числа блоков в группе блоков, имеющих ненулевые флаги закодированных блоков (CBF),the number of blocks in the block group having non-zero coded block flags (CBFs), числа ненулевых коэффициентов преобразования,the number of non-zero transformation coefficients, числа блоков в группе блоков, закодированных в конкретном режиме, иthe number of blocks in the group of blocks encoded in a particular mode, and числа блоков в группе блоков, закодированных с режимом пропуска. the number of blocks in the block group encoded with the skip mode. 22. Устройство по п. 16, причем упомянутый набор адаптивных контурных фильтров дополнительно включает в себя один или несколько из одного или нескольких текущих адаптивных контурных фильтров, сигнализированных для текущей картинки.22. The apparatus of claim 16, wherein said adaptive loop filter set further includes one or more of the one or more current adaptive loop filters signaled for the current picture. 23. Устройство по п. 22, причем один или несколько процессоров дополнительно сконфигурированы, чтобы: 23. The apparatus of claim 22, wherein the one or more processors are further configured to: добавлять адаптивные контурные фильтры в набор адаптивных контурных фильтров, так что один или несколько текущих адаптивных контурных фильтров, сигнализированных для текущей картинки, добавляются первыми, один или несколько предыдущих адаптивных контурных фильтров добавляются вторыми, и фиксированный адаптивный контурный фильтр добавляется последним.add adaptive loop filters to the adaptive loop filter set, such that one or more current adaptive loop filters signaled for the current picture are added first, one or more previous adaptive loop filters are added second, and the fixed adaptive loop filter is added last. 24. Устройство по п. 23, причем один или несколько текущих адаптивных контурных фильтров, сигнализированных для текущей картинки, имеют более низкое значение индекса в списке наборов фильтров относительно одного или нескольких предыдущих адаптивных контурных фильтров.24. The apparatus of claim 23, wherein one or more current adaptive loop filters signaled for the current picture have a lower index value in the filter bank list relative to one or more previous adaptive loop filters. 25. Устройство по п. 22, причем один или несколько процессоров дополнительно сконфигурированы, чтобы:25. The apparatus of claim 22, wherein the one or more processors are further configured to: кодировать, для текущей картинки, один или несколько синтаксических элементов, указывающих текущий адаптивный контурный фильтр из одного или нескольких текущих адаптивных контурных фильтров для текущей картинки.encode, for the current picture, one or more syntax elements indicating the current adaptive loop filter from one or more current adaptive loop filters for the current picture. 26. Устройство по п. 16, причем набор адаптивных контурных фильтров включает в себя адаптивные контурные фильтры, назначенные каждому классу из множества классов.26. The apparatus of claim 16, wherein the adaptive loop filter set includes adaptive loop filters assigned to each class of the plurality of classes. 27. Устройство по п. 16, причем, чтобы определить набор адаптивных контурных фильтров, один или несколько процессоров дополнительно сконфигурированы, чтобы кодировать, для первого блока данных видео, первый синтаксический элемент, указывающий первый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, и кодировать, для второго блока данных видео, второй синтаксический элемент, указывающий второй набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров, причем второй набор адаптивных контурных фильтров отличается от первого набора адаптивных контурных фильтров, и причем один или несколько процессоров дополнительно сконфигурированы, чтобы:27. The apparatus of claim 16, wherein in order to define the adaptive loop filter bank, the one or more processors are further configured to encode, for the first video data block, a first syntax element indicating a first adaptive loop filter bank of the plurality of adaptive loop filter banks, and encode, for the second video data block, a second syntax element indicating a second adaptive loop filter set of the plurality of adaptive loop filter banks, wherein the second adaptive loop filter set is different from the first adaptive loop filter set, and wherein the one or more processors are further configured to : кодировать первый блок данных видео в текущей картинке, чтобы создать первый восстановленный блок данных видео;encode a first video data block in the current picture to create a first recovered video data block; определять первый адаптивный контурный фильтр из первого набора адаптивных контурных фильтров для первого восстановленного блока данных видео;determining a first adaptive loop filter from the first set of adaptive loop filters for the first reconstructed video data block; применять первый адаптивный контурный фильтр к первому восстановленному блоку данных видео;apply the first adaptive loop filter to the first reconstructed video data block; кодировать второй блок данных видео в текущей картинке, чтобы создать второй восстановленный блок данных видео;encode a second video data block in the current picture to create a second reconstructed video data block; определять второй адаптивный контурный фильтр из второго набора адаптивных контурных фильтров для второго восстановленного блока данных видео; иdetermining a second adaptive loop filter from the second set of adaptive loop filters for the second reconstructed video data block; and применять второй адаптивный контурный фильтр ко второму восстановленному блоку данных видео.apply the second adaptive loop filter to the second reconstructed video data block. 28. Устройство по п. 16, причем, чтобы кодировать, один или несколько процессоров сконфигурированы, чтобы преобразовывать в закодированную форму, причем устройство дополнительно содержит:28. The apparatus of claim 16, wherein, to encode, one or more processors are configured to convert to an encoded form, the apparatus further comprising: камеру, сконфигурированную, чтобы захватывать текущую картинку. a camera configured to capture the current picture. 29. Устройство по п. 16, причем, чтобы кодировать, один или несколько процессоров сконфигурированы, чтобы декодировать, причем устройство дополнительно содержит:29. The apparatus of claim 16, wherein, to encode, one or more processors are configured to decode, the apparatus further comprising: дисплей, сконфигурированный, чтобы отображать текущую картинку.a display configured to display the current picture. 30. Устройство по п. 16, в котором блок текущей картинки является первым блоком текущей картинки, при этом один или несколько процессоров дополнительно сконфигурированы, чтобы:30. The apparatus of claim 16, wherein the current picture block is the first current picture block, wherein the one or more processors are further configured to: осуществлять адаптивную контурную фильтрацию второго блока текущей картинки в соответствии с набором адаптивных контурных фильтров, определенных для первого блока текущей картинки.perform adaptive contour filtering of the second block of the current picture in accordance with the set of adaptive contour filters defined for the first block of the current picture. 31. Устройство, сконфигурированное, чтобы осуществлять адаптивную контурную фильтрацию данных видео, причем устройство содержит:31. A device configured to perform adaptive loop filtering of video data, the device comprising: средство для определения, на уровне слайса, множества наборов адаптивных контурных фильтров, применимых к слайсу; means for determining, at the slice level, a plurality of adaptive loop filter sets applicable to the slice; средство для определения, на уровне блока, набора адаптивных контурных фильтров из упомянутого множества наборов адаптивных контурных фильтров для блока текущей картинки, при этом блок текущей картинки представляет собой единицу дерева кодирования (CTU) упомянутого слайса, и при этом набор адаптивных контурных фильтров включает в себя множество адаптивных контурных фильтров, включающих в себя один или более предыдущих адаптивных контурных фильтров и дополнительно включающих в себя фиксированный адаптивный контурный фильтр; иmeans for determining, at the block level, an adaptive loop filter set from said plurality of adaptive loop filter banks for the current picture block, wherein the current picture block is a coding tree unit (CTU) of said slice, and wherein the adaptive loop filter set includes a plurality of adaptive loop filters including one or more of the previous adaptive loop filters and further including a fixed adaptive loop filter; and средство для адаптивной контурной фильтрации блоков текущей картинки в соответствии с упомянутым набором адаптивных контурных фильтров.means for adaptive contour filtering of blocks of the current picture in accordance with the mentioned set of adaptive contour filters. 32. Устройство по п. 31, причем средство для определения набора адаптивных контурных фильтров содержит:32. The apparatus of claim 31, wherein the means for determining the set of adaptive loop filters comprises: средство для кодирования флага для блока, указывающего, используется ли адаптивная контурная фильтрация для упомянутого блока; иmeans for encoding a flag for a block indicating whether adaptive loop filtering is used for said block; and средство для кодирования, на основе флага для упомянутого блока, синтаксического элемента, указывающего упомянутый набор адаптивных контурных фильтров из множества наборов адаптивных контурных фильтров для блока текущей картинки.means for encoding, based on a flag for said block, a syntax element indicating said adaptive loop filter bank from a plurality of adaptive loop filter banks for the current picture block. 33. Устройство по п. 31, причем набор адаптивных контурных фильтров дополнительно включает в себя один или несколько из одного или нескольких адаптивных контурных фильтров, сигнализированных для текущей картинки.33. The apparatus of claim 31, wherein the adaptive loop filter set further includes one or more of the one or more adaptive loop filters signaled for the current picture. 34. Долговременный считываемый компьютером носитель данных, хранящий инструкции, которые при исполнении побуждают один или несколько процессоров:34. A durable computer-readable storage medium that stores instructions that, when executed, cause one or more processors to: определять, на уровне слайса, множество наборов адаптивных контурных фильтров, применимых к слайсу; determine, at the slice level, a plurality of adaptive loop filter sets applicable to the slice; определять, на уровне блока, набор адаптивных контурных фильтров из упомянутого множества наборов адаптивных контурных фильтров для блока текущей картинки, при этом блок текущей картинки представляет собой единицу дерева кодирования (CTU) упомянутого слайса, и при этом набор адаптивных контурных фильтров включает в себя множество адаптивных контурных фильтров, включающих в себя один или более предыдущих адаптивных контурных фильтров и дополнительно включающих в себя фиксированный адаптивный контурный фильтр; иdefine, at the block level, an adaptive loop filter set from said set of adaptive loop filter sets for the current picture block, wherein the current picture block is a coding tree unit (CTU) of said slice, and wherein the adaptive loop filter set includes a set of adaptive loop filters including one or more of the previous adaptive loop filters and further including a fixed adaptive loop filter; and осуществлять адаптивную контурную фильтрацию блока текущей картинки в соответствии с набором адаптивных контурных фильтров.perform adaptive contour filtering of the block of the current picture in accordance with the set of adaptive contour filters. 35. Долговременный считываемый компьютером носитель данных по п. 34, причем, чтобы определять соответственные наборы адаптивных контурных фильтров, инструкции дополнительно побуждают один или несколько процессоров:35. The durable computer-readable storage medium of claim 34, wherein, in order to determine the respective adaptive loop filter sets, the instructions further cause one or more processors to: кодировать флаг для упомянутого блока, указывающий, используется ли адаптивная контурная фильтрация для блока; иencode a flag for said block indicating whether adaptive loop filtering is used for the block; and кодировать, на основе флага для этого блока, синтаксический элемент, указывающий набор адаптивных контурных фильтров, из множества наборов адаптивных контурных фильтров, для упомянутого блока текущей картинки.encode, based on a flag for that block, a syntax element indicating an adaptive loop filter set, from a plurality of adaptive loop filter banks, for said current picture block. 36. Долговременный считываемый компьютером носитель данных по п. 34, причем набор адаптивных контурных фильтров дополнительно включает в себя один или несколько из одного или нескольких текущих адаптивных контурных фильтров, сигнализированных для текущей картинки.36. The durable computer-readable storage medium of claim 34, wherein the adaptive loop filter set further includes one or more of the one or more current adaptive loop filters signaled for the current picture.
RU2020138901A 2018-06-01 2019-05-31 Device and signaling of adaptive loop filter (alf) on block basis RU2783335C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/679,685 2018-06-01
US16/427,017 2019-05-30

Publications (2)

Publication Number Publication Date
RU2020138901A RU2020138901A (en) 2022-07-11
RU2783335C2 true RU2783335C2 (en) 2022-11-11

Family

ID=

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2817108C1 (en) * 2023-11-02 2024-04-10 Общество с ограниченной ответственностью "3Д ТЕХВИДЕНИЕ" Locally adaptive light-protective filter

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120269264A1 (en) * 2009-12-25 2012-10-25 Sony Corporation Image processing device and method
RU2491758C2 (en) * 2008-07-07 2013-08-27 Квэлкомм Инкорпорейтед Video encoding by filter selection
US20160234492A1 (en) * 2015-02-11 2016-08-11 Qualcomm Incorporated Coding tree unit (ctu) level adaptive loop filter (alf)
US9872015B2 (en) * 2011-04-21 2018-01-16 Hfi Innovation Inc. Method and apparatus for improved in-loop filtering

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2491758C2 (en) * 2008-07-07 2013-08-27 Квэлкомм Инкорпорейтед Video encoding by filter selection
US20120269264A1 (en) * 2009-12-25 2012-10-25 Sony Corporation Image processing device and method
US9872015B2 (en) * 2011-04-21 2018-01-16 Hfi Innovation Inc. Method and apparatus for improved in-loop filtering
US20160234492A1 (en) * 2015-02-11 2016-08-11 Qualcomm Incorporated Coding tree unit (ctu) level adaptive loop filter (alf)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2817108C1 (en) * 2023-11-02 2024-04-10 Общество с ограниченной ответственностью "3Д ТЕХВИДЕНИЕ" Locally adaptive light-protective filter

Similar Documents

Publication Publication Date Title
AU2019278991B2 (en) Block-based adaptive loop filter (ALF) design and signaling
JP7423653B2 (en) Block-based adaptive loop filter (ALF) with adaptive parameter set (APS) in video coding
US10623737B2 (en) Peak sample adaptive offset
US10694214B2 (en) Multi-type parallelized sample adaptive offset in video coding
KR20190089890A (en) Indication of the use of bidirectional filters in video coding
KR102309353B1 (en) Divisionless bidirectional filter
US11051017B2 (en) Adaptive loop filter (ALF) index signaling
US20190320172A1 (en) Hardware-friendly sample adaptive offset (sao) and adaptive loop filter (alf) for video coding
RU2783335C2 (en) Device and signaling of adaptive loop filter (alf) on block basis
US20190373292A1 (en) In-loop bilateral filter type decision based on block information