RU2795695C2 - Deblocking filter for video encoding and processing - Google Patents

Deblocking filter for video encoding and processing Download PDF

Info

Publication number
RU2795695C2
RU2795695C2 RU2021104457A RU2021104457A RU2795695C2 RU 2795695 C2 RU2795695 C2 RU 2795695C2 RU 2021104457 A RU2021104457 A RU 2021104457A RU 2021104457 A RU2021104457 A RU 2021104457A RU 2795695 C2 RU2795695 C2 RU 2795695C2
Authority
RU
Russia
Prior art keywords
sample
block
reconstructed block
value
boundary
Prior art date
Application number
RU2021104457A
Other languages
Russian (ru)
Other versions
RU2021104457A (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 RU2021104457A publication Critical patent/RU2021104457A/en
Application granted granted Critical
Publication of RU2795695C2 publication Critical patent/RU2795695C2/en

Links

Images

Abstract

FIELD: video encoding and decoding.
SUBSTANCE: video decoder is proposed that is configured to receive the first reconstructed block of video data that includes the first discrete sample with the first value; deblocking filtering is applied to the first reconstructed block to create a deblocked filtered block; the first cut-off value is determined for the first discrete sample based on location of the first discrete sample relative to the boundary of the reconstructed block and based on the size of the reconstructed block; the first clipping value is compared with the amount of change of the first discrete sample due to deblocking filtering; in response to the change value of the first discrete sample due to deblocking filtering greater than the first clip value, change the first value using the first clip value to determine the first filtered value for the first sample, and output the deblocked filtered video data block with the first sample having the first filtered value.
EFFECT: reduction of blocking artifacts along the edges of blocks, which arise as a result of the video data recovery process.
44 cl, 11 dwg, 1 tbl

Description

[0001] Настоящая заявка испрашивает приоритет согласно:[0001] The present application claims priority according to:

заявке на патент США № 16/551,388, поданной 26 августа, 2019, которая притязает на приоритет:U.S. Patent Application No. 16/551,388, filed August 26, 2019, which claims priority:

предварительной заявки на патент США № 62/723,408, поданной 27 августа 2018; иU.S. Provisional Application No. 62/723,408, filed August 27, 2018; And

предварительной заявки на патент США № 62/742,331, поданной 6 октября 2018,U.S. Provisional Application No. 62/742,331, filed October 6, 2018,

полное содержание которых включено в настоящий документ посредством ссылки.the entire contents of which are incorporated herein by reference.

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

[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), ITU-T H.265/Высокоэффективное кодирование видео (HEVC) и расширениях таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или хранить информацию цифрового видео более эффективно путем реализации таких методик кодирования видео.[0003] Digital video functionality can be incorporated into a wide range of devices, including digital televisions, digital live broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, e-readers, digital cameras, digital recorders, 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 coding 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 ), High Efficiency Video Coding (HEVC), ITU-T H.265/High Efficiency Video Coding (HEVC), and extensions to such standards. Video devices can transmit, receive, encode, decode, and/or store digital video information more efficiently by implementing such video coding techniques.

[0004] Методики кодирования видео включают в себя пространственное (внутри картинки, внутрикадровое) предсказание и/или временное (между картинками, межкадровое) предсказание, чтобы уменьшить или удалить избыточность, присущую последовательностям видео. Для кодирования видео на блочной основе, вырезка видео (т.е., картинка видео или часть картинки видео) может разбиваться на блоки видео, которые могут также упоминаться как единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Блоки видео в интра-кодированной (I) вырезке картинки кодируются с использованием пространственного предсказания по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке. Блоки видео в интер-кодированной (P или B) вырезке картинки могут использовать пространственное предсказание по отношению к опорным дискретным отсчетам в соседних блоках в той же самой картинке или временное предсказание по отношению к опорным дискретным отсчетам в других опорных картинках. Картинки могут упоминаться как кадры, и опорные картинки могут упоминаться как опорные кадры.[0004] Video coding techniques include spatial (intra-picture, intra-picture) prediction and/or temporal (inter-picture, inter-picture) prediction to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (i.e., a video picture or a portion of a video picture) may be broken down into video blocks, which may also be referred to as coding tree units (CTUs), coding units (CUs), and/or coding nodes. . Video blocks in an 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-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.

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

[0005] Настоящее раскрытие описывает методики, связанные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящиеся к методикам выполнения фильтрации устранения блочности. Фильтрация устранения блочности представляет собой тип фильтрации, которая может уменьшить артефакты блочности вдоль краев блоков, которые возникают в результате процесса восстановления.[0005] The present disclosure describes techniques related to filtering recovered video data in a video encoding and/or video decoding process, and more specifically, the present disclosure describes techniques related to techniques for performing deblocking filtering. Deblocking filtering is a type of filtering that can reduce deblocking artifacts along block edges that result from the deblocking process.

[0006] В соответствии с примером, способ декодирования данных видео включает в себя получение первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применение фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определение первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнение первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменение первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и вывод отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0006] According to an example, a method for decoding video data includes obtaining a first reconstructed block of video data, the first reconstructed block including a first sample with a first value; applying deblocking filtering to the first reconstructed block to create a deblocked filtered block; determining a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; comparing the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first clip value, changing the first value by the first clip value to determine the first filtered value for the first sample; and outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample has a first filtered value.

[0007] В соответствии с другим примером, устройство для декодирования данных видео включает в себя память, приспособленную хранить данные видео, и один или более процессоров, реализованных в схемах и выполненных с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретного отсчета имеет первое отфильтрованное значение.[0007] In accordance with another example, a device for decoding video data includes a memory adapted to store video data and one or more processors implemented in circuits and configured to receive a first reconstructed block of video data, the first reconstructed block including itself the first discrete sample with the first value; apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first cutoff value, modifying the first value by the first cutoff value to determine a first filtered value for the first sample; and outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample sample has the first filtered value.

[0008] В соответствии с другим примером, машиночитаемый носитель хранения данных хранит инструкции, которые, при исполнении одним или более процессорами, предписывают одному или более процессорам получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0008] In accordance with another example, a computer-readable storage medium stores instructions that, when executed by one or more processors, cause one or more processors to obtain a first recovered block of video data, the first recovered block including a first discrete sample with a first value ; apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first cutoff value, modifying the first value by the first cutoff value to determine a first filtered value for the first sample; and outputting the deblocked filtered block of video data, wherein in the deblocked filtered block, the first sample sample has the first filtered value.

[0009] В соответствии с другим примером, устройство для декодирования данных видео включает в себя средство для получения первого восстановленного блока данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением; средство для применения фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока; средство для определения первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; средство для сравнения первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности; средство для изменения первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета в ответ на величину изменения первого дискретного отсчета, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения; и средство для вывода отфильтрованного с устранением блочности блока данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.[0009] According to another example, an apparatus for decoding video data includes means for obtaining a first reconstructed block of video data, the first reconstructed block including a first sample with a first value; means for applying deblocking filtering to the first reconstructed block to create a deblocking filtered block; means for determining a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; means for comparing the first clipping value with a change amount of the first sample sample due to deblocking filtering; means for changing the first value by the first clipping value for determining a first filtered value for the first sample in response to a change amount of the first sample sample due to deblocking filtering greater than the first clipping value; and means for outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample has a first filtered value.

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

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

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

[0012] Фиг. 2A и 2B представляют собой концептуальные диаграммы, иллюстрирующие примерную структуру квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU).[0012] FIG. 2A and 2B are conceptual diagrams illustrating an exemplary quadtree-binary tree (QTBT) structure and corresponding coding tree unit (CTU).

[0013] Фиг. 3 показывает пример сегмента из четырех дискретных отсчетов, подлежащего устранению блочности, со смежными блоками P и Q.[0013] FIG. 3 shows an example of a four-sample segment to be deblocked with adjacent P and Q blocks.

[0014] Фиг. 4 показывает примерный блок данных видео, где вычисляются вторые производные четырех обведенных кружками дискретных отсчетов, суммирование которых используется для определения того, следует ли применять устранение блочности на сегменте.[0014] FIG. 4 shows an exemplary video data block where the second derivatives of the four circled discrete samples are calculated, the sum of which is used to determine whether to apply deblocking on the segment.

[0015] Фиг. 5 показывает пример дискретных отсчетов блока данных видео для одной из четырех строк в сегменте, подлежащем устранению блочности.[0015] FIG. 5 shows an example video block samples for one of the four lines in the segment to be deblocked.

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

[0017] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер видео, который может выполнять методики настоящего раскрытия.[0017] FIG. 7 is a block diagram illustrating an exemplary video decoder that can perform the techniques of the present disclosure.

[0018] Фиг. 8 представляет собой блок-схему, иллюстрирующую примерный модуль фильтрации для выполнения методик настоящего раскрытия.[0018] FIG. 8 is a block diagram illustrating an exemplary filter module for performing the techniques of the present disclosure.

[0019] Фиг. 9 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса кодирования видео.[0019] FIG. 9 is a flowchart illustrating an example of a video encoding process.

[0020] Фиг. 10 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.[0020] FIG. 10 is a flowchart illustrating an example of a video decoding process.

[0021] Фиг. 11 представляет собой блок-схему последовательности операций, иллюстрирующую пример процесса декодирования видео.[0021] FIG. 11 is a flowchart illustrating an example of a video decoding process.

ДЕТАЛЬНОЕ ОПИСАНИЕDETAILED DESCRIPTION

[0022] Кодирование видео (например, кодирование видео и/или декодирование видео) обычно включает в себя предсказание блока данных видео из уже кодированного блока данных видео в той же самой картинке (например, интра-предсказание) или уже кодированного блока данных видео в другой картинке (например, интер-предсказание). В некоторых случаях, кодер видео также вычисляет остаточные данные путем сравнения блока предсказания с исходным блоком. Таким образом, остаточные данные представляют разность между блоком предсказания и исходным блоком. Чтобы уменьшить количество битов, требуемых для сигнализации остаточных данных, кодер видео преобразует и квантует остаточные данные и сигнализирует преобразованные и квантованные остаточные данные в кодированном битовом потоке. Сжатие, обеспечиваемое посредством процессов преобразования и квантования, может осуществляться с потерями, что означает, что процессы преобразования и квантования могут вносить искажение в декодируемые данные видео.[0022] Video encoding (e.g., video encoding and/or video decoding) typically involves predicting a video data block from an already coded video data block in the same picture (e.g., intra-prediction) or an already coded video data block in another picture (for example, inter-prediction). In some cases, the video encoder also calculates residual data by comparing the prediction block with the original block. Thus, the residual data represents the difference between the prediction block and the original block. To reduce the number of bits required for signaling the residual data, the video encoder transforms and quantizes the residual data and signals the transformed and quantized residual data in the encoded bitstream. The compression provided by the transformation and quantization processes may be lossy, which means that the transformation and quantization processes may introduce distortion into the video data being decoded.

[0023] Декодер видео декодирует и суммирует остаточные данные с блоком предсказания, чтобы сформировать восстановленный блок видео, который согласуется с исходным блоком видео более близко, чем один только блок предсказания. Ввиду потерь, вводимых преобразованием и квантованием остаточных данных, первый восстановленный блок может иметь искажение или артефакты. Один общий тип артефакта или искажения упоминается как блочность, где границы блоков, используемых для кодирования данных видео, являются видимыми.[0023] The video decoder decodes and adds the residual data to the prediction block to form a reconstructed video block that matches the original video block more closely than the prediction block alone. Due to the losses introduced by the transformation and quantization of the residual data, the first reconstructed block may have distortion or artifacts. One common type of artifact or distortion is referred to as blockiness, where the boundaries of the blocks used to encode video data are visible.

[0024] Чтобы дополнительно улучшить качество декодированного видео, декодер видео может выполнять одну или более операций фильтрации на восстановленных блоках видео. Примеры этих операций фильтрации включают в себя фильтрацию устранения блочности, фильтрацию адаптивного смещения выборки (SAO) и адаптивную контурную фильтрацию (ALF). Параметры для этих операций фильтрации могут либо определяться кодером видео и явно сигнализироваться в кодированном битовом потоке видео, либо могут неявно определяться декодером видео, не требуя явной сигнализации параметров в кодированном битовом потоке видео.[0024] To further improve the quality of the decoded video, the video decoder may perform one or more filtering operations on the reconstructed video blocks. Examples of these filtering operations include deblocking filtering, adaptive sample bias (SAO) filtering, and adaptive loop filtering (ALF). The parameters for these filtering operations may either be determined by the video encoder and explicitly signaled in the encoded video bitstream, or may be implicitly determined by the video decoder without requiring explicit signaling of the parameters in the encoded video bitstream.

[0025] Настоящее раскрытие описывает методики, ассоциированные с фильтрацией восстановленных данных видео в процессе кодирования видео и/или декодирования видео, и, более конкретно, настоящее раскрытие описывает методики, относящие к фильтрации устранения блочности. Фильтрация устранения блочности является типом фильтрации, специально разработанным для снижения блочности. Настоящее раскрытие описывает методики, относящиеся к процессу фильтрации, выполняемому на кадрах или картинках видео, таких как кадры или картинки видео, которые могут быть искажены из-за сжатия, размытия и т.д., но данные методики не следует рассматривать как ограниченные приведенными выше примерами искажения. Эти методики могут улучшать объективное и субъективное качество видео. Методики, описанные в настоящем документе, могут быть использованы в проектировании новых решений кодирования видео, таких как H.266, или для расширения любых из существующих кодеков видео, таких как H.265/Высокоэффективное кодирование видео (HEVC), или могут предлагаться как многообещающий инструмент кодирования для будущих стандартов кодирования видео. Описанные методики могут также использоваться как способ пост-обработки на кадрах видео, выводимых из стандартных или проприетарных кодеков.[0025] The present disclosure describes techniques associated with filtering recovered video data in a video encoding and/or video decoding process, and more specifically, the present disclosure describes techniques related to deblocking filtering. Deblocking filtering is a type of filtering specifically designed for deblocking. This disclosure describes techniques related to the filtering process performed on video frames or pictures, such as video frames or pictures that may be distorted due to compression, blurring, etc., but these techniques should not be construed as being limited to the above. examples of distortion. These techniques can improve the objective and subjective quality of the video. The techniques described in this document may be used in the design of new video coding solutions such as H.266 or to extend any of the existing video codecs such as H.265/High Efficiency Video Coding (HEVC) or may be proposed as promising encoding tool for future video encoding standards. The described techniques can also be used as a post-processing method on video frames output from standard or proprietary codecs.

[0026] Текущие версии HEVC используют максимальный размер блока 64×64. Однако будущие стандарты кодирования видео, такие как стандарт многоцелевого кодирования видео, находящийся на стадии разработки, могут использовать размеры блоков большие, чем 64×64. Настоящее раскрытие описывает методики, которые могут улучшать снижение искажений, получаемое путем фильтрации устранения блочности, в частности, в связи с увеличенными размерами блоков. Кроме того, методики, описанные в настоящем документе, могут получать это улучшенное снижение искажений при сохранении желательных уровней вычислительной сложности и эффективности кодирования.[0026] Current versions of HEVC use a maximum block size of 64x64. However, future video coding standards, such as the multipurpose video coding standard under development, may use block sizes larger than 64x64. The present disclosure describes techniques that can improve the distortion reduction obtained by deblocking filtering, in particular in connection with increased block sizes. In addition, the techniques described herein can achieve this improved distortion reduction while maintaining desired levels of computational complexity and coding efficiency.

[0027] Как используется в настоящем раскрытии, термин “кодирование видео”, в общем, относится либо к кодированию видео, либо к декодированию видео. Аналогичным образом, термин “устройство кодирования видео” может, в общем, относиться к кодеру видео или декодеру видео. Более того, некоторые методики, описанные в настоящем раскрытии в отношении декодирования видео, могут также применяться к кодированию видео, и наоборот. Например, кодеры видео и декодеры видео часто конфигурируются, чтобы выполнять один и тот же процесс или взаимно обратные процессы. Также, кодер видео обычно выполняет декодирование видео (также называемое восстановлением) как часть процессов определения, каким образом кодировать данные видео. Например, кодер видео может выполнять фильтрацию устранения блочности на декодированных блоках видео, чтобы определить, обеспечивает ли некоторая схема кодирования желательный компромисс скорости-искажения, а также кодер видео может выполнять оценку движения с использованием тех же самых блоков, доступных декодеру видео, когда декодер видео выполняет компенсацию движения.[0027] As used in this disclosure, the term "video coding" generally refers to either video coding or video decoding. Likewise, the term “video encoding device” may refer generally to a video encoder or video decoder. Moreover, some of the techniques described in this disclosure in relation to video decoding may also be applied to video coding, and vice versa. For example, video encoders and video decoders are often configured to perform the same process or reciprocal processes. Also, a video encoder typically performs video decoding (also referred to as decoding) as part of the processes of determining how to encode video data. For example, the video encoder may perform deblocking filtering on the decoded video blocks to determine if some coding scheme provides the desired rate-distortion trade-off, and the video encoder may perform motion estimation using the same blocks available to the video decoder when the video decoder performs motion compensation.

[0028] Фиг. 1 представляет собой блок-схему, иллюстрирующую примерную систему 100 кодирования и декодирования видео, которая может выполнять методики фильтрации устранения блочности настоящего раскрытия. Методики настоящего раскрытия в основном направлены на кодирование (кодирование и/или декодирование) данных видео и, более конкретно, на методики фильтрации устранения блочности данных видео. В принципе, данные видео включают в себя любые данные для обработки видео. Таким образом, данные видео могут включать в себя необработанное, некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и метаданные видео, такие как данные сигнализации.[0028] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that can perform the deblocking filtering techniques of the present disclosure. The techniques of the present disclosure are generally directed to encoding (encoding and/or decoding) video data, and more specifically, deblocking filtering techniques for video data. In principle, video data includes any video processing data. Thus, the video data may include raw, unencoded video, encoded video, decoded (eg, reconstructed) video, and video metadata such as signaling data.

[0029] Как показано на фиг. 1, система 100 включает в себя устройство 102 источника, которое обеспечивает кодированные данные видео, подлежащие декодированию и отображению устройством 116 места назначения (получателем), в данном примере. В частности, устройство 102 источника предоставляет данные видео на устройство 116 места назначения посредством машиночитаемого носителя 110. Устройство 102 источника и устройство 116 места назначения могут представлять собой любое из широкого спектра устройств, включая настольные компьютеры, ноутбуки, планшетные компьютеры, телевизионные приставки, телефоны, такие как смартфоны, телевизоры, камеры, устройства отображения, цифровые медиаплееры, видеоигровые консоли, устройства потоковой передачи видео и тому подобное. В некоторых случаях, устройство 102 источника и устройство 116 места назначения могут быть оснащены для беспроводной связи и, таким образом, могут упоминаться как устройства беспроводной связи.[0029] As shown in FIG. 1, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by destination device 116 (destination), in this example. In particular, source device 102 provides video data to destination device 116 via computer-readable medium 110. Source device 102 and destination device 116 can be any of a wide variety of devices, including desktop computers, laptops, tablets, set-top boxes, phones, such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming devices, and the like. In some cases, source device 102 and destination device 116 may be equipped for wireless communication and thus may be referred to as wireless communication devices.

[0030] В примере на фиг. 1, устройство 102 источника включает в себя источник 104 видео, память 106, кодер 200 видео и выходной интерфейс 108. Устройство 116 места назначения включает в себя входной интерфейс 122, декодер 300 видео, память 120 и устройство 118 отображения. В соответствии с настоящим раскрытием, кодер 200 видео устройства 102 источника и декодер 300 видео устройства 116 места назначения могут быть выполнены с возможностью применять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Таким образом, устройство 102 источника представляет собой пример устройства кодирования видео, в то время как устройство 116 места назначения представляет собой пример устройства декодирования видео. В других примерах, устройство источника и устройство места назначения могут включать в себя другие компоненты или устройства. Например, устройство 102 источника может принимать данные видео от внешнего источника видео, такого как внешняя камера. Аналогично, устройство 116 места назначения может взаимодействовать с внешним устройством отображения вместо того, чтобы включать в себя встроенное устройство отображения.[0030] In the example of FIG. 1, source device 102 includes video source 104, memory 106, video encoder 200, and output interface 108. Destination device 116 includes input interface 122, video decoder 300, memory 120, and display device 118. In accordance with the present disclosure, the video encoder 200 of source device 102 and the video decoder 300 of destination device 116 may be configured to apply the deblocking filtering techniques described in this disclosure. Thus, the source device 102 is an example of a video encoding device, while the destination device 116 is an example of a video decoding device. In other examples, the source device and the destination device may include other components or devices. For example, source device 102 may receive video data from an external video source such as an external camera. Likewise, destination device 116 may communicate with an external display device instead of including an embedded display device.

[0031] Система 100, как показано на фиг. 1, является лишь одним примером. В принципе, любое цифровое устройство кодирования и/или декодирования видео может выполнять методики фильтрации устранения блочности, описываемой в настоящем раскрытии. Устройство 102 источника и устройство 116 места назначения являются лишь примерами таких кодирующих устройств, в которых устройство 102 источника генерирует кодированные данные видео для передачи на устройство 116 места назначения. Настоящее раскрытие ссылается на “кодирующее” устройство как на устройство, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, кодер 200 видео и декодер 300 видео представляют собой примеры кодирующих устройств, в частности, кодер видео и декодер видео, соответственно. В некоторых примерах, устройство 102 источника и устройство 116 места назначения могут работать по существу симметрично, так что каждое из устройства 102 источника и устройства 116 места назначения включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать однонаправленную или двунаправленную передачу видео между устройством 102 источника и устройством 116 места назначения, например, для потоковой передачи видео, воспроизведения видео, видеовещания или видеотелефонии.[0031] System 100, as shown in FIG. 1 is just one example. In principle, any digital video encoding and/or decoding device can perform the deblocking filtering techniques described in this disclosure. Source device 102 and destination device 116 are just examples of such encoders in which source device 102 generates encoded video data for transmission to destination device 116 . The present disclosure refers to an “encoder” as a device that performs encoding (encoding and/or decoding) of data. Thus, video encoder 200 and video decoder 300 are examples of encoders, specifically a video encoder and a video decoder, respectively. In some examples, source device 102 and destination device 116 may operate substantially symmetrically such that source device 102 and destination device 116 each include video encoding and decoding components. Therefore, system 100 can support unidirectional or bidirectional video transmission between source device 102 and destination device 116, such as for video streaming, video playback, video broadcasting, or video telephony.

[0032] В общем случае, источник 104 видео представляет источник данных видео (т.е. необработанных, некодированных данных видео) и предоставляет последовательность картинок (также упоминаемых как “кадры”) данных видео на кодер 200 видео, который кодирует данные для картинок. Источник 104 видео устройства 102 источника может включать в себя устройство захвата видео, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс подачи видео для приема видео от поставщика видеоконтента. В качестве дополнительной альтернативы, источник 104 видео может генерировать данные на основе компьютерной графики в качестве исходного видео или объединение живого видео, архивного видео и генерируемого компьютером видео. В каждом случае, кодер 200 видео кодирует захваченные, предварительно захваченные или сгенерированные компьютером данные видео. Кодер 200 видео может переупорядочивать картинки из принятого порядка (иногда называемого “порядком отображения”) в порядок кодирования для кодирования. Кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео. Устройство 102 источника может затем выводить кодированные данные видео через выходной интерфейс 108 на машиночитаемый носитель 110 для приема и/или извлечения данных, например, входным интерфейсом 122 устройства 116 места назначения.[0032] In general, video source 104 represents a source of video data (i.e., raw, unencoded video data) and provides a sequence of pictures (also referred to as “frames”) of video data to video encoder 200, which encodes the data for the pictures. Video source 104 of source device 102 may include a video capture device such as a video camera, a video archive containing previously captured raw video, and/or a video feed interface for receiving video from a video content provider. As a further alternative, video source 104 may generate computer graphics based data as source video or a combination of live video, archived video, and computer generated video. In each case, video encoder 200 encodes captured, pre-captured, or computer-generated video data. The video encoder 200 may reorder the pictures from the received order (sometimes referred to as "display order") into the encoding order for encoding. Video encoder 200 may generate a bitstream including encoded video data. The source device 102 may then output the encoded video data via the output interface 108 to the computer-readable medium 110 for receiving and/or retrieving the data, for example, by the input interface 122 of the destination device 116.

[0033] Память 106 устройства 102 источника и память 120 устройства 116 места назначения представляют собой память общего назначения. В некоторых примерах, памяти 106 и 120 могут хранить необработанные данные видео, например необработанное видео из источника 104 видео и необработанные декодированные данные видео из декодера 300 видео. Дополнительно или альтернативно, памяти 106 и 120 могут хранить программные инструкции, исполняемые, например, кодером 200 видео и декодером 300 видео соответственно. Хотя в этом примере памяти 106 и 120 показаны отдельно от кодера 200 видео и декодера 300 видео, следует понимать, что кодер 200 видео и декодер 300 видео также могут включать в себя внутренние памяти для функционально сходных или эквивалентных целей. Кроме того, памяти 106 и 120 могут хранить закодированные данные видео, например, выход с кодера 200 видео и вход в декодер 300 видео. В некоторых примерах, части памятей 106 и 120 могут быть выделены в качестве одного или более буферов видео, например, для хранения необработанных, декодированных и/или закодированных данных видео.[0033] The memory 106 of the source device 102 and the memory 120 of the destination device 116 are general purpose memory. In some examples, memories 106 and 120 may store raw video data, such as raw video from video source 104 and raw decoded video data from video decoder 300. Additionally or alternatively, memories 106 and 120 may store program instructions executable by, for example, video encoder 200 and video decoder 300, respectively. Although memories 106 and 120 are shown separately from video encoder 200 and video decoder 300 in this example, it should be understood that video encoder 200 and video decoder 300 may also include internal memories for functionally similar or equivalent purposes. In addition, memories 106 and 120 may store encoded video data, such as output from video encoder 200 and input to video decoder 300. In some examples, portions of memories 106 and 120 may be allocated as one or more video buffers, such as for storing raw, decoded, and/or encoded video data.

[0034] Машиночитаемый носитель 110 может представлять собой любой тип носителя или устройства, способного транспортировать закодированные данные видео от устройства 102 источника к устройству 116 места назначения. В одном примере, машиночитаемый носитель 110 представляет коммуникационную среду, позволяющую устройству 102 источника передавать закодированные данные видео непосредственно на устройство 116 места назначения в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Выходной интерфейс 108 может модулировать сигнал передачи, включающий в себя закодированные данные видео, и входной интерфейс 122 может демодулировать принятый сигнал передачи в соответствии со стандартом связи, таким как протокол беспроводной связи. Коммуникационная среда может содержать одну или обе из беспроводной или проводной коммуникационной среды, такую как радиочастотный (RF) спектр или одна или более физических линий передачи. Коммуникационная среда может формировать часть пакетной сети, такой как локальная сеть, сеть широкого охвата или глобальная сеть, такая как Интернет. Коммуникационная среда может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезно для облегчения связи от устройства 102 источника к устройству 116 места назначения.[0034] Computer readable medium 110 may be any type of medium or device capable of transporting encoded video data from source device 102 to destination device 116. In one example, computer-readable medium 110 represents a communication medium allowing source device 102 to transmit encoded video data directly to destination device 116 in real time, such as via an RF network or computer network. The output interface 108 may modulate a transmission signal including encoded video data, and the input interface 122 may demodulate the received transmission signal in accordance with a communication standard such as a wireless communication protocol. The communication medium may comprise one or both of a 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 useful in facilitating communication from source device 102 to destination device 116.

[0035] В некоторых примерах, машиночитаемый носитель 110 может включать в себя устройство 112 хранения. Устройство 102 источника может выводить закодированные данные из выходного интерфейса 108 в устройство 112 хранения. Аналогично, устройство 116 места назначения может получать доступ к закодированным данным из устройства 112 хранения через входной интерфейс 122. Устройство 112 хранения может включать в себя любое из множества распределенных или локально доступных носителей хранения данных, таких как накопитель на жестком диске, Blu-ray диски, DVD, CD-ROM, флэш-память, энергозависимая или энергонезависимая память или любые другие подходящие цифровые носители хранения данных для хранения закодированных данных видео.[0035] In some examples, computer-readable medium 110 may include a storage device 112. Source device 102 may output encoded data from output interface 108 to storage device 112 . Likewise, destination device 116 may access encoded data from storage device 112 via input interface 122. Storage device 112 may include any of a variety of distributed or locally available storage media such as a hard disk drive, Blu-ray discs. , DVD, CD-ROM, flash memory, volatile or non-volatile memory, or any other suitable digital storage media for storing encoded video data.

[0036] В некоторых примерах, машиночитаемый носитель 110 может включать в себя файловый сервер 114 или другое устройство промежуточного хранения, которое может хранить закодированные данные видео, сгенерированные устройством 102 источника. Устройство 102 источника может выводить закодированные данные видео на файловый сервер 114. Устройство 116 места назначения может получать доступ к сохраненным данным видео с файлового сервера 114 посредством потоковой передачи или загрузки. Файловый сервер 114 может быть любым типом серверного устройства, способного хранить закодированные данные видео и передавать эти закодированные данные видео на устройство 116 места назначения. Файловый сервер 114 может представлять собой веб-сервер (например, для веб-сайта), сервер протокола передачи файлов (FTP), сетевое устройство доставки контента или сетевое устройство хранения (NAS). Устройство 116 места назначения может получать доступ к закодированным данным видео с файлового сервера 114 через любое стандартное соединение передачи данных, включая Интернет-соединение. Это может включать в себя беспроводной канал (например, соединение Wi-Fi), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) или объединение обоих, которая подходит для доступа к закодированным данным видео, хранящимся на файловом сервере 114. Файловый сервер 114 и входной интерфейс 122 могут быть выполнены с возможностью работы в соответствии с протоколом потоковой передачи, протоколом передачи загрузки или их объединения.[0036] In some examples, computer-readable medium 110 may include a file server 114 or other intermediate storage device that may store encoded video data generated by source device 102. The source device 102 may output the encoded video data to the file server 114. The destination device 116 may access the stored video data from the file server 114 via streaming or download. File server 114 may be any type of server device capable of storing encoded video data and transmitting this encoded video data to destination device 116 . The file server 114 may be a web server (eg, for a website), a file transfer protocol (FTP) server, a network content delivery device, or a network attached storage (NAS) device. The destination device 116 can access the encoded video data from the file server 114 via any standard data connection, including an Internet connection. This may include a wireless link (such as a Wi-Fi connection), a wired connection (such as a digital subscriber line (DSL), cable modem, etc.) or a combination of both, which is suitable for accessing encoded video data stored on file server 114. File server 114 and input interface 122 may be configured to operate in accordance with a streaming protocol, a download transfer protocol, or a combination thereof.

[0037] Выходной интерфейс 108 и входной интерфейс 122 могут представлять собой беспроводные передатчики/приемники, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, работающие в соответствии с любым из множества стандартов IEEE 802.11, или другие физические компоненты. В примерах, где выходной интерфейс 108 и входной интерфейс 122 содержат беспроводные компоненты, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии со стандартом сотовой связи, таким как 4G, 4G-LTE (Долгосрочное развитие), LTE-Advanced (Расширенное LTE), 5G или тому подобное. В некоторых примерах, где выходной интерфейс 108 содержит беспроводной передатчик, выходной интерфейс 108 и входной интерфейс 122 могут быть выполнены с возможностью передачи данных, таких как закодированные данные видео, в соответствии с другими беспроводными стандартами, такими как спецификация IEEE 802.11, спецификация IEEE 802.15 (например, ZigBee™), стандарт Bluetooth™ или тому подобное. В некоторых примерах, устройство 102 источника и/или устройство 116 места назначения могут включать в себя соответствующие однокристальные (SoC) устройства. Например, устройство 102 источника может включать в себя SoC-устройство для выполнения функциональности, относящейся к кодеру 200 видео и/или выходному интерфейсу 108, и устройство 116 места назначения может включать в себя SoC-устройство для выполнения функциональности, относящейся к декодеру 300 видео и/или входному интерфейсу 122.[0037] Output interface 108 and input interface 122 may be wireless transmitters/receivers, modems, wired network components (eg, Ethernet cards), wireless communications components operating in accordance with any of a variety of IEEE 802.11 standards, or other physical components. . In examples where output interface 108 and input interface 122 contain wireless components, output interface 108 and input interface 122 may be configured to transmit data such as encoded video data in accordance with a cellular standard such as 4G, 4G-LTE (Long-term development), LTE-Advanced (Advanced LTE), 5G or the like. In some examples, where the output interface 108 comprises a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data such as encoded video data in accordance with other wireless standards such as the IEEE 802.11 specification, the IEEE 802.15 specification ( such as ZigBee™), the Bluetooth™ standard, or the like. In some examples, source device 102 and/or destination device 116 may include respective single-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functionality related to video encoder 200 and/or output interface 108, and destination device 116 may include an SoC device to perform functionality related to video decoder 300 and /or input interface 122.

[0038] Методики настоящего раскрытия могут быть применены к кодированию видео при поддержке любого из множества мультимедийных приложений, таких как эфирные телевизионные передачи, передачи кабельного телевидения, передачи спутникового телевидения, потоковые передачи видео через Интернет, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое закодировано на носителе хранения данных, декодирование цифрового видео, сохраненного на носителе хранения данных, или других приложений.[0038] The techniques of the present disclosure may be applied to video coding supporting any of a variety of multimedia applications such as terrestrial television transmissions, cable television transmissions, satellite television transmissions, Internet video streaming such as Dynamic Adaptive Streaming over HTTP (DASH ), digital video that is encoded on a storage medium, decoding digital video stored on a storage medium, or other applications.

[0039] Входной интерфейс 122 устройства 116 места назначения принимает закодированный битовый поток видео со машиночитаемого носителя 110 (например, из коммуникационной среды, устройства 112 хранения, файлового сервера 114 или тому подобного). Закодированный битовый поток видео со машиночитаемого носителя 110 может включать в себя информацию сигнализации, определенную кодером 200 видео, которая также используется декодером 300 видео, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку блоков видео или других кодированных единиц (например, вырезок, картинок, групп картинок, последовательностей или тому подобное). Устройство 118 отображения отображает пользователю декодированные картинки декодированных данных видео. Устройство 118 отображения может представлять собой любое из множества устройств отображения, таких как электронно-лучевая трубка (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светоизлучающих диодах (OLED) или другой тип устройства отображения.[0039] The input interface 122 of the destination device 116 receives an encoded video bitstream from a computer-readable medium 110 (eg, from a communication medium, a storage device 112, a file server 114, or the like). The encoded video bitstream from computer-readable medium 110 may include signaling information defined by video encoder 200 that is also used by video decoder 300, such as syntax elements having values that describe characteristics and/or processing of video blocks or other coded units (e.g., , clippings, pictures, groups of pictures, sequences, or the like). The display device 118 displays decoded pictures of the decoded video data to the user. Display device 118 may be any of a variety of display devices such as a cathode ray tube (CRT), liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

[0040] Хотя не показано на фиг. 1, в некоторых примерах, кодер 200 видео и декодер 300 видео могут быть интегрированы с кодером аудио и/или декодером аудио и могут включать соответствующие модули мультиплексирования-демультиплексирования (MUX-DEMUX) или другие аппаратные средства и/или программное обеспечение для обработки мультиплексированных потоков, включающих в себя как аудио, так и видео, в общем потоке данных. Если применимо, модули MUX-DEMUX могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).[0040] Although not shown in FIG. 1, in some examples, video encoder 200 and video decoder 300 may be integrated with an audio encoder and/or audio decoder and may include appropriate mux-demux (MUX-DEMUX) modules or other hardware and/or software to handle multiplexed streams. , including both audio and video, in a common data stream. If applicable, MUX-DEMUX modules may conform to the ITU H.223 multiplexer protocol or other protocols such as User Datagram Protocol (UDP).

[0041] Как кодер 200 видео, так и декодер 300 видео могут быть реализованы как любая из множества подходящих схем кодера и/или декодера, таких как один или более микропроцессоров, цифровых сигнальных процессоров (DSP), специализированных интегральных схем (ASIC), программируемых вентильных матриц (FPGA), дискретной логики, программного обеспечения, аппаратных средств, микропрограммного обеспечения или любых их объединений. Когда методики частично реализованы в программном обеспечении, устройство может хранить инструкции для программного обеспечения на подходящем, долговременном машиночитаемом носителе и исполнять инструкции в аппаратных средствах с использованием одного или более процессоров для выполнения методик настоящего раскрытия. Каждый из кодера 200 видео и декодера 300 видео может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть объединенного кодера/декодера (CODEC) в соответствующем устройстве. Устройство, включающее в себя кодер 200 видео и/или декодер 300 видео, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0041] Both video encoder 200 and video decoder 300 may be implemented as any of a variety of suitable encoder and/or decoder circuits, such as one or more microprocessors, digital signal processors (DSPs), application specific integrated circuits (ASICs), programmable gate arrays (FPGAs), discrete logic, software, hardware, firmware, or any combination thereof. When the techniques are partially implemented in software, a device may store the instructions for the software on a suitable, non-volatile computer-readable medium and execute the instructions in hardware using one or more processors to execute the techniques of the present disclosure. Each of video encoder 200 and video decoder 300 may be included in one or more encoders or decoders, any of which may be integrated as part of a combined encoder/decoder (CODEC) in a respective device. The device including the video encoder 200 and/or video decoder 300 may include an integrated circuit, a microprocessor, and/or a wireless communication device such as a cellular phone.

[0042] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. В других примерах, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.[0042] The video encoder 200 and video decoder 300 may operate in accordance with a video coding standard such as ITU-T H. 265, also referred to as High Efficiency Video Coding (HEVC), or extensions thereof, such as multi-view and/or scalable video coding extensions. video encoding. In other examples, video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards such as the Joint Exploration Test Model (JEM) or ITU-T H.266, also referred to as Multipurpose Video Coding. (Versatile Video Coding, VVC). A recent draft VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (hereinafter referred to as “VVC Draft 6”). However, the techniques of the present disclosure are not limited to any particular coding standard.

[0043] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей в себя данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок (дискретных отсчетов) данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, и декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).[0043] In general, video encoder 200 and video decoder 300 may perform block coding of pictures. The term “block” generally refers to a structure that includes data to be processed (eg, encoded, decoded, or otherwise used in an encoding and/or decoding process). For example, the block may include a two-dimensional matrix of samples (samples) of luma and/or chrominance data. In general, video encoder 200 and video decoder 300 may encode video data represented in YUV format (eg, Y, Cb, Cr). That is, instead of encoding red, green, and blue (RGB) data for the picture samples, video encoder 200 and video decoder 300 may encode luminance and chrominance components, where the chrominance components may include both red tint and blue tint chrominance components. In some examples, video encoder 200 converts the received RGB data to a YUV representation before encoding, and video decoder 300 converts the YUV representation to RGB. Alternatively, these transformations may be performed by pre- and post-processing modules (not shown).

[0044] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.[0044] The present disclosure may generally refer to encoding (eg, encoding and decoding) of pictures, including the process of encoding or decoding picture data. Likewise, the present disclosure may refer to picture block coding, including the process of encoding or decoding data for blocks, such as prediction and/or residual coding. The encoded video bitstream typically includes a sequence of values for syntax elements representing encoding decisions (eg, encoding modes) and blocking pictures. Thus, references to encoding a picture or block should generally be understood as encoding values for the syntax elements that make up the picture or block.

[0045] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать в себя одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.[0045] HEVC defines various blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder splits the CTU and CU into four equal, non-overlapping squares, and each quadtree node has either zero or four child nodes. Nodes with no children may be referred to as "leaf nodes" and the CUs of such leaf nodes may include one or more PUs and/or one or more TUs. The video encoder may further split the PU and TU. For example, in HEVC, the residual quadtree (RQT) is a partition of the TU. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are intra predicted include intra prediction information such as an intra mode indication.

[0046] Кодер 200 видео и декодер 300 видео могут работать в соответствии со стандартом кодирования видео, таким как ITU-T H. 265, также упоминаемым как Высокоэффективное кодирование видео (HEVC), или его расширениями, такими как расширения многовидового и/или масштабируемого кодирования видео. Альтернативно, кодер 200 видео и декодер 300 видео могут работать в соответствии с другими проприетарными или отраслевыми стандартами, такими как Тестовая модель совместного исследования (Joint Exploration Test Model, JEM) или ITU-T H.266, также упоминаемыми как Многоцелевое кодирование видео (Versatile Video Coding, VVC). Недавний проект стандарта VVC описан в Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (далее “VVC Draft 6”). Однако методики настоящего раскрытия не ограничиваются каким-либо конкретным стандартом кодирования.[0046] The video encoder 200 and video decoder 300 may operate in accordance with a video coding standard such as ITU-T H. 265, also referred to as High Efficiency Video Coding (HEVC), or extensions thereof, such as multi-view and/or scalable video coding extensions. video encoding. Alternatively, video encoder 200 and video decoder 300 may operate in accordance with other proprietary or industry standards such as the Joint Exploration Test Model (JEM) or ITU-T H.266, also referred to as Versatile Video Coding (Versatile Video Coding, VVC). A recent draft VVC standard is described in Bross, et al. “Versatile Video Coding (Draft 6),” Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 15th Meeting: Gothenburg, SE, 3-12 July 2019, JVET-O2001-vE (hereinafter referred to as “VVC Draft 6”). However, the techniques of the present disclosure are not limited to any particular coding standard.

[0047] В общем, кодер 200 видео и декодер 300 видео могут выполнять блочное кодирование картинок. Термин “блок” обычно относится к структуре, включающей данные, подлежащие обработке (например, кодированию, декодированию или использованию иным образом в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, кодер 200 видео и декодер 300 видео могут кодировать данные видео, представленные в формате YUV (например, Y, Cb, Cr). То есть, вместо кодирования данных красного, зеленого и синего (RGB) для выборок картинки, кодер 200 видео и декодер 300 видео могут кодировать компоненты яркости и цветности, где компоненты цветности могут включать компоненты цветности как красного оттенка, так и синего оттенка. В некоторых примерах, кодер 200 видео преобразует принятые данные в формате RGB в представление YUV перед кодированием, а декодер 300 видео преобразует представление YUV в формат RGB. Альтернативно, эти преобразования могут выполняться модулями пред- и пост-обработки (не показаны).[0047] In general, video encoder 200 and video decoder 300 may perform block coding of pictures. The term “block” generally refers to a structure containing data to be processed (eg, encoded, decoded, or otherwise used in the encoding and/or decoding process). For example, the block may include a two-dimensional matrix of luma and/or chrominance data samples. In general, video encoder 200 and video decoder 300 may encode video data represented in YUV format (eg, Y, Cb, Cr). That is, instead of encoding red, green, and blue (RGB) data for the picture samples, video encoder 200 and video decoder 300 may encode luminance and chrominance components, where the chrominance components may include both red tint and blue tint chrominance components. In some examples, video encoder 200 converts the received RGB data to a YUV representation prior to encoding, and video decoder 300 converts the YUV representation to RGB. Alternatively, these transformations may be performed by pre- and post-processing modules (not shown).

[0048] Настоящее раскрытие может, в общем, ссылаться на кодирование (например, кодирование и декодирование) картинок, включающее в себя процесс кодирования или декодирования данных картинки. Аналогично, настоящее раскрытие может ссылаться на кодирование блоков картинок, включающее в себя процесс кодирования или декодирования данных для блоков, например, кодирование предсказания и/или остатка. Кодированный битовый поток видео обычно включает в себя последовательность значений для синтаксических элементов, представляющих решения кодирования (например, режимы кодирования) и разбиение картинок на блоки. Таким образом, ссылки на кодирование картинки или блока, в общем, следует понимать как кодирование значений для синтаксических элементов, образующих картинку или блок.[0048] The present disclosure may generally refer to encoding (eg, encoding and decoding) of pictures, including the process of encoding or decoding picture data. Likewise, the present disclosure may refer to picture block coding, including the process of encoding or decoding data for blocks, such as prediction and/or residual coding. The encoded video bitstream typically includes a sequence of values for syntax elements representing coding decisions (eg, coding modes) and picture blocking. Thus, references to encoding a picture or block should generally be understood as encoding values for the syntax elements that make up the picture or block.

[0049] HEVC определяет различные блоки, включая единицы кодирования (CU), единицы предсказания (PU) и единицы преобразования (TU). Согласно HEVC, устройство кодирования видео (такое как кодер 200 видео) разбивает единицу дерева кодирования (CTU) на CU в соответствии со структурой квадродерева. То есть, устройство кодирования видео разбивает CTU и CU на четыре равных, неперекрывающихся квадрата, и каждый узел квадродерева имеет либо ноль, либо четыре дочерних узла. Узлы без дочерних узлов могут упоминаться как “листовые узлы”, и CU таких листовых узлов могут включать одну или более PU и/или одну или более TU. Устройство кодирования видео может дополнительно разбивать PU и TU. Например, в HEVC, остаточное квадродерево (RQT) представляет собой разбиение TU. В HEVC, PU представляют данные интер-предсказания, в то время как TU представляют остаточные данные. CU, которые являются интра-предсказанными, включают информацию интра-предсказания, такую как указание интра-режима.[0049] HEVC defines various blocks, including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (such as video encoder 200) partitions a coding tree unit (CTU) into CUs according to a quadtree structure. That is, the video encoder splits the CTU and CU into four equal, non-overlapping squares, and each quadtree node has either zero or four child nodes. Nodes without child nodes may be referred to as "leaf nodes" and the CUs of such leaf nodes may include one or more PUs and/or one or more TUs. The video encoder may further split the PU and TU. For example, in HEVC, the residual quadtree (RQT) is a partition of the TU. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are intra predicted include intra prediction information such as an intra mode indication.

[0050] В качестве другого примера, кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью работы в соответствии с JEM или VVC. Согласно JEM или VVC, устройство кодирования видео (такое как кодер 200 видео) разбивает картинку на множество единиц дерева кодирования (CTU). Кодер 200 видео может разбивать CTU в соответствии со структурой дерева, такой как структура квадродерева-двоичного дерева (QTBT) или структура дерева множества типов (MTT). Структура QTBT исключает концепции множества типов разбиения, такие как разделение между CU, PU и TU в HEVC. Структура QTBT может включать в себя два уровня: первый уровень, разделенный в соответствии с разбиением квадродерева, и второй уровень, разделенный в соответствии с разбиением двоичного дерева. Корневой узел структуры QTBT соответствует CTU. Листовые узлы двоичных деревьев соответствуют единицам кодирования (CU).[0050] As another example, video encoder 200 and video decoder 300 may be configured to operate in accordance with JEM or VVC. According to JEM or VVC, a video encoder (such as video encoder 200) splits a picture into multiple coding tree units (CTUs). The video encoder 200 may partition the CTU according to a tree structure, such as a quadtree-binary tree (QTBT) structure or a multiple type tree (MTT) structure. The QTBT structure eliminates the concept of multiple types of partitioning, such as partitioning between CUs, PUs, and TUs in HEVC. The QTBT structure may include two levels: a first level divided according to a quadtree split and a second level divided 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).

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

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

[0053] Кодер 200 видео и декодер 300 видео могут быть выполнены с возможностью использования разбиения квадродерева согласно HEVC, разбиения QTBT, разбиения МТТ или других структур разбиения. В целях пояснения, описание методик настоящего раскрытия представлено в отношении разбиения QTBT. Однако следует понимать, что методики настоящего раскрытия также могут быть применены к устройствам кодирования видео, выполненным с возможностью использования разбиения квадродерева или других типов разбиения.[0053] Video encoder 200 and video decoder 300 may be configured to use HEVC quadtree splitting, QTBT splitting, MTT splitting, or other splitting structures. For purposes of explanation, a description of the techniques of the present disclosure is provided in relation to splitting QTBT. However, it should be understood that the techniques of the present disclosure can also be applied to video encoders configured to use quadtree partitioning or other types of partitioning.

[0054] Блоки (например, CTU или CU) могут быть сгруппированы различными способами в картинке. В качестве одного примера, “брус” (блок) может относиться к прямоугольной области строк CTU в пределах конкретного прямоугольного мозаичного элемента в картинке. Мозаичный элемент может быть прямоугольной областью CTU в пределах конкретного столбца мозаичных элементов и конкретной строки мозаичных элементов в картинке. Столбец мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, равную высоте картинки, и ширину, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки). Строка мозаичных элементов относится к прямоугольной области CTU, имеющей высоту, задаваемую синтаксическими элементами (например, такими как в наборе параметров картинки), и ширину, равную ширине картинки.[0054] Units (eg, CTU or CU) can be grouped in various ways in a picture. As one example, a “bar” (block) may refer to a rectangular area of CTU rows within a particular rectangular tile in a picture. A tile may be a rectangular area of the CTU within a particular column of tiles and a particular row of tiles in a picture. A tile column refers to a rectangular area of the CTU having a height equal to the height of the picture and a width given by syntax elements (eg, such as in a picture parameter set). A tile row refers to a rectangular area of the CTU having a height given by syntax elements (eg, such as in a picture parameter set) and a width equal to the width of the picture.

[0055] В некоторых примерах, мозаичный элемент может быть разбит на множество брусков, каждый из которых может включать в себя одну или более строк CTU в пределах мозаичного элемента. Мозаичный элемент, который не разбит на множество брусков, также может упоминаться как брусок. Однако брусок, который является истинным поднабором мозаичного элемента, не может упоминаться как мозаичный элемент.[0055] In some examples, a tile may be broken into a plurality of bars, each of which may include one or more CTU lines within the tile. A tile that is not broken into multiple bars may also be referred to as a bar. However, a bar that is a true subset of a tile cannot be referred to as a tile.

[0056] Бруски в картинке могут быть упорядочены в вырезке. Вырезка может представлять собой целое число брусков картинки, которая может исключительно содержаться к одной единице уровня сетевой абстракции (NAL). В некоторых примерах, вырезка включает в себя либо ряд полных мозаичных элементов, либо только жесткую последовательность полных брусков одного мозаичного элемента.[0056] The bars in the picture may be arranged in a cutout. A slice can be an integer number of picture bars that can exclusively be contained to one Network Abstraction Layer (NAL) unit. In some examples, the cut includes either a series of complete tiles, or only a rigid sequence of full bars of a single tile.

[0051] Настоящее раскрытие может использовать “N×N” и “N на N” взаимозаменяемым образом для ссылки на размеры выборки блока (такого как CU или другой блок видео) в терминах вертикального и горизонтального размеров, например, выборок 16×16 или выборок 16 на 16. В общем случае, CU размером 16×16 будет иметь 16 выборок в вертикальном направлении (y=16) и 16 выборок в горизонтальном направлении (x=16). Аналогично, CU размером N×N обычно имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, где N представляет неотрицательное целое значение. Выборки в CU могут быть расположены в строках и столбцах. Кроме того, CU не обязательно должны иметь одинаковое количество выборок в горизонтальном направлении и в вертикальном направлении. Например, CU может содержать N×M выборок, где M не обязательно равно N.[0051] The present disclosure may use “N×N” and “N by N” interchangeably to refer to sample sizes of a block (such as a CU or other video block) in terms of vertical and horizontal dimensions, such as 16×16 samples or samples 16 by 16. In general, a 16×16 CU will have 16 samples in the vertical direction (y=16) and 16 samples in the horizontal direction (x=16). Similarly, an N×N CU typically has N samples in the vertical direction and N samples in the horizontal direction, where N represents a non-negative integer value. Samples in a CU can be arranged in rows and columns. In addition, CUs do not need to have the same number of samples in the horizontal direction and in the vertical direction. For example, a CU may contain N×M samples, where M is not necessarily equal to N.

[0058] Кодер 200 видео кодирует данные видео для CU, представляющих информацию предсказания и/или остаточную информацию, и другую информацию. Информация предсказания указывает, как должна предсказываться CU, чтобы формировать блок предсказания для CU. Остаточная информация обычно представляет собой разности от выборки к выборке между выборками CU перед кодированием и блоком предсказания.[0058] The video encoder 200 encodes video data for CUs representing prediction information and/or residual information and other information. The prediction information indicates how the CU should be predicted in order to generate a prediction block for the CU. The residual information is typically the sample-to-sample differences between pre-coding CU samples and the prediction block.

[0059] Для предсказания CU, кодер 200 видео может обычно формировать блок предсказания для CU посредством интер-предсказания или интра-предсказания. Интер-предсказание обычно относится к предсказанию CU из данных ранее кодированной картинки, в то время как интра-предсказание обычно относится к предсказанию СU из ранее кодированных данных той же самой картинки. Чтобы выполнить интер-предсказание, кодер 200 видео может генерировать блок предсказания с использованием одного или более векторов движения. Кодер 200 видео обычно может выполнять поиск движения для идентификации опорного блока, который близко согласуется с СU, например, с точки зрения разностей между CU и опорным блоком. Кодер 200 видео может вычислить метрику разности с использованием суммы абсолютных разностей (SAD), суммы квадратов разностей (SSD), средней абсолютной разности (MAD), средне-квадратичных разностей (МSD) или других подобных разностных вычислений для определения, является ли опорный блок близко согласованным с текущей CU. В некоторых примерах, кодер 200 видео может предсказать текущую CU с использованием однонаправленного предсказания или двунаправленного предсказания.[0059] For CU prediction, video encoder 200 may typically generate a prediction block for the CU via inter-prediction or intra-prediction. Inter prediction generally refers to CU prediction from previously coded picture data, while intra prediction generally refers to CU prediction from previously coded data of the same picture. To perform inter-prediction, video encoder 200 may generate a prediction block using one or more motion vectors. Video encoder 200 can typically perform a motion search to identify a reference block that closely matches the CU, eg, in terms of differences between the CU and the reference block. Video encoder 200 may compute a difference metric using sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), root mean square differences (MSD), or other similar difference calculations to determine whether a reference block is close to consistent with the current CU. In some examples, video encoder 200 may predict the current CU using unidirectional prediction or bidirectional prediction.

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

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

[0062] Кодер 200 видео кодирует данные, представляющие режим предсказания для текущего блока. Например, для режимов интер-предсказания, кодер 200 видео может кодировать данные, представляющие, какой из различных доступных режимов интер-предсказания используется, а также информацию движения для соответствующего режима. Например, для однонаправленного или двунаправленного интер-предсказания, кодер 200 видео может кодировать векторы движения с использованием расширенного предсказания векторов движения (AMVP) или режима слияния. Кодер 200 видео может использовать аналогичные режимы для кодирования векторов движения для аффинного режима компенсации движения.[0062] The video encoder 200 encodes data representing the prediction mode for the current block. For example, for inter prediction modes, video encoder 200 may encode data representing which of the various available inter prediction modes is in use, as well as motion information for the corresponding mode. For example, for unidirectional or bidirectional inter-prediction, video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or merge mode. Video encoder 200 may use similar modes to encode motion vectors for affine motion compensation mode.

[0063] После предсказания, такого как интра-предсказание или интер-предсказание блока, кодер 200 видео может вычислить остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют разности от выборки к выборке между данным блоком и блоком предсказания для данного блока, сформированным с использованием соответствующего режима предсказания. Кодер 200 видео может применять одно или более преобразований к остаточному блоку для получения преобразованных данных в области преобразования вместо области выборок. Например, кодер 200 видео может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным данным видео. Кроме того, кодер 200 видео может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Кодер 200 видео формирует коэффициенты преобразования после применения одного или более преобразований.[0063] After prediction, such as intra-prediction or inter-prediction of a block, video encoder 200 may calculate residual data for the block. Residual data, such as a residual block, represents the sample-to-sample differences between a given block and a prediction block for a given block generated using the corresponding prediction mode. Video encoder 200 may apply one or more transforms to the residual block to obtain transformed data in the transform region instead of the sample region. For example, video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the video residual data. In addition, the video encoder 200 may apply a secondary transform after the first transform, such as mode-dependent indivisible secondary transform (MDNSST), signal-dependent transform, Karhunen-Loeve transform (KLT), and the like. Video encoder 200 generates transform coefficients after applying one or more transforms.

[0064] Как отмечалось выше, после любых преобразований для получения коэффициентов преобразования, кодер 200 видео может выполнять квантование коэффициентов преобразования. Квантование обычно относится к процессу, в котором коэффициенты преобразования квантуются, чтобы по возможности уменьшить объем данных, используемых для представления коэффициентов, обеспечивая дальнейшее сжатие. Путем выполнения процесса квантования, кодер 200 видео может уменьшить битовую глубину, ассоциированную с некоторыми или всеми из коэффициентов. Например, кодер 200 видео может округлять n-битовое значение до m-битового значения во время квантования, где n больше, чем m. В некоторых примерах, чтобы выполнить квантование, кодер 200 видео может выполнить побитовое смещение вправо значения, подлежащего квантованию.[0064] As noted above, after any transformations to obtain transform coefficients, video encoder 200 may perform quantization of the transform coefficients. Quantization generally refers to a process in which transform coefficients are quantized to reduce the amount of data used to represent the coefficients as much as possible, allowing for further compression. By performing a quantization process, video encoder 200 may reduce the bit depth associated with some or all of the coefficients. For example, video encoder 200 may round an n-bit value to an m-bit value during quantization, where n is greater than m. In some examples, to perform quantization, video encoder 200 may perform a bitwise right shift of the value to be quantized.

[0065] После квантования, кодер 200 видео может сканировать коэффициенты преобразования, формируя одномерный вектор из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может быть спроектировано так, чтобы помещать коэффициенты преобразования более высокой энергии (и, следовательно, более низкой частоты) в начале вектора и помещать коэффициенты преобразования более низкой энергии (и, следовательно, более высокой частоты) в конце вектора. В некоторых примерах, кодер 200 видео может использовать предопределенный порядок сканирования для сканирования квантованных коэффициентов преобразования для получения вектора, преобразованного в последовательную форму, а затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, кодер 200 видео может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования для формирования одномерного вектора, кодер 200 видео может энтропийно кодировать одномерный вектор, например, в соответствии с контекстно-адаптивным двоичным арифметическим кодированием (CABAC). Кодер 200 видео может также энтропийно кодировать значения для синтаксических элементов, описывающих метаданные, ассоциированные с кодированными данными видео, для использования декодером 300 видео при декодировании данных видео.[0065] After quantization, video encoder 200 may scan the transform coefficients, forming a one-dimensional vector from a two-dimensional matrix including the quantized transform coefficients. The scan can be designed to place the higher energy (and therefore lower frequency) transform coefficients at the beginning of the vector, and to place the lower energy (and hence higher frequency) transform coefficients at the end of the vector. In some examples, video encoder 200 may use a predefined scan order to scan the quantized transform coefficients to obtain a serialized vector and then entropy encode the quantized transform coefficients of the vector. In other examples, video encoder 200 may perform adaptive scanning. After scanning the quantized transform coefficients to generate a one-dimensional vector, video encoder 200 may entropy encode the one-dimensional vector, such as in accordance with context adaptive binary arithmetic coding (CABAC). Video encoder 200 may also entropy encode values for syntax elements describing metadata associated with encoded video data for use by video decoder 300 when decoding video data.

[0066] Для выполнения CABAC, кодер 200 видео может назначать контекст в рамках контекстной модели символу, который должен быть передан. Контекст может относиться, например, к тому, являются ли соседние значения символа нулевыми или нет. Определение вероятности может основываться на контексте, назначенном символу.[0066] To perform CABAC, video encoder 200 may assign a context within a context model to a character to be transmitted. The context may relate, for example, to whether adjacent symbol values are null or not. The probability determination may be based on the context assigned to the symbol.

[0067] Кодер 200 видео может дополнительно генерировать синтаксические данные, такие как синтаксические данные на блочной основе, синтаксические данные на основе картинки и синтаксические данные на основе последовательности, для декодера 300 видео, например, в заголовке картинки, заголовке блока, заголовке вырезки, или другие синтаксические данные, такие как набор параметров последовательности (SPS), набор параметров картинки (PPS) или набор параметров видео (VPS). Декодер 300 видео может также декодировать такие синтаксические данные, чтобы определить, как декодировать соответствующие данные видео.[0067] The video encoder 200 may further generate syntax data, such as block-based syntax data, picture-based syntax data, and sequence-based syntax data, for the video decoder 300, for example, in a picture header, a block header, a slice header, or other syntax data such as sequence parameter set (SPS), picture parameter set (PPS), or video parameter set (VPS). The video decoder 300 may also decode such syntax data to determine how to decode the corresponding video data.

[0068] Таким образом, кодер 200 видео может генерировать битовый поток, включающий в себя кодированные данные видео, например, синтаксические элементы, описывающие разбиение картинки на блоки (например, CU), и информацию предсказания и/или остаточную информацию для блоков. В конечном счете, декодер 300 видео может принимать битовый поток и декодировать закодированные данные видео.[0068] Thus, video encoder 200 can generate a bitstream including encoded video data, such as syntax elements describing the partitioning of a picture into blocks (eg, CUs), and prediction information and/or residual information for the blocks. Ultimately, the video decoder 300 may receive the bitstream and decode the encoded video data.

[0069] В принципе, декодер 300 видео выполняет процесс, обратный процессу, выполняемому кодером 200 видео, для декодирования закодированных данных видео битового потока. Например, декодер 300 видео может декодировать значения для синтаксических элементов битового потока с использованием CABAC, по существу аналогично, хотя и обратным образом, по отношению к процессу кодирования CABAC кодера 200 видео. Синтаксические элементы могут определять информацию разбиения картинки на CTU и разбиения каждой CTU согласно соответствующей структуре разбиения, такой как структура QTBT, для определения CU в CTU. Синтаксические элементы могут дополнительно определять предсказание и остаточную информацию для блоков (например, CU) данных видео.[0069] In principle, the video decoder 300 performs a reverse process to the process performed by the video encoder 200 to decode encoded video bitstream data. For example, video decoder 300 may decode values for bitstream syntax elements using CABAC in a substantially similar, albeit inverse manner to the CABAC coding process of video encoder 200. The syntax elements may define splitting information of a picture into CTUs and splitting each CTU according to an appropriate splitting structure, such as a QTBT structure, to define a CU in a CTU. The syntax elements may further define prediction and residual information for blocks (eg, CUs) of video data.

[0070] Остаточная информация может быть представлена, например, квантованными коэффициентами преобразования. Декодер 300 видео может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока для восстановления остаточного блока для данного блока. Декодер 300 видео использует сигнализированный режим предсказания (интра- или интер-предсказания) и связанную информацию предсказания (например, информацию движения для интер-предсказания) для формирования блока предсказания для данного блока. Декодер 300 видео может затем объединять блок предсказания и остаточный блок (на основе от выборки к выборке) для восстановления исходного блока. Декодер 300 видео может выполнять дополнительную обработку, такую как выполнение процесса устранения блочности для уменьшения визуальных артефактов вдоль границ блока.[0070] The residual information may be represented, for example, by quantized transform coefficients. Video decoder 300 may inversely quantize and inversely transform the quantized block transform coefficients to reconstruct a residual block for that block. Video decoder 300 uses the signaled prediction mode (intra or inter prediction) and associated prediction information (eg, motion information for inter prediction) to generate a prediction block for that block. Video decoder 300 may then combine the prediction block and the residual block (sample-to-sample basis) to reconstruct the original block. Video decoder 300 may perform additional processing, such as performing a deblocking process to reduce visual artifacts along block boundaries.

[0071] Настоящее раскрытие может, в общем, ссылаться на “сигнализацию” определенной информации, такой как синтаксические элементы. Термин “сигнализация” может, в общем, относиться к сообщению значений для синтаксических элементов и/или других данных, используемых для декодирования закодированных данных видео. То есть, кодер 200 видео может сигнализировать значения для синтаксических элементов в битовом потоке. В общем, сигнализация относится к генерации значения в битовом потоке. Как отмечалось выше, устройство 102 источника может транспортировать битовый поток к устройству 116 места назначения по существу в реальном времени или не в реальном времени, как может происходить при сохранении синтаксических элементов в устройстве 112 хранения для последующего извлечения устройством 116 места назначения.[0071] The present disclosure may generally refer to "signaling" certain information, such as syntax elements. The term “signaling” may generally refer to reporting values for syntax elements and/or other data used to decode encoded video data. That is, video encoder 200 may signal values for syntax elements in the bitstream. In general, signaling refers to the generation of a value in a bitstream. As noted above, source device 102 may transport the bitstream to destination device 116 in substantially real time or non-real time, as may occur when syntax elements are stored in storage device 112 for later retrieval by destination device 116.

[0072] Фиг. 2A и 2B представляют собой концептуальную диаграмму, иллюстрирующую примерную структуру 130 квадродерева-двоичного дерева (QTBT) и соответствующую единицу дерева кодирования (CTU) 132. Сплошные линии представляют разбиение квадродерева, а пунктирные линии указывают разбиение двоичного дерева. В каждом разделенном (т.е. нелистовом) узле двоичного дерева сигнализируется один флаг, указывающий, какой тип разделения (т.е. горизонтальное или вертикальное) используется, где 1 указывает горизонтальное разделение, а 0 указывает вертикальное разделение в данном примере. Для разделения квадродерева, нет необходимости указывать тип разделения, так как узлы квадродерева разделяют блок по горизонтали и по вертикали на 4 подблока одинакового размера. Соответственно, кодер 200 видео может кодировать, а декодер 300 видео может декодировать синтаксические элементы (такие как информация разделения) для уровня дерева области структуры QTBT 130 (т.е. сплошные линии) и синтаксические элементы (такие как информация разделения) для уровня дерева предсказания структуры QTBT 130 (т.е. пунктирные линии). Кодер 200 видео может кодировать, а декодер 300 видео может декодировать данные видео, такие как данные предсказания и преобразования, для CU, представленных конечными листовыми узлами структуры QTBT 130.[0072] FIG. 2A and 2B are a conceptual diagram illustrating an exemplary quadtree-binary tree (QTBT) structure 130 and corresponding coding tree unit (CTU) 132. Solid lines represent quadtree partitioning, and dotted lines indicate binary tree partitioning. At each split (ie, non-leaf) node of the binary tree, one flag is signaled indicating which type of split (ie, horizontal or vertical) is used, where 1 indicates horizontal split and 0 indicates vertical split in this example. To split a quadtree, it is not necessary to specify a split type, since the quadtree nodes divide the block horizontally and vertically into 4 equally sized subblocks. Accordingly, the video encoder 200 may encode and the video decoder 300 may decode syntax elements (such as split information) for the tree layer of the area of the QTBT 130 structure (i.e., solid lines) and syntax elements (such as split information) for the prediction tree layer. structures QTBT 130 (ie dashed lines). Video encoder 200 may encode and video decoder 300 may decode video data, such as prediction and transform data, for the CUs represented by leaf leaf nodes of the QTBT structure 130.

[0073] В общем, CTU 132 на фиг. 2B может ассоциироваться с параметрами, определяющими размеры блоков, соответствующих узлам структуры QTBT 130 на первом и втором уровнях. Эти параметры могут включать в себя размер CTU (представляющий размер CTU 132 в выборках), минимальный размер квадродерева (MinQTSize, представляющий минимально допустимый размер листового узла квадродерева), максимальный размер двоичного дерева (MaxBTSize, представляющий максимально допустимый размер корневого узла двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющую максимально допустимую глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимально допустимый размер листового узла двоичного дерева).[0073] In general, CTU 132 in FIG. 2B may be associated with parameters defining block sizes corresponding to the nodes of the QTBT 130 structure at the first and second levels. These parameters may include CTU size (representing the size of CTU 132 in samples), minimum quadtree size (MinQTSize, representing the minimum allowable quadtree leaf node size), maximum binary tree size (MaxBTSize, representing the maximum allowed binary tree root node size), maximum the depth of the binary tree (MaxBTDepth, representing the maximum allowable depth of the binary tree); and the minimum size of the binary tree (MinBTSize, representing the minimum allowable size of the leaf node of the binary tree).

[0074] Корневой узел структуры QTBT, соответствующий CTU, может иметь четыре дочерних узла на первом уровне структуры QTBT, каждый из которых может разбиваться в соответствии с разбиением квадродерева. То есть, узлы первого уровня являются либо листовыми узлами (не имеющими дочерних узлов), либо имеют четыре дочерних узла. Пример структуры QTBT 130 представляет такие узлы, как включающие родительский узел и дочерние узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не больше, чем максимально допустимый размер корневого узла двоичного дерева (MaxBTSize), то узлы могут дополнительно разбиваться на соответствующие двоичные деревья. Разделение двоичного дерева одного узла может повторяться до тех пор, пока узлы, полученные в результате разделения, не достигнут минимально допустимого размера листового узла двоичного дерева (MinBTSize) или максимально допустимой глубины двоичного дерева (MaxBTDepth). Пример структуры QTBT 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Листовой узел двоичного дерева упоминается как единица кодирования (CU), которая используется для предсказания (например, предсказания внутри картинки или между картинками) и преобразования, без какого-либо дальнейшего разбиения. Как обсуждалось выше, CU также могут упоминаться как “блоки видео” или “блоки”.[0074] The root node of the QTBT structure corresponding to the CTU may have four child nodes at the first level of the QTBT structure, each of which may be partitioned according to a quadtree split. That is, the first level nodes are either leaf nodes (having no children) or have four children. An example structure of QTBT 130 represents nodes such as including a parent node and child nodes having solid lines for branches. If the nodes of the first level are not larger than the maximum allowable size of the root node of the binary tree (MaxBTSize), then the nodes can be further split into the corresponding binary trees. Splitting a binary tree of one node may be repeated until the nodes resulting from the split reach the minimum allowable binary tree leaf node size (MinBTSize) or the maximum allowable binary tree depth (MaxBTDepth). An example structure of QTBT 130 represents such nodes as having dashed lines for branches. A leaf node of a binary tree is referred to as a coding unit (CU) which is used for prediction (eg intra-picture or inter-picture prediction) and transformation without any further partitioning. As discussed above, CUs may also be referred to as “video blocks” or “blocks”.

[0075] В одном примере структуры разбиения QTBT, размер CTU устанавливается как 128×128 (выборки яркости и две соответствующие 64×64 выборки цветности), MinQTSize устанавливается как 16×16, MaxBTSize устанавливается как 64×64, MinBTSize (как для ширины, так и для высоты) устанавливается как 4, и MaxBTDepth устанавливается как 4. Разбиение квадродерева применяется к CTU сначала, чтобы сформировать листовые узлы квадродерева. Листовые узлы квадродерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размер CTU). Если листовой узел квадродерева равен 128×128, он не будет далее разделен на двоичное дерево, так как размер превышает MaxBTSize (т.е. 64×64, в данном примере). В противном случае, листовой узел квадродерева будет дополнительно разбиваться на двоичное дерево. Таким образом, листовой узел квадродерева также является корневым узлом для двоичного дерева и имеет глубину двоичного дерева, равную 0. Когда глубина двоичного дерева достигает MaxBTDepth (4, в данном примере), дальнейшее разделение не допускается. Когда узел двоичного дерева имеет ширину, равную MinBTSize (4, в данном примере), это означает, что дальнейшее вертикальное разделение не допускается. Аналогично, узел двоичного дерева, имеющий высоту, равную MinBTSize, подразумевает, что дальнейшее горизонтальное разделение для этого узла двоичного дерева не допускается. Как отмечено выше, листовые узлы двоичного дерева упоминаются как CU и далее обрабатываются в соответствии с предсказанием и преобразованием без дальнейшего разбиения.[0075] In one example of the QTBT partitioning structure, the CTU size is set to 128x128 (luminance samples and two corresponding 64x64 chrominance samples), MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (as for width, and height) is set to 4, and MaxBTDepth is set to 4. Quadtree partitioning is applied to the CTU first to form the leaf nodes of the quadtree. The leaf nodes of the quadtree can be from 16x16 (ie MinQTSize) to 128x128 (ie CTU size). If a quadtree leaf node is 128x128, it will not be further split into a binary tree because the size is larger than MaxBTSize (ie 64x64, in this example). Otherwise, the leaf node of the quadtree will be further split into a binary tree. Thus, the leaf node of the quadtree is also the root node for the binary tree and has a binary tree depth of 0. When the binary tree depth reaches MaxBTDepth (4, in this example), no further splitting is allowed. When a binary tree node has a width equal to MinBTSize (4, in this example), this means that no further vertical splitting is allowed. Similarly, a binary tree node having a height equal to MinBTSize implies that no further horizontal splitting is allowed for that binary tree node. As noted above, the leaf nodes of the binary tree are referred to as CUs and are further processed according to prediction and transformation without further partitioning.

[0076] Артефакты блочности могут включать в себя горизонтальные и вертикальные неоднородности (разрывности) в восстановленной картинке, которые не существуют в исходном неподвижном изображении или картинке видео и часто являются результатом сжатия в умеренной до высокой степени. Например, если кодер видео в высокой степени сжимает входное изображение, то от этого страдает визуальное качество декодированного изображения, так что когда содержимое изображения подвергается декомпрессии (устранению сжатия), т.е., декодируется, содержимое восстановленного изображения страдает из-за артефактов блочности. Эти артефакты в плоских областях выглядят подобно “мозаичности”, поскольку артефакты не маскируются высококонтрастным содержимым. Кроме того, артефакты блочности при воспроизведении видео могут наблюдаться как “движущиеся и мерцающие”, так как неоднородности расположены по-разному в последовательных кадрах.[0076] Blocking artifacts may include horizontal and vertical discontinuities (discontinuities) in the reconstructed picture that do not exist in the original still or video picture and are often the result of moderate to high compression. For example, if the video encoder highly compresses the input image, then the visual quality of the decoded image suffers, so that when the image content is decompressed (decompressed), i.e., decoded, the content of the reconstructed image suffers from blocking artifacts. These artifacts in flat areas look like "mosaic" because the artifacts are not masked by high contrast content. In addition, blocking artifacts in video playback can be observed as “moving and flickering” as the irregularities are located differently in successive frames.

[0077] Как изложено выше, одним источником артефактов блочности является кодирование с преобразованием на блочной основе, включающее в себя преобразование и квантование, которое выполняется на ошибках интра- и интер-предсказания (например, остатках). Грубое квантование коэффициентов преобразования может вызвать визуально распределение неоднородностей на границах блока. Предсказание с компенсацией движения является другим потенциальным источником артефактов блочности. Блоки со скомпенсированным движением генерируются путем копирования интерполированных пиксельных данных из различных местоположений возможно различных опорных кадров. Так как почти никогда не имеется идеального соответствия для этих данных (например, значений выборок для опорных блоков, образованных из интерполяции), обычно возникают неоднородности на границах скопированных блоков данных. То есть, два соседних блока, закодированных с использованием компенсации движения, могут проявлять неоднородности.[0077] As discussed above, one source of blocking artifacts is block-based transform coding, including transform and quantization, that is performed on intra- and inter-prediction errors (eg, residuals). Coarse quantization of the transform coefficients can cause a visual distribution of inhomogeneities at the block boundaries. Motion compensated prediction is another potential source of blocking artifacts. Motion compensated blocks are generated by copying interpolated pixel data from different locations, possibly different reference frames. Since there is almost never a perfect match for this data (eg, sample values for reference blocks derived from interpolation), discontinuities usually occur at the boundaries of the copied data blocks. That is, two adjacent blocks encoded using motion compensation may exhibit discontinuities.

[0078] Фильтрация устранения блочности (например, как в HEVC) обычно выполняется после того, как картинка или группа блоков восстанавливается/декодируется, чтобы ослабить артефакты блочности. Более конкретно, фильтрация устранения блочности изменяет значения выборок, расположенных вблизи каждой границы блока, путем фильтрации, отсечения или других средств, так что неоднородности сглаживаются и, таким образом, становятся менее видимыми.[0078] Deblocking filtering (eg, as in HEVC) is typically performed after a picture or group of blocks is reconstructed/decoded to reduce blocking artifacts. More specifically, deblocking filtering changes the values of the samples located near each block boundary, by filtering, clipping, or other means, so that the inhomogeneities are smoothed out and thus become less visible.

[0079] В сжатии видео, фильтрация устранения блочности может выполняться на изображениях в буфере изображений и вне контура предсказания, что означает, что картинки, отфильтрованные с устранением блочности, не используются для предсказания других картинок. Фильтрация устранения блочности может также выполняться в контуре предсказания, что означает, что картинки с устранением блочности используются в качестве опорных картинок для компенсации движения будущих картинок. Обе методики улучшают субъективное качество отображаемого видео, хотя последний потенциально также улучшает эффективность сжатия как результат точности интер-предсказания, улучшенной за счет использования опорных кадров с устранением блочности.[0079] In video compression, deblocking filtering can be performed on images in the image buffer and outside the prediction loop, which means that deblocked filtered pictures are not used to predict other pictures. Deblocking filtering can also be performed in a prediction loop, which means that deblocking pictures are used as reference pictures to compensate for the motion of future pictures. Both techniques improve the subjective quality of the displayed video, although the latter potentially also improves compression performance as a result of the inter-prediction accuracy improved by the use of deblocking reference frames.

[0080] Устранение блочности в HEVC является процессом в контуре и применяется к границам блоков, которые удовлетворяют двум условиям. Первое условие заключается в том, что границы являются границами CU, PU или TU, и второе условие заключается в том, что x-координата (или y-координата) равна (и в некоторых случаях должна быть) кратным 8, если граница является вертикальной (или горизонтальной). Второе условие означает, что минимальное расстояние двух параллельных соседних границ, подлежащих устранению блочности, составляет 8 пикселов, что обеспечивает лучшую параллелизацию, как описано более подробно ниже. Фильтр устранения блочности делит границу, подлежащую обработке, независимо от длины границы, на множество неперекрывающихся сегментов из 4 выборок, которые являются единицами, на которых фильтр устранения блочности выполняет фильтрацию устранения блочности. В настоящем раскрытии, будут введены операции устранения блочности на сегменте, и сегмент может предполагаться вертикальным, однако обработка горизонтальных сегментов по существу является той же самой.[0080] Deblocking in HEVC is an in-loop process and is applied to block boundaries that satisfy two conditions. The first condition is that the boundaries are CU, PU, or TU boundaries, and the second condition is that the x-coordinate (or y-coordinate) is (and in some cases must be) a multiple of 8 if the boundary is vertical ( or horizontal). The second condition means that the minimum distance of two parallel adjacent borders to be deblocked is 8 pixels, which provides better parallelization, as described in more detail below. The deblocking filter divides the border to be processed, regardless of the length of the border, into a plurality of non-overlapping segments of 4 samples, which are the units on which the deblocking filter performs deblocking filtering. In the present disclosure, deblocking operations on a segment will be introduced, and a segment may be assumed to be vertical, however, the processing of horizontal segments is essentially the same.

[0081] Декодер 300 видео, при выполнении фильтрации устранения блочности, может выполнять определение силы (интенсивности) границы. Для сегмента, подлежащего обработке, декодер видео исследует условия кодирования (например, вектор движения (MV), опорный индекс и наличие ненулевых коэффициентов преобразования) двух блоков на каждой стороне, обозначенных как P и Q, с каждой стороны от границы блока.[0081] The video decoder 300, when performing deblocking filtering, may perform edge strength (strength) determination. For a segment to be processed, the video decoder examines the encoding conditions (eg, motion vector (MV), reference index, and presence of non-zero transform coefficients) of two blocks on each side, denoted P and Q, on each side of the block boundary.

[0082] Фиг. 3 показывает пример P-блока 142 и Q-блока 144. P-блок 142 представляет собой 8×8 блок, и Q-блок 144 представляет собой 16×16 блок. P-блок 142 и Q-блок 144 совместно используют границу 146, которая показана на фиг. 3 как сегменты 146A и 146B. Оба сегмента 146A и 146B имеют длину четыре выборки, в соответствии с фильтрацией устранения блочности в HEVC, но методики настоящего раскрытия не ограничены конкретной длиной сегмента.[0082] FIG. 3 shows an example of a P box 142 and a Q box 144. P box 142 is an 8×8 block and Q box 144 is a 16×16 block. P-box 142 and Q-box 144 share a border 146, which is shown in FIG. 3 as segments 146A and 146B. Segments 146A and 146B are both four samples long, in accordance with HEVC deblocking filtering, but the techniques of the present disclosure are not limited to a particular segment length.

[0083] Для блоков яркости, декодер видео определяет силу границы сегмента 146A. Сила границы представляет, насколько интенсивные артефакты блочности должны появиться вокруг сегмента 146A. В одном примере, значение силы границы может составлять 0, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что артефакты блочности не ожидаются вдоль сегмента 146A, и фильтрация устранения блочности для сегмента 146A может быть пропущена. В другом примере, значение силы границы может составлять 2, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие сильных артефактов блочности, и может быть желательна более сильная фильтрация устранения блочности. Значение силы границы может также составлять 1, что означает, что условия кодирования в P-блоке 142 и Q-блоке 144 таковы, что потенциально ожидается присутствие менее выраженных артефактов блочности, и может быть желательна некоторая фильтрация устранения блочности, но не настолько сильная, как фильтрация устранения блочности, когда сила границы равна 2. Подробности выведения силы границ описаны в разделе 8.7.2.4 HEVC.[0083] For luma blocks, the video decoder determines the strength of the segment boundary 146A. The edge strength represents how intense blocking artifacts should appear around segment 146A. In one example, the edge strength value may be 0, which means that the coding conditions in P-box 142 and Q-box 144 are such that no blocking artifacts are expected along segment 146A, and deblocking filtering for segment 146A may be omitted. In another example, the edge strength value may be 2, which means that the coding conditions in P-box 142 and Q-box 144 are such that strong deblocking artifacts are potentially expected, and stronger deblocking filtering may be desired. The border strength value may also be 1, which means that the coding conditions in P-box 142 and Q-box 144 are such that less severe blocking artifacts are potentially expected, and some deblocking filtering may be desirable, but not as strong as deblocking filtering when edge strength is 2. Details of edge strength derivation are described in section 8.7.2.4 of HEVC.

[0084] Декодер видео может определять силы границ для блоков цветности иначе, чем для блоков яркости. Например, для блоков цветности, декодер видео назначает сегментам, смежным с интра-кодированными блоками, сигу границы, равную 2, и в противном случае, назначает сегментам силу границы, равную 0.[0084] The video decoder may determine edge strengths for chrominance blocks differently than for luma blocks. For example, for chrominance blocks, the video decoder assigns segments adjacent to intra-coded blocks a border sig equal to 2, and otherwise assigns a border strength equal to 0 to the segments.

[0085] Как описано выше, декодер видео может оценивать вероятность того, что сегмент имеет артефакты блочности, на основе условия кодирования смежных блоков. Однако декодер видео может также выполнять дополнительный анализ, на основе значений выборок вблизи такого сегмента, чтобы определять, следует ли или нет устранять блочность для сегмента. Сначала, декодер видео принимает решение, следует ли фильтровать сегмент, путем вычисления вторых производных четырех выборок вблизи сегмента.[0085] As described above, the video decoder may estimate the likelihood that a segment has blocking artifacts based on a coding condition of adjacent blocks. However, the video decoder may also perform further analysis, based on sample values near such a segment, to determine whether or not to deblock the segment. First, the video decoder decides whether to filter a segment by calculating the second derivatives of the four samples near the segment.

[0086] Фиг. 4 показывает пример сегмента 150, который находится на границе между P-блоком 152 и Q-блоком 154. Декодер видео вычисляет вторые производные четырех выборок вблизи сегмента, которые показаны на фиг. 4 как выборки 158A-158D в кружках. Если суммирование четырех вторых производных (см. Ур. (1)) меньше, чем порог β, как описано ниже в отношении порогов β и tC, то декодер видео определяет, что сегмент требует устранения блочности. В противном случае, декодер видео определяет, что сегмент считается расположенным в неплоской области, где артефакты блочности, вероятно, будут маскированы и, следовательно, не требуют устранения блочности. Для сегмента, даже при ненулевой силе границы, декодер видео может пропустить фильтрацию устранения блочности, если порог согласно Ур. (1) не достигнут.[0086] FIG. 4 shows an example of a segment 150 that is on the boundary between P-box 152 and Q-box 154. The video decoder calculates the second derivatives of the four samples near the segment, which are shown in FIG. 4 as circled samples 158A-158D. If the sum of the four second derivatives (see Eq. (1)) is less than the threshold β, as described below with respect to the thresholds β and t C , then the video decoder determines that the segment requires deblocking. Otherwise, the video decoder determines that the segment is considered to be located in a non-planar region where blocking artifacts are likely to be masked and therefore do not require deblocking. For a segment, even with a non-zero edge strength, the video decoder may skip deblocking filtering if the threshold according to Eq. (1) not reached.

Figure 00000001
Figure 00000001

[0087] Во-вторых, для сегмента, подлежащего устранению блочности, декодер видео может принять другое решение, следует ли использовать интенсивный или нормальный режим фильтрации. Если следующие шесть условий (Ур. (2-1)-(2-6)) все справедливы, что означает, что область, вероятно, слишком гладкая, чтобы маскировать какие-либо артефакты блочности, то декодер видео определяет, что используется интенсивный режим фильтрации. В противном случае, декодер видео определяет, что используется нормальный режим фильтрации.[0087] Second, for the segment to be deblocked, the video decoder may make a different decision whether to use heavy or normal filtering mode. If the following six conditions (Eq. (2-1)-(2-6)) are all true, which means that the area is probably too smooth to mask any blocking artifacts, then the video decoder determines that the heavy mode is used. filtration. Otherwise, the video decoder determines that the normal filtering mode is used.

Figure 00000002
Figure 00000002

Пороговый параметр tC представляет параметр отсечения, который описан более детально ниже.The threshold parameter t C represents a cutoff parameter, which is described in more detail below.

[0088] Фиг. 5 показывает пример сегмента 160, который находится на границе между P-блоком 162 и Q-блоком 164. Фиг. 5 будет использоваться, чтобы показать операцию фильтрации устранения блочности для одной строки, представленной физическими положениями выборок p 0 , p 1 , p 2 , p 3 , q 0 , q 1 , q 2 и q 3 .[0088] FIG. 5 shows an example of a segment 160 that is on the border between P-box 162 and Q-box 164. FIG. 5 will be used to show the deblocking filtering operation for a single row represented by the physical sample positions p 0 , p 1 , p 2 , p 3 , q 0 , q 1 , q 2 , and q 3 .

[0089] Для определений силы границы и других решений для яркости, описанных выше, декодер видео выполняет анализ и выводы на уровне сегмента. В интенсивном режиме фильтрации для яркости и нормальном режиме фильтрации для яркости, фильтрация устранения блочности выполняется построчно (например, строка за строкой, если сегмент является вертикальным, или столбец за столбцом, если сегмент является горизонтальным).[0089] For the edge strength determinations and other brightness decisions described above, the video decoder performs analysis and inference at the segment level. In the intensive filtering mode for luminance and the normal filtering mode for luminance, deblocking filtering is performed line by line (for example, row by row if the segment is vertical, or column by column if the segment is horizontal).

[0090] В интенсивном режиме фильтрации для яркости, декодер видео обрабатывает три выборки на каждой стороне сегмента 160. В примере на фиг. 5, значения выборок p 0 , p 1 и p 2 в P-блоке 162 обновляются на p 0 , p 1 и p 2 , посредством фильтрации нижних частот, как показано в Ур. (3-1)-(3-3).[0090] In the intensive filtering mode for luminance, the video decoder processes three samples on each side of segment 160. In the example of FIG. 5, the sample values p 0 , p 1 and p 2 in P-block 162 are updated to p 0 ' , p 1 ' and p 2 ' by low-pass filtering as shown in Eq. (3-1)-(3-3).

Figure 00000003
Figure 00000003

Измененные значения выборок p i ' (i=0, 1, 2) ограничиваются (отсекаются) до диапазона [p i - 2t C , p i +2t C ].Changed sample values p i ' ( i =0, 1, 2) are limited (cut off) to the range [ p i - 2 t C , p i +2 t C ].

[0091] Декодер видео обрабатывает q 0 , q 1 и q 2 в Q-блоке 164 с использованием по существу тех же уравнений, что и Ур. (3-1)-(3-3), хотя и для q вместо p. Отсечение применяется таким же образом для q, как для p.[0091] The video decoder processes q 0 , q 1 and q 2 in Q-block 164 using essentially the same equations as Eq. (3-1)-(3-3), albeit for q instead of p . Clipping is applied in the same way for q as it is for p .

[0092] В нормальном режиме фильтрации для яркости, декодер видео обрабатывает одну или две выборки на каждой стороне сегмента 160. Для левой стороны сегмента 160, например, декодер видео проверяет условия в Ур. (4-1). Если условия выполняются, то декодер видео обрабатывает выборки p 0 и p 1 . В противном случае, декодер видео обрабатывает только выборку p 0 . Аналогичным образом, для правой стороны, декодер видео проверяет условия в Ур. (4-2) для определения, обрабатывается ли выборка q 1 в дополнение к выборке q 0 . Так как решение по числу выборок, подлежащих обработке, принимается независимо на каждой стороне сегмента, можно обработать одну выборку на одной стороне и две выборки на другой стороне.[0092] In the normal filtering mode for luma, the video decoder processes one or two samples on each side of segment 160. For the left side of segment 160, for example, the video decoder checks the conditions in Eq. (4-1). If the conditions are met, then the video decoder processes the samples p 0 and p 1 . Otherwise, the video decoder only processes the sample p 0 . Similarly, for the right side, the video decoder checks the conditions in Ur. (4-2) to determine if sample q 1 is being processed in addition to sample q 0 . Since the number of samples to be processed is decided independently on each side of the segment, it is possible to process one sample on one side and two samples on the other side.

Figure 00000004
Figure 00000004

Для обработки p 0 и q 0 , сначала вычисляется промежуточное значение δ, как в Ур. (5).To process p 0 and q 0 , an intermediate value δ is first calculated, as in Eq. (5).

Figure 00000005
Figure 00000005

[0093] Если абсолютное значение δ больше или равно 10-кратному tC, то граница рассматривается, как естественный край, который должен быть сохранен, и декодер видео не выполняет фильтрацию устранения блочности на текущей строке. В противном случае, декодер видео ограничивает δ в диапазоне от -tC до tC, как показано в Ур. (6).[0093] If the absolute value of δ is greater than or equal to 10 times t C , then the boundary is considered as a natural edge to be preserved, and the video decoder does not perform deblocking filtering on the current line. Otherwise, the video decoder limits δ in the range -t C to t C , as shown in Eq. (6).

Figure 00000006
Figure 00000006

[0094] Декодер видео обновляет значения p 0 и q 0 до p 0 ' и q 0 ' , соответственно, путем суммирования и вычитания Δ0, как показано в Ур. (7-1) и (7-2).[0094] The video decoder updates the values of p 0 and q 0 to p 0 ' and q 0 ' , respectively, by adding and subtracting Δ 0 as shown in Eq. (7-1) and (7-2).

Figure 00000007
Figure 00000007

[0095] Чтобы обработать вторую выборку на каждой стороне сегмента 164, т.е., p 1 и q 1 , декодер видео использует Ур. (8-1) и (8-2), чтобы получить обновленные значения p 1 ' и q 1 ' .[0095] To process the second sample on each side of segment 164, i.e., p 1 and q 1 , the video decoder uses Eq. (8-1) and (8-2) to get the updated p 1 ' and q 1 ' values.

Figure 00000008
Figure 00000008

[0096] Декодер видео выполняет фильтрацию устранения блочности для цветности путем определения значения силы границы, но без выполнения какого-либо анализа значений выборок. Декодер видео обрабатывает только первую выборку на каждой стороне сегмента, т.е., p 0 и q 0 , с помощью Ур. (7-1) и (7-2), где дельта Δ0 вычисляется, как в Ур. (9).[0096] The video decoder performs chrominance deblocking filtering by determining the edge strength value, but without performing any analysis of the sample values. The video decoder processes only the first sample on each side of the segment, i.e., p 0 and q 0 , using Eq. (7-1) and (7-2), where delta Δ 0 is calculated as in Eq. (9).

Figure 00000009
Figure 00000009

[0097] Чтобы избежать избыточной фильтрации, декодер видео вычисляет два параметра β и tC. Декодер видео использует порог β, чтобы управлять способом, которым выполняется устранение блочности, например, следует ли устранять блочность для сегмента, следует ли использовать интенсивный или нормальный режим фильтрации, и/или следует ли обрабатывать одну или две выборки на одной стороне сегмента. Если β или масштабированное β достигается или превышается (см. Ур. (1), (2) и (4)), что означает большее изменение локальных значений выборки, то устранение блочности имеет тенденцию быть более консервативным, чтобы сохранить подробности в исходном изображении. В противном случае, локальные значения выборки изменяются меньше (т.е., более гладкие), и декодер видео выполняет фильтрацию устранения блочности более агрессивным образом.[0097] To avoid excessive filtering, the video decoder calculates two parameters β and t C . The video decoder uses a threshold β to control the way deblocking is performed, such as whether to deblock a segment, whether to use heavy or normal filtering mode, and/or whether to process one or two samples on one side of a segment. If β or scaled β is reached or exceeded (see Eq. (1), (2) and (4)), which means more change in local sample values, then deblocking tends to be more conservative to preserve detail in the original image. Otherwise, the local sample values change less (ie, smoother) and the video decoder performs deblocking filtering in a more aggressive manner.

[0098] Декодер видео использует значение отсечения tC, главным образом, чтобы управлять максимальным изменением величины выборки, за исключением Ур. (2-5) и (2-6). В HEVC, например, в нормальном режиме фильтрации или фильтрации для цветности, изменение величины выборки ограничивается так, что изменение не превышает ±tC для первой выборки на одной стороне сегмента (применимо к яркости и цветности), или ±tC/2 для второй выборки (применимо только к яркости). В HEVC, для интенсивного режима фильтрации, где подразумевается большее изменение в величине, максимальное изменение ограничивается до ±2tC для трех выборок, обработанных на каждой стороне сегмента.[0098] The video decoder uses the cutoff value tC, mainly to control the maximum change in sample size, with the exception of Eq. (2-5) and (2-6). In HEVC, for example, in normal or chrominance filtering mode, the change in sample size is limited such that the change does not exceed ±tC for the first sample on one side of the segment (applicable to luma and chrominance), or ±tC/2 for the second sample (only applies to brightness). In HEVC, for heavy filtration mode, where a larger change in magnitude is implied, the maximum change is limited to ±2tC for three samples processed on each side of the segment.

[0099] Значения β и t C , главным образом, зависят от значений параметра квантования (QP) из левого P-блока и правого Q-блока. Более конкретно, декодер видео может использовать среднее QP из P и Q, обозначенное как QP ave = (QP P +QP Q +1)>>1, как индекс для поиска двух 1-D таблиц поиска (LUT) для β и t C , соответственно. Хотя индекс поиска для нахождения значения t C может настраиваться путем прибавления двух, т.е., (QP ave +2), если сила границы равна 2, преобладающим фактором, определяющим значения β и t C , все еще является QPave. В обоих LUT, значения элементов записи монотонно возрастают с увеличением значения индексов поиска, что означает, что чем выше QPave, тем большие значения будут иметь β и t C . Таким образом, более вероятно выбирается более интенсивная фильтрация устранения блочности, и допускается большее изменение величины. Более низкое QP, напротив, приводит к меньшим или даже к нулевым значениям для β и t C . При кодировании с низким QP, картинка, как правило, имеет меньше артефактов блочности или имеет менее выраженные артефакты блочности и поэтому требует в меньшей степени устранения блочности или даже не требует его.[0099] The values of β and t C mainly depend on the values of the quantization parameter (QP) from the left P-box and the right Q-box. More specifically, the video decoder may use the average QP of P and Q, denoted as QP ave = ( QP P + QP Q +1)>>1, as an index to look up two 1-D lookup tables (LUTs) for β and t C , respectively. Although the search index for finding the value of t C can be tuned by adding two, i.e., ( QP ave +2) if the boundary strength is 2, the predominant factor determining the values of β and t C is still QP ave . In both LUTs, the element values increase monotonically as the search indexes increase, which means that the higher the QP ave , the larger the values of β and t C will be. Thus, more intense deblocking filtering is more likely to be selected, and a larger change in magnitude is allowed. Lower QP, on the contrary, leads to smaller or even zero values for β and t C . When encoded at low QP, the picture generally has less blocking artifacts or less pronounced blocking artifacts and therefore requires less or no deblocking.

[0100] Индексы, используемые для поиска β и t C в LUT, обозначенные как idxβ и idx tc , могут дополнительно настраиваться двумя параметрами tc_offset_div2 и beta_offset_div2, соответственно (см. уравнения (10-1) и (10-2)),[0100] The indexes used to search for β and t C in the LUT, denoted as idx β and idx tc , can be further configured by two parameters tc_offset_div2 and beta_offset_div2, respectively (see equations (10-1) and (10-2)),

Figure 00000010
Figure 00000010

Figure 00000011
Figure 00000011

где tc_offset_div2 и beta_offset_div2 отправляются в заголовке вырезки или в наборе параметров картинки (PPS). Это позволяет кодеру адаптировать интенсивность устранения блочности в зависимости от характеристик последовательности, режима кодирования и других факторов.where tc_offset_div2 and beta_offset_div2 are sent in the slice header or picture parameter set (PPS). This allows the encoder to adapt the deblocking rate depending on the characteristics of the sequence, the coding mode, and other factors.

[0101] Устранение блочности согласно HEVC имеет две последовательных стадии, которые могут обеспечивать возможность параллелизации. На первой стадии, декодер видео фильтрует все вертикальные границы блока, и на второй стадии, декодер видео фильтрует все горизонтальные границы блока. На второй стадии, выборки, используемые для принятия решения о режиме и фильтрации, являются выходами первой стадии. На каждой стадии, где границы, подвергаемые устранению блочности, все являются параллельными и отстоят по меньшей мере на 8 выборок, выборки, задействованные в устранении блочности одной границы, не перекрываются с выборками, задействованными в устранении блочности любых других границ. В этом контексте, выборки, задействованные в устранении блочности одной границы, включают в себя до трех выборок, подлежащих фильтрации на каждой стороне границы, и до четырех выборок на каждой стороне для поддержки принятия решения о фильтрации и режиме, и поэтому устранение блочности одной границы может выполняться параллельно с любыми другими границами.[0101] Deblocking according to HEVC has two consecutive stages, which can enable parallelization. In the first stage, the video decoder filters all vertical block boundaries, and in the second stage, the video decoder filters all horizontal block boundaries. In the second stage, the samples used to make the mode and filter decisions are the outputs of the first stage. At each stage where the deblocking boundaries are all parallel and at least 8 samples apart, the deblocking samples of one boundary do not overlap with the deblocking samples of any other boundaries. In this context, the samples involved in single boundary deblocking include up to three samples to be filtered on each side of the boundary and up to four samples on each side to support filtering and mode decision making, and therefore single boundary deblocking can run in parallel with any other boundaries.

[0102] HEVC-фильтр устранения блочности фильтрует выборки вблизи границы блока и отсекает изменения в величинах выборки, которые больше, чем пороговые величины. HEVC-фильтр устранения блочности работает в трех режимах с тремя разными уровнями интенсивности фильтра. Три режима, или интенсивности фильтра, упоминаются как сильный, нормальный и нулевой (т.е., отсутствует фильтрация), с возрастающими локальными активностями выборки вблизи границы блока (см. уравнения (1) и (2-1)-(2-6)). В сильном режиме фильтрации, HEVC-фильтр устранения блочности фильтрует три выборки на каждой стороне границы блока путем фильтрации нижних частот (см. уравнения (3-1)-(3-3)). Для нормального режима фильтрации, HEVC-фильтр устранения блочности фильтрует по меньшей мере выборку, ближайшую к границе, и на каждой стороне границы может также фильтровать вторую ближайшую выборку, если внутренние выборки достаточно гладкие (см. уравнения (4-1) и (4-2)). HEVC-фильтр устранения блочности выполняет отсечение, контролируемое параметром tC. Для сильной фильтрации, изменение величины выборки ограничивается, чтобы не превышать 2tC. Для нормальной фильтрации, изменения величины первой и второй выборок ограничиваются, чтобы не превышать tC и tC/2, соответственно (см. Ур. (6)-(8-2)). Разные значения силы границы создают различие в tC, т.е., сегмент с силой границы, равной 2, имеет большее tC, чем сегмент с силой границы, равной 1.[0102] The HEVC deblocking filter filters samples near a block boundary and clips changes in sample values that are greater than the threshold values. The HEVC deblocking filter operates in three modes with three different filter intensity levels. The three modes, or filter intensities, are referred to as strong, normal, and zero (i.e., no filtering), with increasing local sampling activities near the block boundary (see equations (1) and (2-1)-(2-6 )). In the strong filtering mode, the HEVC deblocking filter filters three samples on each side of the block boundary by low-pass filtering (see Equations (3-1)-(3-3)). For normal filtering mode, the HEVC deblocking filter filters at least the sample closest to the boundary, and on each side of the boundary may also filter the second closest sample if the inner samples are smooth enough (see Equations (4-1) and (4- 2)). The HEVC deblocking filter performs a clipping controlled by the parameter t C . For strong filtering, the change in sample size is limited to not exceed 2t C . For normal filtering, the magnitude changes of the first and second samples are limited to not exceed t C and t C /2, respectively (see Eq. (6)-(8-2)). Different border strength values create a difference in t C , i.e., a segment with a border strength of 2 has a larger t C than a segment with a border strength of 1.

[0103] HEVC-фильтр устранения блочности по существу следует общей схеме устранения блочности согласно H.264/AVC и наследует основные признаки фильтра устранения блочности согласно H.264/AVC, такие как определения силы границы на основе условий кодирования, многоуровневые интенсивности фильтрации от сильной до нулевой, QP и сила границы, зависимая от параметров β и t C . По сравнению с H.264/AVC-фильтром устранения блочности, вновь разработанные элементы в HEVC-фильтре устранения блочности позволяют осуществлять более простую параллельную обработку и лучше приспособлены к структуре кодирования крупноразмерных блоков HEVC, но ненамного улучшают эффективность кодирования. Поэтому устранение блочности в HEVC, которое рассматривалось как хороший компромисс между вычислительной сложностью и эффективностью кодирования во время финализации HEVC, может быть чрезмерно упрощенным, с учетом возможностей современных высокоразвитых аппаратных средств. Методики настоящего раскрытия потенциально извлекают выгоду из больших аппаратных вычислительных ресурсов для достижения существенного улучшения эффективности кодирования, поддерживая при этом удобную для параллелизации структуру.[0103] The HEVC deblocking filter essentially follows the general H.264/AVC deblocking scheme and inherits the main features of the H.264/AVC deblocking filter, such as edge strength determinations based on coding conditions, multi-level filtering strengths from strong to zero, QP and the strength of the boundary, depending on the parameters β and t C . Compared with the H.264/AVC deblocking filter, the newly developed elements in the HEVC deblocking filter allow easier parallel processing and are better adapted to the HEVC jumbo block coding structure, but do not greatly improve coding efficiency. Therefore, HEVC deblocking, which has been seen as a good compromise between computational complexity and coding efficiency during HEVC finalization, may be oversimplified given the capabilities of today's highly advanced hardware. The techniques of the present disclosure potentially benefit from large hardware computing resources to achieve significant improvements in coding efficiency while maintaining a parallelization-friendly structure.

[0104] Настоящее раскрытие предлагает методики, которые могут улучшить аспекты фильтрации устранения блочности, включая HEVC-фильтрацию устранения блочности. Один пример недостатка HEVC-фильтрации устранения блочности состоит в том, что использование только трех уровней для представления гладкости области границы, соответствующих трем уровням интенсивности фильтрации, может быть слишком грубым. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что только две из четырех строк сегмента используются в решении о режиме устранения блочности и выборе фильтра, и в каждой строке используются только четыре выборки с каждой стороны. Так как размер блока кодека видео следующего поколения может составлять до 128×128 или даже больше, использование такой малой части выборок для решения о режиме не может точно отражать реальную активность области границы и может быть чувствительным к шуму.[0104] The present disclosure provides techniques that can improve aspects of deblocking filtering, including HEVC deblocking filtering. One example of a disadvantage of HEVC deblocking filtering is that using only three levels to represent the smoothness of the boundary region corresponding to three levels of filtering intensity can be too coarse. Another example of a disadvantage of HEVC deblocking filtering is that only two of the four segment rows are used in the deblocking mode decision and filter selection, and only four samples per side are used per row. Since the next generation video codec block size can be up to 128×128 or even larger, using such a small fraction of samples for mode decision may not accurately reflect the actual activity of the boundary region and may be noise sensitive.

[0105] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что выборки, подлежащие фильтрации на каждой стороне сегмента, могут включать в себя 3 выборки или одну выборку, что может быть недостаточно для обеспечения хороших результатов для устранения блочности большого блока. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что существуют, в общем, пять предопределенных 4-отводных или 5-отводных фильтров, предварительно назначаемых трем выборкам в интенсивном режиме фильтрации (см. уравнения (3-1)-(3-3)) и двум выборкам в нормальном режиме фильтрации (см. уравнения (5)-(8-2)), соответственно. Ограниченное число опций, короткая длина и негибкость в выборе HEVC-фильтра устранения блочности могут обусловить низкую эффективность в устранении блочности.[0105] Another example of the disadvantage of HEVC deblocking filtering is that the samples to be filtered on each side of the segment may include 3 samples or one sample, which may not be enough to provide good results for large block deblocking. Another example of the disadvantage of HEVC deblocking filtering is that there are, in general, five predefined 4-tap or 5-tap filters pre-assigned to three samples in the heavy filtering mode (see Equations (3-1)-(3- 3)) and two samples in the normal filtering mode (see equations (5)-(8-2)), respectively. The limited number of options, short length, and inflexibility in the selection of the HEVC deblocking filter can result in poor deblocking performance.

[0106] Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что сегменты с различными силами границы могут иметь довольно различные локальные активности, но совместно используют те же самые фильтры устранения блочности, хотя значение отсечения больше для силы границы, равной 2. Другой пример недостатка HEVC-фильтрации устранения блочности состоит в том, что HEVC-фильтр устранения блочности не дифференцирует P-блок и Q-блок. Интенсивность фильтрации определяется средним второй производной P и Q (см. уравнения (1) и (2-1)-(2-2)), и значения параметров β и t C зависят от среднего QP P и Q. Могут иметь место потери эффективности в обработке P-блока и Q-блока одинаково для сценариев кодирования, где один из P-блока или Q-блока может быть гладким, а другой обогащен деталями, что не является необычным сценарием.[0106] Another example of a disadvantage of HEVC deblocking filtering is that segments with different edge strengths can have quite different local activities but share the same deblocking filters, although the cutoff value is larger for a border strength of 2. Another An example of a disadvantage of HEVC deblocking filtering is that the HEVC deblocking filter does not differentiate between a P-box and a Q-box. The filtration intensity is determined by the average of the second derivative of P and Q (see equations (1) and (2-1)-(2-2)), and the values of the parameters β and t C depend on the average QP P and Q. Losses in efficiency may occur. in P-box and Q-box processing is the same for coding scenarios, where one of the P-box or Q-box can be smooth and the other is rich in detail, which is not an uncommon scenario.

[0107] Настоящее раскрытие предлагает различные методики потенциального улучшения производительности фильтрации устранения блочности, используемой для кодирования видео или обработки видео. В соответствии с одним примером, декодер 300 видео может быть выполнен с возможностью выполнять анализ фильтра (например, выбор фильтра или адаптацию интенсивности фильтра) на основе параметров разбиения блока. В одном примере, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, длина блока, выровненного с фильтруемой границей, влияет на процесс принятия решения, например, позволяет осуществлять пространственную суб-дискретизацию граничных выборок, используемых для принятия решения о фильтре.[0107] The present disclosure proposes various techniques for potentially improving the performance of deblocking filtering used for video coding or video processing. According to one example, video decoder 300 may be configured to perform filter analysis (eg, filter selection or filter intensity adaptation) based on block splitting parameters. In one example, video decoder 300 may be configured to determine a deblocking filter length and filter support (eg, downsampling filter support) based on a block length orthogonal to a filtered boundary. In another example, the length of the block aligned with the filtered boundary influences the decision process, such as allowing spatial sub-sampling of the boundary samples used to make the filter decision.

[0108] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью адаптировать доверительный интервал выходной выборки, также известный как коэффициент Tc, как функцию параметров разбиения блока (например, размеров) и связанного положения в пределах блока текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. Tc ограничивает отклонение, положительное или отрицательное, значения выборки, подвергаемой устранению блочности, от декодированной выборки и вводится в процесс устранения блочности.[0108] According to another example, the video decoder 300 may be configured to adapt the output sample confidence interval, also known as the Tc coefficient, as a function of the block partition parameters (e.g., sizes) and associated position within the block of the current sample being processed, to which the limitation parameter Tc is applied. Tc limits the deviation, positive or negative, of the deblocking sample value from the decoded sample, and is input to the deblocking process.

[0109] В соответствии с другим примером, декодер 300 видео может быть выполнен с возможностью использования параметров обрабатываемого блока (размера блока), чтобы ограничить набор выборок, доступный для процесса принятия решения и фильтрации, при сохранении структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения. В соответствии с другим примером, декодер 300 видео может использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки. В соответствии с другим примером, декодер 300 видео может использовать параметры квантования P- и Q-блоков для установки порогов по выбору фильтра P и Q независимо.[0109] According to another example, the video decoder 300 may be configured to use processing block parameters (block size) to limit the set of samples available to the decision and filter process while maintaining the structure of the decision and filter process. The video decoder 300 may generate samples that are required for the filtering process but are not available due to limitations using a given process, such as an extrapolation or padding process. According to another example, video decoder 300 may use transform properties such as transform type/basic function information and transform coefficients signaled as non-zero to video decoder 300 and therefore present in the reconstructed block of samples to select deblocking filter parameters. , such as filter type, filter length, Tc clipping parameters, skip space spacing. According to another example, video decoder 300 may use the P- and Q-block quantization parameters to set the P and Q filter selection thresholds independently.

[0110] В одном примере, для границы блоков, разделяющей блоки различных размеров, декодер 300 видео может принять решение об асимметричной фильтрации устранения блочности. Например, когда граница блоков разделяет блоки различного размера, декодер 300 видео может выбрать асимметричный фильтр устранения блочности.[0110] In one example, for a block boundary separating blocks of different sizes, video decoder 300 may decide on asymmetric deblocking filtering. For example, when a block boundary separates blocks of different sizes, video decoder 300 may select an asymmetric deblocking filter.

[0111] В другом примере, если декодер 300 видео определяет, что должен использоваться асимметричный фильтр, то процесс устранения блочности с обеих сторон от границы может быть различным. Например, параметры фильтра устранения блочности, такие как длина отводов, коэффициент фильтра, процесс отсечения или нормализации могут быть разными на обеих сторонах фильтруемой границы. Дополнительно или альтернативно, параметры для процессов принятия решения, такие как длина отводов фильтра анализа, коэффициенты фильтра анализа, отсечение, нормализация или пороги, могут быть различными на обеих сторонах фильтруемой границы.[0111] In another example, if the video decoder 300 determines that an asymmetric filter should be used, then the deblocking process on both sides of the boundary may be different. For example, deblocking filter parameters such as tap length, filter factor, clipping or normalization process may be different on both sides of the filtered boundary. Additionally or alternatively, parameters for decision processes such as analysis filter tap lengths, analysis filter coefficients, cutoff, normalization, or thresholds may be different on both sides of the filtered boundary.

[0112] В другом примере, декодер 300 видео может определять параметры для асимметричной фильтрации на основе одного или более параметров режима кодирования блоков на границе. Примеры таких параметров режима кодирования включают в себя режим кодирования, режим предсказания, тип вырезки или другие такие параметры.[0112] In another example, video decoder 300 may determine parameters for asymmetric filtering based on one or more block coding mode parameters at the boundary. Examples of such coding mode parameters include coding mode, prediction mode, slice type, or other such parameters.

[0113] Далее будут описаны неограничивающие примеры реализаций методик, введенных выше. В одном примере, процесс анализа фильтра (выбор фильтра или адаптация интенсивности фильтрации) расширяется, чтобы включать в себя параметры разбиения блока. Например, декодер 300 видео может быть выполнен с возможностью определять длину фильтра устранения блочности и поддержку фильтра (например, поддержку фильтра пониженной дискретизации) на основе длины блока, ортогонального фильтруемой границе. В другом примере, декодер 300 видео может быть выполнен с возможностью принятия решения на основе длины блока, выровненного с фильтруемой границей, так что допускается пространственная суб-дискретизация граничных выборок, используемых для принятия решения о фильтре.[0113] Non-limiting examples of implementations of the techniques introduced above will now be described. In one example, the filter analysis process (filter selection or filter intensity adaptation) is extended to include block splitting parameters. For example, video decoder 300 may be configured to determine a deblocking filter length and filter support (eg, downsampling filter support) based on a block length orthogonal to a filtered boundary. In another example, video decoder 300 may be configured to make a decision based on a block length aligned with a filtered boundary such that spatial sub-sampling of the boundary samples used to make a filter decision is allowed.

[0114] Приведенный ниже псевдокод обеспечивает примерную реализацию выведения параметров устранения блочности, выполняемого декодером 300 видео:[0114] The following pseudo-code provides an exemplary implementation of the deblocking parameter derivation performed by the video decoder 300:

VERT_SAMPLE_SKIP является переменной, определяющей параметры пространственной повторной дискретизации (число пропущенных выборок), задающие число выборок, используемых для классификации граничных выборок.VERT_SAMPLE_SKIP is a variable defining the spatial resampling parameters (number of skipped samples) that specifies the number of samples used to classify edge samples.

DB_BLOCK_SIZE_CLASSIFIER является переменной, определяющей число выборок, используемых для классификации граничных выборок.DB_BLOCK_SIZE_CLASSIFIER is a variable that specifies the number of samples used to classify edge samples.

Функцией является SmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)The function is SmoothAsymArea(const CodingUnit& cu, const DeblockEdgeDir edgeDir, const Position& localPos)

Figure 00000012
Figure 00000012

Figure 00000013
Figure 00000013

[0115] В примерах, приведенных выше, pSrcP может, например, представлять указатель на блок на одной стороне границы, подлежащей фильтрации устранения блочности, и pSrcQ может представлять указатель на блок на другой стороне границы, подлежащей фильтрации устранения блочности.[0115] In the examples above, pSrcP may, for example, represent a pointer to a block on one side of the boundary to be deblocked, and pSrcQ may represent a pointer to a block on the other side of the boundary to be deblocked.

[0116] Декодер 300 видео может быть выполнен с возможностью определять доверительный интервал выходной выборки, также известный как коэффициент Tc, для ограничения отклонения значения выборки, подвергаемой устранению блочности, от декодированной выборки. Tc может вводиться в процесс устранения блочности. Декодер 300 видео может быть выполнен с возможностью адаптировать Tc как функцию параметров разбиения блока, таких как размер блока, и связанного положения внутри блока или в пределах фильтруемой границы текущей обрабатываемой выборки, к которой применяется параметр ограничения Tc. В одном примере, связанное положение текущей обрабатываемой выборки является местоположением текущей обрабатываемой выборки относительно фильтруемой границы.[0116] The video decoder 300 may be configured to determine an output sample confidence interval, also known as a coefficient Tc, to limit the deviation of the deblocked sample value from the decoded sample. Tc may be introduced into the deblocking process. Video decoder 300 may be configured to adapt Tc as a function of block splitting parameters, such as block size, and an associated position within a block or within a filtered boundary of the current processing sample to which the Tc constraint parameter is applied. In one example, the associated position of the current sample being processed is the location of the current sample being processed relative to the filtered boundary.

[0117] В одной примерной реализации, параметр ограничения Tc может быть определен как функция связанного положения текущей фильтруемой строки/столбца в пределах фильтруемой границы, где i является индексом текущей обрабатываемой строки/столбца фильтруемой границы, начиная с верхнего/правого местоположения границы, соответственно.[0117] In one exemplary implementation, the constraint parameter Tc can be defined as a function of the associated position of the current filtered row/column within the filtered boundary, where i is the index of the currently processed row/column of the filtered boundary, starting from the top/right boundary location, respectively.

[0118] Приведенный ниже псевдокод обеспечивает примерную реализацию применения Tc:[0118] The following pseudo-code provides an exemplary implementation of the application of Tc:

Figure 00000014
Figure 00000014

В некоторых примерах, значение Tc может определяться для блока как функция положения, связанного с верхним-левым положением текущего обрабатываемого блока:In some examples, the value of Tc may be determined for a block as a function of the position associated with the top-left position of the currently processed block:

y=coordinateCurrentlyProcessedSample.y -y=coordinateCurrentlyProcessedSample.y -

coordinateTopLeftSampleOfBlock.y;coordinateTopLeftSampleOfBlock.y;

x=coordinateCurrentlyProcessedSample.x -x=coordinateCurrentlyProcessedSample.x -

coordinateTopLeftSampleOfBlock.x;coordinateTopLeftSampleOfBlock.x;

delta1=Clip3(-tc2[y][x], tc2[y][x], delta[y][x]);delta1=Clip3(-tc2[y][x], tc2[y][x], delta[y][x]);

[0119] Декодер 300 видео может быть выполнен с возможностью использовать параметры обрабатываемого блока, такие как размер блока, чтобы ограничивать набор выборок, доступный для процесса принятия решения и фильтрации, с сохранением структуры процесса принятия решения и фильтрации. Декодер 300 видео может формировать выборки, которые требуются для процесса фильтрации, но не доступны вследствие ограничений, использующих заданный процесс, такой как экстраполяция или процесс заполнения.[0119] The video decoder 300 may be configured to use processing block parameters, such as block size, to limit the set of samples available to the decision and filter process while maintaining the structure of the decision and filter process. The video decoder 300 may generate samples that are required for the filtering process but are not available due to limitations using a given process, such as an extrapolation or padding process.

[0120] Приведенный ниже псевдокод обеспечивает примерную реализацию. В некоторых реализациях, может быть определена группа фильтров для обработки границы. Выбор фильтра может быть основан на объединении размеров блока, смежных на границе блока, и результата классификации граничных выборок.[0120] The following pseudo-code provides an exemplary implementation. In some implementations, a filter group may be defined to handle the border. The choice of the filter may be based on the union of the block sizes adjacent at the block boundary and the classification result of the boundary samples.

DB_FILTER_BLOCK_SIZE1, DB_FILTER_BLOCK_SIZE2 and DB_FILTER_BLOCK_SIZE3 являются переменными, каждая из которых определяет число выборок, используемых для фильтрации граничных выборок, определяя поддержку фильтров, например, 3 фильтров.DB_FILTER_BLOCK_SIZE1, DB_FILTER_BLOCK_SIZE2 and DB_FILTER_BLOCK_SIZE3 are variables, each of which defines the number of samples used to filter edge samples, defining filter support, for example 3 filters.

Figure 00000015
Figure 00000015

Figure 00000016
Figure 00000016

[0121] Декодер 300 видео может быть выполнен с возможностью использовать свойства преобразования, такие как информация о типе преобразования/базисной функции, и коэффициенты преобразования, сигнализированные как ненулевые декодеру 300 видео и, следовательно, присутствующие в восстановленном блоке выборок, чтобы выбрать параметры фильтра устранения блочности, такие как тип фильтра, длина фильтра, параметры ограничения Tc, пространственный шаг пропуска выборки.[0121] Video decoder 300 may be configured to use transform properties, such as transform type/basis function information, and transform coefficients signaled as non-zero to video decoder 300 and therefore present in the reconstructed block of samples, to select elimination filter parameters. blockiness, such as filter type, filter length, Tc constraint parameters, skip spacing.

[0122] Представленный ниже псевдокод обеспечивает примерную реализацию. Предположим, что кодер 200 видео и декодер 300 видео используют набор множества преобразований, например {T1,T2,T3}, причем кодер 200 видео выбирает оптимальное преобразование, применимое к горизонтальному и вертикальному направлениям. В декодере 300 видео, применимость преобразования к горизонтальному/вертикальному направлению может быть выведена из синтаксических элементов битового потока. Процесс выведения, используемый в WD VVC (Draft 2), специфицирован ниже.[0122] The following pseudo-code provides an exemplary implementation. Assume that video encoder 200 and video decoder 300 use a set of multiple transforms, such as {T1,T2,T3}, where video encoder 200 selects the optimal transform applicable to the horizontal and vertical directions. In the video decoder 300, the applicability of the transform to the horizontal/vertical direction can be inferred from the syntax elements of the bitstream. The inference process used in WD VVC (Draft 2) is specified below.

Таблица 1. Таблица отображения преобразования и сигнализацииTable 1 Conversion and signaling display table MTS_CU
_flag
MTS_CU
_flag
MTS_Hor
_flag
MTS_Hor
_flag
MTS_Ver
_flag
MTS_Ver
_flag
ИнтраIntra ИнтерInter
Горизон-
тальное
Horizon-
tal
Верти-
кальное
verti-
caloric
Горизон-
тальное
Horizon-
tal
Верти-
кальное
verti-
caloric
00 DCT2DCT2 11 00 00 DST7DST7 DST7DST7 DCT8DCT8 DCT8DCT8 00 11 DCT8DCT8 DST7DST7 DST7DST7 DCT8DCT8 11 00 DST7DST7 DCT8DCT8 DCT8DCT8 DST7DST7 11 11 DCT8DCT8 DCT8DCT8 DST7DST7 DST7DST7

[0123] Следующий псевдокод может быть использован для выведения параметров фильтра устранения блочности:[0123] The following pseudo-code can be used to derive deblocking filter parameters:

Figure 00000017
Figure 00000017

}}

[0124] Ниже приведен пример функции ApplyDeblockingProcessType1. Структура других функций, например, функций устранения блочности, может также следовать подобному шаблону.[0124] The following is an example of the ApplyDeblockingProcessType1 function. The structure of other functions, such as deblocking functions, may also follow a similar pattern.

ApplyDeblockingProcessType1()ApplyDeblockingProcessType1()

{{

1. Вывести длину классификатора на основе размера блока, ортогонального границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.1. Derive the classifier length based on the block size orthogonal to the block boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.

2. Вывести длину устранения блочности на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.2. Derive the deblocking length based on the block size orthogonal to the deblocking boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.

3. Вывести выборки, пропускаемые во время процесса классификатора или устранения блочности, на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.3. Derive the samples skipped during the classifier or deblocking process based on the block size orthogonal to the deblocking boundary, the transform type, and the index of non-zero encoded transform coefficients and local activity score.

4. Вывести параметры устранения блочности, такие как Tc, локальные пороги, настройка QP на основе размера блока, ортогонального к границе блочности, типа преобразования и индекса ненулевых кодированных коэффициентов преобразования и оценки локальной активности.4. Derive deblocking parameters such as Tc, local thresholds, QP tuning based on block size orthogonal to deblocking boundary, transform type and index of non-zero encoded transform coefficients, and local activity estimate.

[0125] Декодер 300 видео может быть выполнен с возможностью использовать параметры квантования P- и Q-блоков для установки порогов по выбору P- и Q-фильтра независимо.[0125] The video decoder 300 may be configured to use the P- and Q-block quantization parameters to set the P- and Q-filter selection thresholds independently.

iQPp=cuP.qp; iQPp=cuP.qp;

iQPq=cuQ.qp; iQPq=cuQ.qp;

[0126] Следующий псевдокод задан для параметров P-блока. Обработка для Q-блока может быть сходной.[0126] The following pseudo-code is defined for the P-box parameters. The processing for the Q-block may be similar.

Figure 00000018
Figure 00000018

[0127] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими раскрытыми здесь признаками.[0127] In yet another example, the following implementation of position-dependent deblocking can be used in conjunction with other features disclosed here.

[0128] Пусть numberQSide и numberPSide представляют собой длины фильтров, применяемых к текущей строке. Как введено выше, длина фильтра numberPSide и numberQSide может быть основана на размере блока. В этом примере, используются два фильтра, которые применяются, чтобы фильтровать 7 и 3 пиксела границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.[0128] Let numberQSide and numberPSide be the lengths of the filters applied to the current row. As introduced above, the numberPSide and numberQSide filter lengths can be based on the block size. In this example, two filters are used to filter 7 and 3 pixels of the box border. Position-dependent clipping value parameters are expressed in terms of tables Tc7 and Tc3.

Figure 00000019
Figure 00000019

[0129] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” или “refQ” представляет значение линейных объединений выборок на одной стороне (стороне P- или Q-блока) границы блока или отфильтрованное значение на одной стороне (стороне P- или Q-блока) границы блока. “refMiddle” представляет значение линейных объединений выборок на обеих сторонах границы блока, или отфильтрованное значение на обеих сторонах границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного для устранения блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс/минус порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.[0129] In the above example, "Src=piSrcP[-iOffSet*thePos]" illustrates the value of the sample before deblocking filtering. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” illustrates the application of the deblocking filtering operation. “refP” or “refQ” represents the value of the linear unions of the samples on one side (P- or Q-box side) of the box boundary, or the filtered value on one side (P- or Q-box side) of the box boundary. "refMiddle" represents the value of the linear unions of the samples on both sides of the block boundary, or the filtered value on both sides of the block boundary. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” illustrates clipping the deblocking filtered value in the range src- value and src+cvalue which is the sample value before filtering plus/minus the cvalue threshold, where the cvalue is adapted based on the sample location and block size.

[0130] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборкам на каждой стороне границы P- и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.[0130] As discussed above, video decoder 300 may determine numberQSide and numberPSide based on the block size to which deblocking filtering is applied. refMiddle represents the value after applying the filter to the samples on each side of the P- and Q-box boundary. refP and refQ represent the values after filters have been applied to the samples in the P-box and Q-box.

[0131] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.[0131] In yet another example, the following implementation of position-dependent deblocking can be used in conjunction with the other features described here.

[0132] Пусть numberQSide и numberPSide являются длиной фильтра, применяемого к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры значения позиционно-зависимого отсечения выражены посредством таблиц Tc7 и Tc3.[0132] Let numberQSide and numberPSide be the length of the filter applied to the current row. This example uses two filters applied to filter 7 and 3 pixels of the box border. Position-dependent clipping value parameters are expressed by tables Tc7 and Tc3.

Figure 00000020
Figure 00000020

Figure 00000021
Figure 00000021

[0133] В приведенном выше примере, “Src=piSrcP[-iOffSet*thePos]” иллюстрирует значение выборки перед фильтрацией устранения блочности. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” иллюстрирует применение операции фильтрации устранения блочности. “refP” и “refMiddle” являются примерами линейных объединений выборок на одной стороне границы блока или отфильтрованных пикселов на одной стороне границы блока. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” иллюстрирует отсечение отфильтрованного с устранением блочности значения в диапазоне src-value и src+cvalue, которое является значением выборки перед фильтрацией плюс порог cvalue, где cvalue адаптируется на основе местоположения выборки и размера блока.[0133] In the above example, "Src=piSrcP[-iOffSet*thePos]" illustrates the value of the sample before deblocking filtering. “((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6)” illustrates the application of the deblocking filtering operation. “refP” and “refMiddle” are examples of linear unions of samples on one side of a box boundary, or filtered pixels on one side of a box boundary. “Clip3(src - cvalue, src+cvalue, ((refMiddle*dbCoeffsP[thePos] + refP * (64 - dbCoeffsP[thePos]) + 32) >> 6))” illustrates clipping the deblocked filtered value in the range src- value and src+cvalue which is the sample value before filtering plus a threshold cvalue where the cvalue is adapted based on the sample location and block size.

[0134] Как обсуждено выше, декодер 300 видео может определять numberQSide и numberPSide на основе размера блока, к которому применяется фильтрация устранения блочности. refMiddle представляет значение после применения фильтра к выборке на каждой стороне границы P-блока и Q-блока. refP и refQ представляют значения после применения фильтров к выборкам в P-блоке и Q-блоке.[0134] As discussed above, video decoder 300 may determine numberQSide and numberPSide based on the block size to which deblocking filtering is applied. refMiddle represents the value after applying the filter to the sample on each side of the P-box and Q-box boundary. refP and refQ represent the values after filters have been applied to the samples in the P-box and Q-box.

[0135] В еще одном примере, следующая реализация позиционно-зависимого устранения блочности может быть использована в объединении с другими описанными здесь признаками.[0135] In another example, the following implementation of position-dependent deblocking can be used in conjunction with other features described here.

[0136] Пусть numberQSide и numberPSide являются длинами фильтров, применяемых к текущей строке. В этом примере используются два фильтра, применяемые для фильтрации 7 и 3 пикселов границы блока. Параметры позиционно-зависимого значения отсечения выражены посредством таблиц Tc7 и Tc3.[0136] Let numberQSide and numberPSide be the lengths of the filters applied to the current row. This example uses two filters applied to filter out the 7 and 3 pixel borders of the box. The position dependent cutoff parameters are expressed in terms of tables Tc7 and Tc3.

Figure 00000022
Figure 00000022

[0137] В еще одном примере, следующее условие определения асимметричной фильтрации может быть использовано в объединении с другими раскрытыми здесь признаками.[0137] In yet another example, the following asymmetric filtering definition condition may be used in conjunction with other features disclosed herein.

Отключить длинный фильтр в асимметричном случае в зависимости от режимов предсказания P и Q.Disable long filter in asymmetric case depending on P and Q prediction modes.

Figure 00000023
Figure 00000023

Figure 00000024
Figure 00000024

[0138] Фиг. 6 представляет собой блок-схему, иллюстрирующую примерный кодер 200 видео, который может выполнять методики настоящего раскрытия. Фиг. 6 приведена в целях пояснения и не должна рассматриваться как ограничение методик, широко иллюстрируемых и описываемых в настоящем раскрытии. В целях пояснения, настоящее раскрытие описывает кодер 200 видео в контексте стандартов кодирования видео, таких как стандарт кодирования видео HEVC и разрабатываемый стандарт кодирования видео H.266. Однако методики настоящего раскрытия не ограничиваются этими стандартами кодирования видео и применимы в общем к кодированию и декодированию видео.[0138] FIG. 6 is a block diagram illustrating an exemplary video encoder 200 that may perform the techniques of the present disclosure. Fig. 6 is provided for purposes of explanation and should not be construed as limiting the techniques broadly illustrated and described in this disclosure. For purposes of explanation, the present disclosure describes the video encoder 200 in the context of video coding standards such as the HEVC video coding standard and the upcoming H.266 video coding standard. However, the techniques of the present disclosure are not limited to these video coding standards and apply in general to video coding and decoding.

[0139] В примере на фиг. 6, кодер 200 видео включает в себя память 230 данных видео, модуль 202 выбора режима, модуль 204 генерации остатка, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных картинок (DPB) и модуль 220 энтропийного кодирования.[0139] In the example of FIG. 6, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a reconstruction unit 214, a filter unit 216. , a decoded picture buffer (DPB) 218 , and an entropy encoding module 220 .

[0140] Память 230 данных видео может хранить данные видео, подлежащие кодированию компонентами кодера 200 видео. Кодер 200 видео может принимать данные видео, хранящиеся в памяти 230 данных видео, например, от источника 104 видео (фиг. 1). DPB 218 может действовать как память опорных картинок, которая хранит опорные данные видео для использования в предсказании последующих данных видео кодером 200 видео. Память 230 данных видео и DPB 218 могут быть образованы любым из множества устройств памяти, таких как динамическая память с произвольным доступом (DRAM), включая синхронную DRAM (SDRAM), магниторезистивную RAM (MRAM), резистивную RAM (RRAM) или другие типы устройств памяти. Память 230 данных видео и DPB 218 могут быть обеспечены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 230 данных видео может быть в чипе с другими компонентами кодера 200 видео, как иллюстрируется, или вне чипа относительно этих компонентов.[0140] The video data memory 230 may store video data to be encoded by the components of the video encoder 200. Video encoder 200 may receive video data stored in video data memory 230 from, for example, video source 104 (FIG. 1). DPB 218 may act as a reference picture memory that stores reference video data for use in prediction of subsequent video data by video encoder 200. Video data memory 230 and DPB 218 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. . Video data memory 230 and DPB 218 may be provided by the same memory device or by separate memory devices. In various examples, video data memory 230 may be on-chip with other components of video encoder 200, as illustrated, or off-chip with respect to those components.

[0141] В настоящем раскрытии, ссылка на память 230 данных видео не должна интерпретироваться как ограниченная памятью внутренней для кодера 200 видео, если только она специально не описана как таковая, или памятью внешней для кодера 200 видео, если только она специально не описана как таковая. Скорее, ссылка на память 230 данных видео должна пониматься как опорная память, которая хранит данные видео, которые кодер 200 видео получает для кодирования (например, данные видео для текущего блока, который должен кодироваться). Память 106 на фиг. 1 может также обеспечивать временное хранение выходных данных из различных модулей кодера 200 видео.[0141] In this disclosure, reference to video data memory 230 is not to be interpreted as being limited to memory internal to video encoder 200, unless specifically described as such, or memory external to video encoder 200, unless specifically described as such. . Rather, reference to video data memory 230 is to be understood as a reference memory that stores video data that video encoder 200 receives for encoding (eg, video data for the current block to be encoded). Memory 106 in FIG. 1 may also provide temporary storage of output data from various modules of the video encoder 200.

[0142] Различные модули на фиг. 6 проиллюстрированы, чтобы способствовать пониманию операций, выполняемых кодером 200 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединение. Фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0142] The various modules in FIG. 6 are illustrated to aid in understanding the operations performed by the video encoder 200. Modules can be implemented as fixed function circuits, programmable circuits, or a combination of both. Fixed function charts refer to circuits that provide certain functionality and are preconfigured for operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in the manner specified by the instructions of the software or firmware. Fixed function circuits can execute program instructions (for example, accept parameters or output parameters), but the types of operations that fixed function circuits perform are usually immutable. In some examples, one or more modules may be separate circuit blocks (fixed functional blocks or programmable blocks), and in some examples, one or more modules may be integrated circuits.

[0143] Кодер 200 видео может включать в себя арифметико-логические модули (ALU), элементарные функциональные модули (EFU), цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции кодера 200 видео выполняются с использованием программного обеспечения, исполняемого программируемыми схемами, память 106 (фиг. 1) может хранить инструкции (например, объектный код) программного обеспечения, которые кодер 200 видео принимает и исполняет, или другая память в кодере 200 видео (не показана) может хранить такие инструкции.[0143] Video encoder 200 may include arithmetic logic units (ALUs), elementary function units (EFUs), digital circuits, analog circuits, and/or programmable cores formed by programmable circuits. In examples where operations of video encoder 200 are performed using software executable by programmable circuitry, memory 106 (FIG. 1) may store instructions (eg, object code) of the software that video encoder 200 receives and executes, or other memory in the encoder. 200 videos (not shown) can store such instructions.

[0144] Память 230 данных видео приспособлена для хранения принятых данных видео. Кодер 200 видео может извлекать картинку данных видео из памяти 230 данных видео и предоставлять данные видео в модуль 204 генерации остатка и модуль 202 выбора режима. Данные видео в памяти 230 данных видео могут быть необработанными видеоданными, которые должны быть закодированы.[0144] The video data memory 230 is adapted to store received video data. The video encoder 200 may extract a picture of the video data from the video data memory 230 and provide the video data to the residual generation unit 204 and the mode selection unit 202 . The video data in the video data memory 230 may be raw video data to be encoded.

[0145] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 интра-предсказания. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули для выполнения предсказания видео в соответствии с другими режимами предсказания. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитры, модуль внутриблочного копирования (который может быть частью модуля 222 оценки движения и/или модуля 224 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное.[0145] The mode selection module 202 includes a motion estimation module 222, a motion compensation module 224, and an intra-prediction module 226. The mode selection module 202 may include additional functional modules for performing video prediction in accordance with other prediction modes. By way of example, mode select module 202 may include a palette module, an intrablock copy module (which may be part of motion estimation module 222 and/or motion compensation module 224), an affine module, a linear model (LM) module, or the like.

[0146] Модуль 202 выбора режима обычно координирует множество проходов кодирования для тестирования объединений параметров кодирования и результирующих значений скорости-искажения для таких объединений. Параметры кодирования могут включать в себя разбиение CTU на CU, режимы предсказания для CU, типы преобразования для остаточных данных CU, параметры квантования для остаточных данных CU и т.д. Модуль 202 выбора режима может, в конечном счете, выбрать объединение параметров кодирования, имеющую значения скорости-искажения, которые лучше, чем у других тестируемых объединений.[0146] Mode selection module 202 typically coordinates multiple encoding passes to test combinations of encoding parameters and the resulting rate-distortion values for such combinations. The coding parameters may include splitting the CTU into CUs, prediction modes for the CUs, transform types for the CU residual data, quantization parameters for the CU residual data, and so on. The mode selector 202 may ultimately select a coding parameter aggregation having rate-distortion values that are better than the other aggregations being tested.

[0147] Кодер 200 видео может разбивать картинку, извлеченную из памяти 230 данных видео, в последовательность CTU и инкапсулировать одну или более CTU в пределах вырезки. Модуль 202 выбора режима может разбивать CTU картинки в соответствии с древовидной структурой, такой как структура QTBT или структура квадродерева HEVC, описанная выше. Как описано выше, кодер 200 видео может формировать одну или более CU из разбиения CTU в соответствии с древовидной структурой. Такая CU может также упоминаться, в общем, как “блок видео” или “блок”.[0147] The video encoder 200 may split the picture retrieved from the video data memory 230 into a sequence of CTUs and encapsulate one or more CTUs within the slice. The mode selector 202 may partition the CTUs of the pictures according to a tree structure such as the QTBT structure or the HEVC quadtree structure described above. As described above, video encoder 200 may generate one or more CUs from a split of CTUs according to a tree structure. Such a CU may also be referred to generically as a “video block” or “block”.

[0148] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 интра-предсказания), чтобы генерировать блок предсказания для текущего блока (например, текущей CU или, в HEVC, перекрывающейся части PU и TU). Для интер-предсказания текущего блока, модуль 222 оценки движения может выполнять поиск движения для идентификации одного или более близко согласующихся опорных блоков в одной или более опорных картинках (например, в одной или более из ранее кодированных картинок, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислить значение, представляющее, насколько сходен потенциальный опорный блок с текущим блоком, например, в соответствии с суммой абсолютных разностей (SAD), суммой квадратов разностей (SSD), средней абсолютной разностью (MAD), среднеквадратичными разностями (MSD) или тому подобным. Модуль 222 оценки движения может обычно выполнять эти вычисления с использованием разностей от выборки к выборке между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, полученное в результате этих вычислений, указывая опорный блок, который наиболее близко согласуется с текущим блоком.[0148] In general, mode selection module 202 also controls its components (e.g., motion estimation module 222, motion compensation module 224, and intra-prediction module 226) to generate a prediction block for the current block (e.g., current CU or, in HEVC , overlapping part of PU and TU). For inter-prediction of the current block, motion estimation module 222 may perform a motion search to identify one or more closely matching reference blocks in one or more reference pictures (eg, one or more of the previously encoded pictures stored in DPB 218). In particular, the motion estimation module 222 may calculate a value representing how similar the potential reference block is to the current block, for example, according to the sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), rms differences (MSD) or the like. Motion estimation module 222 can typically perform these calculations using the sample-to-sample differences between the current block and the reference block under consideration. Motion estimation module 222 may identify the reference block having the smallest value obtained from these calculations, indicating the reference block that most closely matches the current block.

[0149] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые определяют положения опорных блоков в опорных картинках относительно положения текущего блока в текущей картинке. Модуль 222 оценки движения может затем предоставить векторы движения в модуль 224 компенсации движения. Например, для однонаправленного интер-предсказания, модуль 222 оценки движения может обеспечить один вектор движения, тогда как для двунаправленного интер-предсказания, модуль 222 оценки движения может обеспечить два вектора движения. Модуль 224 компенсации движения может затем генерировать блок предсказания с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность дробной выборки, модуль 224 компенсации движения может интерполировать значения для блока предсказания в соответствии с одним или более интерполяционными фильтрами. Кроме того, для двунаправленного интер-предсказания, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных соответствующими векторами движения, и объединять извлеченные данные, например, путем усреднения от выборки к выборке или взвешенного усреднения.[0149] The motion estimation module 222 may generate one or more motion vectors (MVs) that define the positions of the reference blocks in the reference pictures relative to the position of the current block in the current picture. Motion estimation module 222 may then provide motion vectors to motion compensation module 224 . For example, for unidirectional inter prediction, motion estimation module 222 may provide one motion vector, while for bidirectional inter prediction, motion estimation module 222 may provide two motion vectors. Motion compensation module 224 may then generate a prediction block using the motion vectors. For example, motion compensation module 224 may extract reference block data using a motion vector. As another example, if the motion vector has fractional sampling precision, motion compensation module 224 may interpolate values for the prediction block in accordance with one or more interpolation filters. In addition, for bi-directional inter-prediction, motion compensation module 224 may extract data for two reference blocks identified by respective motion vectors and combine the extracted data, for example, by sample-to-sample averaging or weighted averaging.

[0150] В качестве другого примера, для интра-предсказания или кодирования интра-предсказания, модуль 226 интра-предсказания может генерировать блок предсказания из выборок, соседних с текущим блоком. Например, для направленных режимов, модуль 226 интра-предсказания может обычно математически объединять значения соседних выборок и заполнять этими вычисленными значениями в определенном направлении текущий блок для формирования блока предсказания. В качестве другого примера, для режима DC, модуль 226 интра-предсказания может вычислять среднее значение соседних выборок для текущего блока и генерировать блок предсказания так, чтобы включать это полученное среднее значение для каждой выборки блока предсказания.[0150] As another example, for intra-prediction or intra-prediction coding, intra-prediction module 226 may generate a prediction block from samples adjacent to the current block. For example, for directional modes, intra-prediction module 226 can typically mathematically combine adjacent sample values and populate the current block with these computed values in a particular direction to form a prediction block. As another example, for the DC mode, intra-prediction module 226 may compute an average of adjacent samples for the current block and generate a prediction block to include that average for each prediction block sample.

[0151] Модуль 202 выбора режима предоставляет блок предсказания в модуль 204 генерации остатка. Модуль 204 генерации остатка получает необработанную, некодированную версию текущего блока из памяти 230 данных видео и блок предсказания из модуля 202 выбора режима. Модуль 204 генерации остатка вычисляет от выборки к выборке разности между текущим блоком и блоком предсказания. Полученные разности от выборки к выборке определяют остаточный блок для текущего блока. В некоторых примерах, модуль 204 генерации остатка может также определять разности между значениями выборок в остаточном блоке для генерации остаточного блока с использованием дифференциальной импульсно-кодовой модуляции остатка (RDPCM). В некоторых примерах, модуль 204 генерации остатка может быть сформирован с использованием одной или нескольких схем вычитания, которые выполняют двоичное вычитание.[0151] The mode selection module 202 provides a prediction block to the residual generation module 204 . Residual generation module 204 receives a raw, uncoded version of the current block from video data memory 230 and a prediction block from mode selection module 202 . The residual generation module 204 calculates the sample-to-sample difference between the current block and the prediction block. The resulting sample-to-sample differences determine the residual block for the current block. In some examples, residual generation module 204 may also determine differences between sample values in the residual block to generate a residual block using residual differential pulse code modulation (RDPCM). In some examples, the remainder generator 204 may be formed using one or more subtraction circuits that perform binary subtraction.

[0152] В примерах, где модуль 202 выбора режима разбивает CU на PU, каждая PU может быть ассоциирована с единицей предсказания яркости и соответствующими единицами предсказания цветности. Кодер 200 видео и декодер 300 видео могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU, а размер PU может относиться к размеру единицы предсказания яркости PU. Предполагая, что размер конкретной CU равен 2N×2N, кодер 200 видео может поддерживать размеры PU 2N×2N или N×N для интра-предсказания и симметричные размеры PU 2N×2N, 2N×N, N×2N, N×N или аналогичные для интер-предсказания. Кодер 200 видео и декодер 300 видео также могут поддерживать асимметричное разбиение для размеров PU 2N×nU, 2N×nD, nL×2N и nR×2N для интер-предсказания.[0152] In examples where mode selector 202 partitions a CU into PUs, each PU may be associated with a luminance prediction unit and corresponding chrominance prediction units. Video encoder 200 and video decoder 300 may support PUs having different sizes. As mentioned above, the CU size may refer to the size of the luminance coding unit of the CU, and the size of the PU may refer to the size of the luminance prediction unit of the PU. Assuming a particular CU size is 2Nx2N, video encoder 200 may support 2Nx2N or NxN PU sizes for intra prediction and symmetrical PU sizes of 2Nx2N, 2NxN, Nx2N, NxN or similar. for inter-prediction. Video encoder 200 and video decoder 300 may also support asymmetric partitioning for PU sizes of 2N×nU, 2N×nD, nL×2N, and nR×2N for inter-prediction.

[0153] В примерах, где модуль выбора режима дополнительно не разбивает CU на PU, каждая CU может быть ассоциирована с блоком кодирования яркости и соответствующими блоками кодирования цветности. Как указано выше, размер CU может относиться к размеру блока кодирования яркости CU. Кодер 200 видео и декодер 120 видео могут поддерживать размеры CU 2N×2N, 2N×N или N×2N.[0153] In examples where the mode selector does not further partition the CU into PUs, each CU may be associated with a luminance coding block and corresponding chrominance coding blocks. As stated above, the size of the CU may refer to the size of the luminance coding unit of the CU. Video encoder 200 and video decoder 120 may support CU sizes of 2N×2N, 2N×N, or N×2N.

[0154] Для других методик кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, посредством соответствующих модулей, ассоциированных с методиками кодирования, генерирует блок предсказания для текущего кодируемого блока. В некоторых примерах, таких как кодирование в режиме палитры, модуль 202 выбора режима может не генерировать блок предсказания, а вместо этого генерировать синтаксические элементы, указывающие способ восстановления блока на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы модулю 220 энтропийного кодирования для кодирования.[0154] For other video coding techniques, such as intra-block copy mode coding, affine mode coding, and linear model (LM) mode coding, as a few examples, the mode selection module 202, through the respective modules associated with the coding techniques, generates a prediction block for the current encoded block. In some examples, such as palette mode coding, mode selector 202 may not generate a prediction block, but instead generate syntax elements indicating how the block is reconstructed based on the selected palette. In such modes, mode selector 202 may provide these syntax elements to entropy encoding module 220 for encoding.

[0155] Как описано выше, модуль 204 генерации остатка принимает данные видео для текущего блока и соответствующего блока предсказания. Затем модуль 204 генерации остатка генерирует остаточный блок для текущего блока. Для генерации остаточного блока, модуль 204 генерации остатка вычисляет разности от выборки к выборке между блоком предсказания и текущим блоком.[0155] As described above, the residual generation unit 204 receives video data for the current block and the corresponding prediction block. Then, the residual generation module 204 generates a residual block for the current block. To generate a residual block, residual generation module 204 calculates the sample-to-sample differences between the prediction block and the current block.

[0156] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для генерации блока коэффициентов преобразования (упоминаемого здесь как “блок коэффициентов преобразования”). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для формирования блока коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять множественные преобразования к остаточному блоку, например, первичное преобразование и вторичное преобразование, такое как преобразование вращения. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0156] The transform processing module 206 applies one or more transforms to the residual block to generate a transform coefficient block (referred to herein as a “transform coefficient block”). Transform processing module 206 may apply various transforms to the residual block to generate a block of transform coefficients. For example, transform processing module 206 may apply a discrete cosine transform (DCT), a directional transform, a Karhunen-Loeve (KLT) transform, or a conceptually similar transform to the residual block. In some examples, the transform processing module 206 may perform multiple transforms to the residual block, such as a primary transform and a secondary transform such as a rotation transform. In some examples, transform processing module 206 does not apply transforms to the residual block.

[0157] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы сформировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования в соответствии со значением параметра квантования (QP), ассоциированным с текущим блоком. Кодер 200 видео (например, посредством модуля 202 выбора режима) может регулировать степень квантования, применяемого к блокам коэффициентов преобразования, ассоциированным с текущим блоком, путем настройки значения QP, ассоциированного с CU. Квантование может вводить потери информации, и, таким образом, квантованные коэффициенты преобразования могут иметь более низкую точность, чем исходные коэффициенты преобразования, сформированные модулем 206 обработки преобразования.[0157] Quantization unit 208 may quantize the transform coefficients in the transform coefficient block to generate a block of quantized transform coefficients. Quantization module 208 may quantize the transform coefficients of a block of transform coefficients in accordance with a quantization parameter (QP) value associated with the current block. Video encoder 200 (eg, via mode selector 202) may adjust the amount of quantization applied to transform coefficient blocks associated with the current block by adjusting the QP value associated with the CU. The quantization may introduce loss of information, and thus the quantized transform coefficients may have lower accuracy than the original transform coefficients generated by the transform processing unit 206 .

[0158] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для восстановления остаточного блока из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя, возможно, с некоторой степенью искажения), на основе восстановленного остаточного блока и блока предсказания, генерируемого модулем 202 выбора режима. Например, модуль 214 восстановления может добавлять выборки восстановленного остаточного блока к соответствующим выборкам из блока предсказания, генерируемого модулем 202 выбора режима, чтобы сформировать восстановленный блок.[0158] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply inverse quantization and inverse transforms to the block of quantized transform coefficients, respectively, to recover the residual block from the block of transform coefficients. Restoration module 214 may generate a reconstructed block corresponding to the current block (although possibly with some degree of distortion) based on the reconstructed residual block and the prediction block generated by mode selection module 202 . For example, reconstruction module 214 may add samples of the reconstructed residual block to corresponding samples from the prediction block generated by mode selection module 202 to form a reconstructed block.

[0159] Модуль 216 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 216 фильтрации может выполнять операции устранения блочности для уменьшения артефактов блочности вдоль краев CU. Например, модуль 216 фильтрации может быть выполнен с возможностью сравнивать величину изменения выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение отсечения вместо величины изменения выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 216 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения выборки. Операции модуля 216 фильтрации могут быть пропущены, в некоторых примерах.[0159] Filtering module 216 may perform one or more filtering operations on the recovered blocks. For example, filter module 216 may perform deblocking operations to reduce deblocking artifacts along the edges of the CU. For example, the filter module 216 may be configured to compare the sample change amount due to the deblocking filtering with the cutoff value, and in response to the amount of sample change due to the deblocking filtering greater than the first cutoff value, change the cutoff value instead of the change amount. sampling due to deblocking filtering. That is, the filter module 216 may be configured to limit the amplitude of the sample change amount. The operations of filter module 216 may be omitted in some examples.

[0160] Кодер 200 видео сохраняет восстановленные блоки в DPB 218. Например, в примерах, где операции модуля 216 фильтрации не выполняются, модуль 214 восстановления может сохранять восстановленные блоки в DPB 218. В примерах, где операции модуля 216 фильтрации выполняются, модуль 216 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 218. Модуль 222 оценки движения и модуль 224 компенсации движения могут извлекать опорную картинку из DPB 218, сформированную из восстановленных (и потенциально отфильтрованных) блоков, для интер-предсказания блоков последующих кодированных картинок. Кроме того, модуль 226 интра-предсказания может использовать восстановленные блоки в DPB 218 текущей картинки для интра-предсказания других блоков в текущей картинке.[0160] The video encoder 200 stores the reconstructed blocks in the DPB 218. For example, in examples where the operations of the filter module 216 are not performed, the recovery module 214 may store the reconstructed blocks in the DPB 218. In the examples where the operations of the filter module 216 are performed, the filter module 216 may store the filtered reconstructed blocks in DPB 218. Motion estimation module 222 and motion compensation module 224 may extract a reference picture from DPB 218 formed from the reconstructed (and potentially filtered) blocks to inter-predict blocks of subsequent encoded pictures. In addition, the intra-prediction module 226 may use the reconstructed blocks in the DPB 218 of the current picture to intra-predict other blocks in the current picture.

[0161] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принятые от других функциональных компонентов кодера 200 видео. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы предсказания (например, информацию движения для интер-предсказания или информацию интра-режима для интра-предсказания) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования на синтаксических элементах, которые являются другим примером данных видео, чтобы генерировать энтропийно-закодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), операцию CABAC, операцию кодирования от переменной к переменной (V2V) длине, операцию основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования с разбиением интервалов вероятности (PIPE), операцию экспоненциального кодирования Голомба или другой тип операции энтропийного кодирования данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в режиме обхода, где синтаксические элементы не являются энтропийно кодируемыми.[0161] In general, entropy encoding module 220 may entropy encode syntax elements received from other functional components of video encoder 200. For example, entropy encoding module 220 may entropy encode blocks of quantized transform coefficients from quantization module 208 . As another example, entropy encoding unit 220 may entropy encode prediction syntax elements (eg, motion information for inter prediction or intra mode information for intra prediction) from mode selection unit 202 . Entropy encoding module 220 may perform one or more entropy encoding operations on syntax elements, which are another example of video data, to generate entropy encoded data. For example, entropy encoding unit 220 may perform a context adaptive variable length coding (CAVLC) operation, a CABAC operation, a variable to variable length (V2V) coding operation, a syntax-based context adaptive binary arithmetic coding (SBAC) operation, an entropy coding operation with probability interval partitioning (PIPE), an exponential Golomb encoding operation, or another type of entropy data encoding operation. In some examples, entropy encoding module 220 may operate in bypass mode where the syntax elements are not entropy encoded.

[0162] Кодер 200 видео может выводить битовый поток, который включает в себя энтропийно закодированные синтаксические элементы, необходимые для восстановления блоков вырезки или картинки. В частности, модуль 220 энтропийного кодирования может выводить битовый поток.[0162] The video encoder 200 may output a bitstream that includes the entropy encoded syntax elements needed to reconstruct slice or picture blocks. In particular, entropy encoding unit 220 may output a bit stream.

[0163] Описанные выше операции описаны по отношению к блоку. Такое описание следует понимать как операции для блока кодирования яркости и/или блоков кодирования цветности. Как описано выше, в некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности CU. В некоторых примерах, блок кодирования яркости и блоки кодирования цветности являются компонентами яркости и цветности PU.[0163] The operations described above are described with respect to a block. Such description is to be understood as operations for the luminance coding block and/or chrominance coding blocks. As described above, in some examples, the luminance coding block and the chrominance coding blocks are the luminance and chrominance components of the CU. In some examples, the luma coding block and the chrominance coding blocks are the luma and chrominance components of the PU.

[0164] В некоторых примерах, операции, выполняемые в отношении блока кодирования яркости, не требуется повторять для блоков кодирования цветности. В качестве одного примера, операции для идентификации вектора движения (MV) и опорной картинки для блока кодирования яркости не требуется повторять для идентификации MV и опорной картинки для блоков цветности. Скорее, MV для блока кодирования яркости может масштабироваться для определения MV для блоков цветности, и опорная картинка может быть той же самой. В качестве другого примера, процесс интра-предсказания может быть одинаковым для блока кодирования яркости и блоков кодирования цветности.[0164] In some examples, operations performed on a luminance coding block do not need to be repeated for chrominance coding blocks. As one example, the operations for identifying a motion vector (MV) and a reference picture for a luminance coding block need not be repeated for identifying an MV and a reference picture for chrominance blocks. Rather, the MV for the luminance coding block may be scaled to determine the MV for the chrominance blocks, and the reference picture may be the same. As another example, the intra-prediction process may be the same for the luminance coding block and the chrominance coding blocks.

[0165] Фиг. 7 представляет собой блок-схему, иллюстрирующую примерный декодер 300 видео, который может выполнять методики настоящего раскрытия. Фиг. 7 обеспечена в целях пояснения и не ограничивает методики, широко иллюстрируемые и описанные в настоящем раскрытии. Для целей пояснения, настоящее раскрытие описывает декодер 300 видео в соответствии с методиками JEM и HEVC. Однако методики настоящего раскрытия могут выполняться устройствами кодирования видео, которые сконфигурированы в соответствии с другими стандартами кодирования видео.[0165] FIG. 7 is a block diagram illustrating an exemplary video decoder 300 that may perform the techniques of the present disclosure. Fig. 7 is provided for purposes of explanation and does not limit the techniques broadly illustrated and described in this disclosure. For purposes of explanation, the present disclosure describes a video decoder 300 in accordance with JEM and HEVC techniques. However, the techniques of the present disclosure may be performed by video coding devices that are configured in accordance with other video coding standards.

[0166] В примере на фиг. 7, декодер 300 видео включает в себя память 320 буфера кодированных картинок (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных картинок (DPB). Модуль 304 обработки предсказания включает в себя модуль 316 компенсации движения и модуль 318 интра-предсказания. Модуль 304 обработки предсказания может включать в себя дополнительные модули для выполнения предсказания в соответствии с другими режимами предсказания. В качестве примеров, модуль 304 обработки предсказания может включать в себя модуль палитры, модуль внутриблочного копирования (который может образовывать часть модуля 316 компенсации движения), аффинный модуль, модуль линейной модели (LM) или тому подобное. В других примерах, декодер 300 видео может включать в себя больше, меньше или другие функциональные компоненты.[0166] In the example of FIG. 7, the video decoder 300 includes a coded picture buffer (CPB) memory 320, an entropy decoding unit 302, a prediction processing unit 304, an inverse quantization unit 306, an inverse transform processing unit 308, a reconstruction unit 310, a filtering unit 312, and a decoded picture buffer 314. (DPB). The prediction processing module 304 includes a motion compensation module 316 and an intra prediction module 318 . The prediction processing module 304 may include additional modules for performing prediction in accordance with other prediction modes. As examples, prediction processing module 304 may include a palette module, an intrablock copy module (which may form part of motion compensation module 316), an affine module, a linear model (LM) module, or the like. In other examples, video decoder 300 may include more, less, or other functional components.

[0167] Память 320 CPB может хранить данные видео, такие как закодированный битовый поток видео, для декодирования компонентами декодера 300 видео. Данные видео, хранящиеся в памяти 320 CPB, могут быть получены, например, из машиночитаемого носителя 110 (фиг. 1). Память 320 CPB может включать в себя CPB, который сохраняет закодированные данные видео (например, синтаксические элементы) из закодированного битового потока видео. Кроме того, память 320 CPB может хранить данные видео, отличные от синтаксических элементов закодированной картинки, такие как временные данные, представляющие выходы из различных модулей декодера 300 видео. DPB 314 обычно хранит декодированные картинки, которые декодер 300 видео может выводить и/или использовать в качестве опорных данных видео при декодировании последующих данных или картинок закодированного битового потока видео. Память 320 CPB и DPB 314 могут быть образованы любым из множества устройств памяти, таких как DRAM, включая SDRAM, MRAM, RRAM или другие типы устройств памяти. Память 320 CPB и DPB 314 могут быть предоставлены одним и тем же устройством памяти или отдельными устройствами памяти. В различных примерах, память 320 CPB может быть в чипе с другими компонентами декодера 300 видео или вне чипа относительно этих компонентов.[0167] The CPB memory 320 may store video data, such as an encoded video bitstream, for decoding by components of the video decoder 300. The video data stored in the CPB memory 320 may be obtained, for example, from a computer-readable medium 110 (FIG. 1). CPB memory 320 may include a CPB that stores encoded video data (eg, syntax elements) from an encoded video bitstream. In addition, the CPB memory 320 may store video data other than the encoded picture syntax elements, such as temporary data representing outputs from various modules of the video decoder 300. DPB 314 typically stores decoded pictures that video decoder 300 can output and/or use as video reference data when decoding subsequent data or pictures of the encoded video bitstream. CPB memory 320 and DPB 314 may be formed by any of a variety of memory devices such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. The CPB memory 320 and DPB 314 may be provided by the same memory device or by separate memory devices. In various examples, CPB memory 320 may be on-chip with other components of video decoder 300, or off-chip with respect to these components.

[0168] Дополнительно или альтернативно, в некоторых примерах, декодер 300 видео может извлекать закодированные данные видео из памяти 120 (фиг. 1). То есть, память 120 может хранить данные, как обсуждено выше для памяти 320 CPB. Аналогично, память 120 может хранить инструкции, которые должны исполняться декодером 300 видео, когда некоторая или вся из функциональности декодера 300 видео реализована в программном обеспечении, подлежащем исполнению схемами обработки декодера 300 видео.[0168] Additionally or alternatively, in some examples, video decoder 300 may retrieve encoded video data from memory 120 (FIG. 1). That is, memory 120 may store data as discussed above for CPB memory 320. Similarly, memory 120 may store instructions to be executed by video decoder 300 when some or all of the functionality of video decoder 300 is implemented in software to be executed by video decoder 300 processing circuits.

[0169] Различные модули, показанные на фиг. 7, проиллюстрированы, чтобы способствовать пониманию операций, выполняемых декодером 300 видео. Модули могут быть реализованы как фиксированные функциональные схемы, программируемые схемы или их объединении. Подобно фиг. 6, фиксированные функциональные схемы относятся к схемам, которые обеспечивают определенную функциональность и заранее настроены на операции, которые могут выполняться. Программируемые схемы относятся к схемам, которые могут быть запрограммированы для выполнения различных задач и обеспечивают гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут исполнять программное обеспечение или микропрограммное обеспечение, которое предписывает программируемым схемам работать таким образом, как определяется инструкциями программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут исполнять программные инструкции (например, принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, обычно неизменны. В некоторых примерах, один или более модулей могут быть отдельными схемными блоками (фиксированными функциональными блоками или программируемыми блоками), а в некоторых примерах, один или более модулей могут быть интегральными схемами.[0169] The various modules shown in FIG. 7 are illustrated to assist in understanding the operations performed by the video decoder 300. Modules can be implemented as fixed function circuits, programmable circuits, or a combination of the two. Like FIG. 6, fixed functional circuits refer to circuits that provide certain functionality and are pre-configured for operations that can be performed. Programmable circuits refer to circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in the manner specified by the instructions of the software or firmware. Fixed function circuits can execute program instructions (for example, accept parameters or output parameters), but the types of operations that fixed function circuits perform are usually immutable. In some examples, one or more modules may be separate circuit blocks (fixed functional blocks or programmable blocks), and in some examples, one or more modules may be integrated circuits.

[0170] Декодер 300 видео может включать в себя ALU, EFU, цифровые схемы, аналоговые схемы и/или программируемые ядра, образованные программируемыми схемами. В примерах, где операции декодера 300 видео выполняются программным обеспечением, исполняемым на программируемых схемах, однокристальная память (в чипе) или память вне чипа может хранить инструкции (например, объектный код) программного обеспечения, которые получает и исполняет декодер 300 видео.[0170] The video decoder 300 may include ALUs, EFUs, digital circuits, analog circuits, and/or programmable cores formed by programmable circuits. In instances where the operations of the video decoder 300 are performed by software running on programmable circuits, the on-chip (on-chip) or off-chip memory may store instructions (eg, object code) of the software that the video decoder 300 receives and executes.

[0171] Модуль 302 энтропийного декодирования может получать закодированные данные видео из CPB и энтропийно декодировать данные видео для воспроизведения синтаксических элементов. Модуль 304 обработки предсказания, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут генерировать декодированные данные видео на основе синтаксических элементов, извлеченных из битового потока.[0171] The entropy decoding module 302 may receive the encoded video data from the CPB and entropy decode the video data to reproduce the syntax elements. Prediction processing module 304, inverse quantization module 306, inverse transform processing module 308, reconstruction module 310, and filter module 312 may generate decoded video data based on syntax elements extracted from the bitstream.

[0172] В общем, декодер 300 видео восстанавливает картинку на поблочной основе. Декодер 300 видео может выполнять операцию восстановления на каждом блоке индивидуально (где блок, который восстанавливается, т.е. декодируется, в текущее время, может называться “текущим блоком”).[0172] In general, video decoder 300 reconstructs a picture on a block-by-block basis. The video decoder 300 may perform the recovery operation on each block individually (where the block that is being recovered, ie, decoded, at the current time may be referred to as the “current block”).

[0173] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, определяющие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как указание(я) параметра квантования (QP) и/или режима преобразования. Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, для определения степени квантования и, аналогично, степени обратного квантования для применения модулем 306 обратного квантования. Модуль 306 обратного квантования может, например, выполнять побитовую операцию сдвига влево для обратного квантования квантованных коэффициентов преобразования. При этом модуль 306 обратного квантования может формировать блок коэффициентов преобразования, включающий коэффициенты преобразования.[0173] Entropy decoding module 302 can entropy decode syntax elements defining quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as quantization parameter (QP) indication(s) and/or transform mode. Inverse quantization module 306 may use the QP associated with the block of quantized transform coefficients to determine the degree of quantization and, similarly, the degree of inverse quantization to be applied by inverse quantization module 306 . Inverse quantizer 306 may, for example, perform a bitwise left shift operation to inverse quantize the quantized transform coefficients. Here, inverse quantizer 306 may generate a transform coefficient block including transform coefficients.

[0174] После того как модуль 306 обратного квантования сформировал блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применить одно или более обратных преобразований к блоку коэффициентов преобразования для генерации остаточного блока, ассоциированного с текущим блоком. Например, блок обработки 308 обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное преобразование вращения, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования.[0174] After inverse quantizer 306 has generated a transform coefficient block, inverse transform processing module 308 may apply one or more inverse transforms to the transform coefficient block to generate a residual block associated with the current block. For example, inverse transform processing unit 308 may apply an inverse DCT, inverse integer transform, inverse Karhunen-Loeve (KLT), inverse rotation transform, inverse directional transform, or other inverse transform to the block of transform coefficients.

[0175] Кроме того, модуль 304 обработки предсказания генерирует блок предсказания в соответствии с синтаксическими элементами информации предсказания, которые были энтропийно декодированы модулем 302 энтропийного декодирования. Например, если синтаксические элементы информации предсказания указывают, что текущий блок является интер-предсказанным, модуль 316 компенсации движения может генерировать блок предсказания. В этом случае, синтаксические элементы информации предсказания могут указывать опорную картинку в DPB 314, из которой следует извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорной картинке относительно местоположения текущего блока в текущей картинке. Модуль 316 компенсации движения может, в принципе, выполнять процесс интер-предсказания способом, который по существу аналогичен тому, который описан в отношении модуля 224 компенсации движения (фиг. 6).[0175] In addition, the prediction processing unit 304 generates a prediction block in accordance with the prediction information syntax elements that have been entropy decoded by the entropy decoding unit 302 . For example, if the prediction information syntax elements indicate that the current block is inter-predicted, motion compensation module 316 may generate a prediction block. In this case, the prediction information syntax elements may indicate a reference picture in the DPB 314 from which the reference block should be retrieved, as well as a motion vector identifying the location of the reference block in the reference picture relative to the location of the current block in the current picture. Motion compensation module 316 may, in principle, perform the inter-prediction process in a manner that is essentially the same as that described with respect to motion compensation module 224 (FIG. 6).

[0176] В качестве другого примера, если синтаксические элементы информации преобразования указывают, что текущий блок является интра-предсказанным, модуль 318 интра-предсказания может генерировать блок предсказания в соответствии с режимом интра-предсказания, указанным синтаксическими элементами информации преобразования. Вновь, модуль 318 интра-предсказания может, в принципе, выполнять процесс интра-предсказания способом, по существу сходным с тем, который описан в отношении модуля 226 интра-предсказания (фиг. 6). Модуль 318 интра-предсказания может извлекать данные соседних выборок для текущего блока из DPB 314.[0176] As another example, if the transformation syntax elements indicate that the current block is intra-predicted, intra-prediction module 318 may generate a prediction block in accordance with the intra-prediction mode indicated by the transformation syntax elements. Again, intra-prediction module 318 can, in principle, perform the intra-prediction process in a manner substantially similar to that described with respect to intra-prediction module 226 (FIG. 6). Intra-prediction module 318 may retrieve adjacent sample data for the current block from DPB 314.

[0177] Модуль 310 восстановления может восстанавливать текущий блок с использованием блока преобразования и остаточного блока. Например, модуль 310 восстановления может добавлять выборки остаточного блока к соответствующим выборкам блока предсказания, чтобы восстановить текущий блок.[0177] Restoration module 310 may restore the current block using the transform block and the residual block. For example, recovery module 310 may add residual block samples to corresponding prediction block samples to recover the current block.

[0178] Модуль 312 фильтрации может выполнять одну или более операций фильтрации на восстановленных блоках. Например, модуль 312 фильтрации может выполнять операции устранения блочности, чтобы снизить артефакты блочности вдоль краев восстановленных блоков. Например, модуль 312 фильтрации может быть выполнен с возможностью сравнивать величину изменения для выборки, обусловленную фильтрацией устранения блочности, со значением отсечения, и в ответ на величину изменения для выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять значение посредством значения отсечения, вместо величины изменения для выборки, обусловленной фильтрацией устранения блочности. То есть, модуль 312 фильтрации может быть выполнен с возможностью ограничивать амплитуду величины изменения для выборки. Операции модуля 312 фильтрации не обязательно должны выполняться во всех примерах.[0178] Filtering module 312 may perform one or more filtering operations on the recovered blocks. For example, filter module 312 may perform deblocking operations to reduce deblocking artifacts along the edges of the reconstructed blocks. For example, the filter module 312 may be configured to compare the amount of change to sample due to the deblocking filtering with the cutoff value, and in response to the amount of change to sample due to the deblocking filtering greater than the first cutoff value, change the value by the value clipping, instead of the amount of change for the sample due to deblocking filtering. That is, the filter module 312 may be configured to limit the amplitude of the amount of change for the sample. The operations of filter module 312 need not be performed in all examples.

[0179] Декодер 300 видео может сохранять восстановленные блоки в DPB 314. Например, в случаях, где операции модуля 312 фильтрации не требуются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, где операции модуля 312 фильтрации необходимы, модуль 312 фильтрации может сохранять отфильтрованные восстановленные блоки в DPB 314. Как обсуждено выше, DPB 314 может предоставлять опорную информацию, такую как выборки текущей картинки для интра-предсказания и ранее декодированные картинки для последующей компенсации движения, на модуль 304 обработки предсказания. Более того, декодер 300 видео может выводить декодированные картинки (например, декодированное видео) из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.[0179] The video decoder 300 may store the recovered blocks in the DPB 314. For example, in cases where the operations of the filter module 312 are not required, the recovery module 310 may store the recovered blocks in the DPB 314. In examples where the operations of the filter module 312 are needed, the module 312 filtering may store the filtered reconstructed blocks in DPB 314. As discussed above, DPB 314 may provide reference information such as current picture samples for intra prediction and previously decoded pictures for subsequent motion compensation to prediction processing module 304 . Moreover, video decoder 300 may output decoded pictures (eg, decoded video) from DPB 314 for subsequent presentation on a display device, such as display device 118 in FIG. 1.

[0180] Фиг. 8 показывает примерную реализацию модуля 312 фильтрации согласно фиг. 7. Модуль 216 фильтрации на фиг. 6 может быть реализован тем же самым или подобным образом. Модули 216 и 312 фильтрации могут выполнять методики настоящего раскрытия, возможно во взаимосвязи с другими компонентами кодера 200 видео или декодера 300 видео. В примере на фиг. 8, модуль 312 фильтрации включает в себя фильтр 342 устранения блочности, фильтр 344 SAO и фильтр 346 ALF/GALF. Фильтр 344 SAO может, например, быть выполнен с возможностью определять значения смещения для выборок блока. ALF/GALF 346 может аналогично фильтровать блоки данных видео с использованием адаптивного контурного фильтра и/или геометрической адаптивной контурной фильтрации.[0180] FIG. 8 shows an exemplary implementation of the filter module 312 of FIG. 7. Filter module 216 in FIG. 6 may be implemented in the same or similar manner. Filter modules 216 and 312 may perform the techniques of the present disclosure, possibly in conjunction with other components of video encoder 200 or video decoder 300. In the example in FIG. 8, the filter module 312 includes a deblocking filter 342, a SAO filter 344, and an ALF/GALF filter 346. The SAO filter 344 may, for example, be configured to determine offset values for block samples. ALF/GALF 346 may likewise filter video data blocks using an adaptive loop filter and/or geometric adaptive loop filtering.

[0181] Модуль 312 фильтрации может включать в себя меньше фильтров и/или может включать в себя дополнительные фильтры. Дополнительно, конкретные фильтры, показанные на фиг. 8, могут быть реализованы в другом порядке. Другие контурные фильтры (либо в контуре кодирования, либо после контура кодирования) могут также использоваться, чтобы сглаживать пиксельные переходы или иным образом улучшать качество видео. Отфильтрованные восстановленные блоки видео, выведенные модулем 312 фильтрации, могут быть сохранены в DPB 314, который хранит опорные картинки, используемые для последующей компенсации движения. DPB 314 может быть частью или отдельным от дополнительной памяти, которая хранит декодированное видео для последующего представления на устройстве отображения, таком как устройство 118 отображения на фиг. 1.[0181] Filter module 312 may include fewer filters and/or may include additional filters. Additionally, the specific filters shown in FIG. 8 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 filtered reconstructed video blocks output by filter module 312 may be stored in DPB 314 which stores reference pictures used for subsequent motion compensation. DPB 314 may be part of, or separate from, additional memory that stores decoded video for later presentation on a display device, such as display device 118 in FIG. 1.

[0182] Декодер 300 видео, например, фильтр устранения блочности 342 модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео и применять фильтрацию устранения блочности к первому восстановленному блоку в соответствии с любой методикой или объединения методик, описанных в настоящем раскрытии. Чтобы получить первый восстановленный блок данных видео, декодер 300 видео может быть выполнен с возможностью определять блок предсказания данных видео и суммировать остаточный блок данных видео с блоком предсказания данных видео. Для применения фильтрации устранения блочности к первому восстановленному блоку, декодер 300 видео может применять фильтрацию устранения блочности к выборкам, расположенным на границе первого восстановленного блока данных видео и второго восстановленного блока данных видео. Чтобы применить фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео определяет интенсивность фильтра для фильтрации устранения блочности.[0182] The video decoder 300, such as the deblocking filter 342 of the filtering module 312, may be configured to receive the first reconstructed block of video data and apply deblocking filtering to the first restored block in accordance with any of the techniques or combinations of techniques described in this disclosure. . To obtain the first reconstructed video data block, the video decoder 300 may be configured to determine a video data prediction block and add the residual video data block to the video data prediction block. To apply deblocking filtering to the first reconstructed block, video decoder 300 may apply deblocking filtering to samples located on the boundary of the first reconstructed video data block and the second reconstructed video data block. To apply the deblocking filtering to the first reconstructed block, the video decoder 300 determines the filter strength for the deblocking filtering.

[0183] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать фильтр для фильтрации устранения блочности. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр на основе длины блока, ортогонального границе, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр на основе длины блока, выровненного с границей, подлежащей фильтрации. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео может выбрать фильтр из множества фильтров устранения блочности с различными длинами. Чтобы выбрать фильтр для фильтрации устранения блочности, декодер 300 видео выбирает фильтр из множества фильтров устранения блочности с различными поддержками фильтров.[0183] In order to apply the deblocking filtering to the first reconstructed block, the video decoder 300 may select a filter for the deblocking filtering. To select a filter for deblocking filtering, video decoder 300 may select a filter based on a block length orthogonal to a boundary to be filtered. To select a filter for deblocking filtering, video decoder 300 selects a filter based on a block length aligned with the boundary to be filtered. To select a filter for deblocking filtering, video decoder 300 may select a filter from a plurality of deblocking filters with different lengths. To select a filter for deblocking filtering, video decoder 300 selects a filter from a plurality of deblocking filters with different filter supports.

[0184] Декодер 300 видео может быть выполнен с возможностью определять доверительный коэффициент и определять величину изменения выборки на основе доверительного коэффициента. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку путем изменения выборки первого восстановленного блока на величину изменения выборки. Декодер 300 видео может определять величину изменения выборки на основе доверительного коэффициента путем ограничения величины изменения выборки до диапазона значений. Доверительный коэффициент может, например, представлять собой интервал.[0184] The video decoder 300 may be configured to determine a confidence factor and determine the amount of sample change based on the confidence factor. Video decoder 300 may apply deblocking filtering to the first reconstructed block by changing the sample of the first reconstructed block by the sample change amount. The video decoder 300 may determine the sample change amount based on the confidence factor by limiting the sample change amount to a range of values. The confidence factor may, for example, be an interval.

[0185] Декодер 300 видео может быть выполнен с возможностью определять второй блок предсказания данных видео; добавлять второй остаточный блок данных видео ко второму блоку предсказания данных видео, чтобы определить второй восстановленный блок данных видео, который является смежным с первым восстановленным блоком; определять первый параметр квантования для остаточного блока; определять второй параметр квантования для второго остаточного блока; применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования; и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования.[0185] The video decoder 300 may be configured to determine a second video data prediction block; add a second residual video data block to a second video data prediction block to determine a second reconstructed video data block that is adjacent to the first reconstructed block; determine a first quantization parameter for the residual block; determine a second quantization parameter for the second residual block; apply deblocking filtering to the first reconstructed block based on the first quantization parameter; and apply deblocking filtering to the second reconstructed block based on the second quantization parameter.

[0186] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку на основе первого параметра квантования, декодер 300 видео может определять величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, и применять фильтрацию устранения блочности ко второму восстановленному блоку на основе второго параметра квантования путем определения величины изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования. Чтобы определить величину изменения выборки для выборки первого восстановленного блока на основе первого параметра квантования, декодер 300 видео может ограничить величину изменения выборки для выборки первого восстановленного блока до первого диапазона значений и определить величину изменения выборки для выборки второго восстановленного блока на основе второго параметра квантования путем ограничения величины изменения выборки для выборки второго восстановленного блока до второго диапазона значений, который отличается от первого диапазона значений.[0186] To apply deblocking filtering to the first reconstructed block based on the first quantization parameter, the video decoder 300 may determine a sample change amount for sampling the first reconstructed block based on the first quantization parameter, and apply deblocking filtering to the second reconstructed block based on the second parameter. quantization by determining a sample change amount for sampling the second reconstructed block based on the second quantization parameter. To determine the sample change amount for sampling the first reconstructed block based on the first quantization parameter, the video decoder 300 may limit the sample change amount for sampling the first reconstructed block to a first range of values, and determine the sample change amount for sampling the second reconstructed block based on the second quantization parameter by limiting a sample change amount for sampling the second reconstructed block to a second range of values that is different from the first range of values.

[0187] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может выбрать параметры фильтра устранения блочности для фильтрации устранения блочности. Параметры фильтрации устранения блочности могут, например, включать в себя одно или более из типа фильтра, длины фильтра, параметров ограничения или пространственного шага пропуска выборки. Чтобы выбрать параметры фильтра устранения блочности для фильтрации устранения блочности, декодер 300 видео может выбрать параметры фильтра устранения блочности на основе одного или более свойств преобразования или коэффициентов преобразования для остаточного блока.[0187] To apply the deblocking filtering to the first reconstructed block, the video decoder 300 may select deblocking filter parameters for the deblocking filtering. The deblocking filter parameters may, for example, include one or more of filter type, filter length, clipping parameters, or skip space spacing. To select deblocking filter parameters for the deblocking filtering, video decoder 300 may select deblocking filter parameters based on one or more transform properties or transform coefficients for the residual block.

[0188] Чтобы применять фильтрацию устранения блочности к первому восстановленному блоку, декодер 300 видео может определять значения для недоступных выборок и применять фильтрация устранения блочности с использованием определенных значений. Чтобы определить значения для недоступных выборок, декодер 300 видео может выполнять процесс экстраполяции и/или процесс заполнения. Декодер 300 видео может определять недоступные выборки как недоступные на основе блочной характеристики первого восстановленного блока.[0188] To apply deblocking filtering to the first reconstructed block, video decoder 300 may determine values for unavailable samples and apply deblocking filtering using the determined values. To determine values for unavailable samples, video decoder 300 may perform an extrapolation process and/or a padding process. The video decoder 300 may determine the unavailable samples as unavailable based on the block response of the first reconstructed block.

[0189] Декодер 300 видео, например, фильтр 342 устранения блочности модуля 312 фильтрации, может быть выполнен с возможностью получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первую выборку с первым значением; применять фильтрацию устранения блочности к первому восстановленному блоку, чтобы создать отфильтрованный блок с устранением блочности; определять первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; сравнивать первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки; и выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первая выборка имеет первое отфильтрованное значение.[0189] The video decoder 300, such as the deblocking filter 342 of the filter module 312, may be configured to obtain a first reconstructed block of video data, the first reconstructed block including a first sample with a first value; apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; compare the first cutoff value with a change amount of the first sample due to the deblocking filtering; in response to a change amount of the first sample due to the deblocking filtering greater than the first cutoff value, changing the first value by the first cutoff value to determine the first filtered value for the first sample; and outputting the deblocked filtered video data block, wherein in the deblocked filtered block, the first sample has the first filtered value.

[0190] Первое отфильтрованное значение может быть равно первому значению плюс первое значение отсечения или может быть равно первому значению минус первое значение отсечения. Декодер 300 видео может определять первое значение отсечения для первой выборки дополнительно на основе режима фильтрации устранения блочности для первого восстановленного блока.[0190] The first filtered value may be equal to the first value plus the first cutoff value, or may be equal to the first value minus the first cutoff value. The video decoder 300 may determine the first cutoff value for the first sample further based on the deblocking filtering mode for the first reconstructed block.

[0191] Первый восстановленный блок может включать в себя вторую выборку со вторым значением, и декодер 300 видео может определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока и в ответ на величину изменения второй выборки, обусловленную фильтрацией устранения блочности, меньшую, чем второе значение отсечения, изменять второе значение величиной изменения второй выборки, чтобы определять второе отфильтрованное значение для второй выборки. В таком примере, в отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение.[0191] The first reconstructed block may include a second sample with a second value, and the video decoder 300 may determine a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block and in response to the magnitude change the second sample due to deblocking filtering less than the second cutoff value, change the second value by the change amount of the second sample to determine the second filtered value for the second sample. In such an example, in the deblocked filtered block, the second sample has the second filtered value.

[0192] Если расстояние между первой выборкой и границей первого восстановленного блока равно расстоянию между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения равным второму значению отсечения для второй выборки. Если расстояние между первой выборкой и границей первого восстановленного блока отличается от расстояния между второй выборкой и границей первого восстановленного блока, то декодер 300 видео может установить первое значение отсечения отличающимся от второго значения отсечения.[0192] If the distance between the first sample and the boundary of the first reconstructed block is equal to the distance between the second sample and the boundary of the first reconstructed block, then the video decoder 300 may set the first clipping value to be equal to the second clipping value for the second sample. If the distance between the first sample and the first reconstructed block boundary is different from the distance between the second sample and the first reconstructed block boundary, then the video decoder 300 may set the first clipping value to be different from the second clipping value.

[0193] На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется только к выборкам, которые на шесть или менее выборок уделены от границы первого восстановленного блока. На основе размера первого восстановленного блока, декодер 300 видео может определить, что фильтр устранения блочности применяется к выборкам, которые на две или менее выборок удалены от границы первого восстановленного блока.[0193] Based on the size of the first reconstructed block, video decoder 300 may determine that the deblocking filter is applied only to samples that are six samples or less away from the boundary of the first reconstructed block. Based on the size of the first reconstructed block, video decoder 300 may determine that the deblocking filter is applied to samples that are two samples or less away from the boundary of the first reconstructed block.

[0194] Первое значение отсечения может уменьшаться с уменьшением расстояния от границы первого восстановленного блока. Например, в ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 5. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4.[0194] The first clipping value may decrease as the distance from the boundary of the first reconstructed block decreases. For example, in response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being adjacent to the first reconstructed block boundary, video decoder 300 may determine that the first the cutoff value is 6. In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being one sample away from the first reconstructed block boundary, the video decoder 300 may determine that the first cutoff value is 5. In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being two samples away from the first reconstructed boundary block, the video decoder 300 may determine that the first cutoff value is 4.

[0195] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на три выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 3. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на четыре выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 2. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то что первая выборка на пять выборок удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 1.[0195] In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being three samples away from the first reconstructed block boundary, video decoder 300 may determine that the first cutoff value is 3. In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being four samples away from the first reconstructed block boundary, video decoder 300 may determine that the first clipping value is 2. In response to determining that the deblocking filter is applied to samples within 6 rows or columns of the first reconstructed block boundary, and in response to the first sample being five samples away from the boundary of the first recovered block, video decoder 300 may determine that the first cutoff value is 1.

[0196] В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка является смежной с границей первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 6. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и ответ на то, что первая выборка на одну выборку удалена от границы первого восстановленного блока, декодер 300 видео может определить, что первое значение отсечения равно 4. В ответ на определение, что фильтр устранения блочности применяется к выборкам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первая выборка на две выборки удалена от границы первого восстановленного блока, декодер 300 видео может определить что первое значение отсечения равно 2.[0196] In response to determining that the deblocking filter is applied to samples within 2 rows or columns of the first reconstructed block boundary, and in response to the first sample being adjacent to the first reconstructed block boundary, video decoder 300 may determine that the first cutoff value is 6. In response to determining that the deblocking filter is applied to samples within 2 rows or columns of the first reconstructed block boundary, and responding that the first sample is one sample away from the first reconstructed block boundary, the video decoder 300 may determine that the first cutoff value is 4. In response to determining that the deblocking filter is applied to samples within 2 rows or columns of the first reconstructed block boundary, and in response to the first sample being two samples away from the first reconstructed boundary block, video decoder 300 may determine that the first cutoff value is 2.

[0197] Декодер 300 видео может также быть выполнен с возможностью получать второй восстановленный блок данных видео, причем второй восстановленный блок включает в себя вторую выборку со вторым значением, причем второй восстановленный блок совместно использует границу с первым восстановленным блоком, и причем первый восстановленный блок и второй восстановленный блок имеют разные размеры; применять фильтрацию устранения блочности ко второму восстановленному блоку, чтобы определять второй отфильтрованный с устранением блочности блок; определять второе значение отсечения для второй выборки на основе местоположения второй выборки относительно границы второго восстановленного блока и на основе размера второго восстановленного блока; в ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем второе значение отсечения, изменять первое значение посредством второго значения отсечения для определения второго отфильтрованного значения для второй выборки; и выводить второй отфильтрованный с устранением блочности блок данных видео, причем, во втором отфильтрованном с устранением блочности блоке вторая выборка имеет второе отфильтрованное значение. Декодер 300 видео может применять фильтрацию устранения блочности к первому восстановленному блоку для определения первого отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок в первом восстановленном блоке с помощью первого фильтра первой длины, и применять фильтрацию устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока, которая содержит фильтрацию выборок во втором восстановленном блоке с помощью второго фильтра второй длины, которая отличается от первой длины.[0197] Video decoder 300 may also be configured to obtain a second reconstructed block of video data, wherein the second reconstructed block includes a second sample with a second value, wherein the second reconstructed block shares a boundary with the first reconstructed block, and wherein the first reconstructed block and the second restored block have different sizes; apply deblocking filtering to the second deblocked block to determine a second deblocking filtered block; determine a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the second reconstructed block and based on the size of the second reconstructed block; responsive to a change amount of the first sample due to the deblocking filtering greater than the second cutoff value, changing the first value by the second cutoff value to determine a second filtered value for the second sample; and outputting a second deblocked filtered video data block, wherein, in the second deblocking filtered block, the second sample has the second filtered value. The video decoder 300 may apply the deblocking filtering to the first deblocked block to determine the first deblocking filtered block that contains the filtering of the samples in the first deblocked block with the first filter of the first length, and apply the deblocking filtering to the second deblocked block to determine the second deblocked block. deblocking the block, which comprises filtering the samples in the second reconstructed block with a second filter of a second length that is different from the first length.

[0198] На фиг. 9 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для кодирования текущего блока. Текущий блок может включать в себя текущую CU. Хотя описание приведено относительно кодера 200 видео (фиг. 1 и 6), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 9.[0198] FIG. 9 is a flowchart illustrating an exemplary method for encoding a current block. The current block may include the current CU. While the description has been made with respect to the video encoder 200 (FIGS. 1 and 6), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 9.

[0199] В этом примере, кодер 200 видео первоначально предсказывает текущий блок (350). Например, кодер 200 видео может сформировать блок предсказания для текущего блока. Кодер 200 видео может затем вычислить остаточный блок для текущего блока (352). Чтобы вычислить остаточный блок, кодер 200 видео может вычислить разность между исходным, некодированным блоком и блоком предсказания для текущего блока. Кодер 200 видео может затем преобразовывать и квантовать коэффициенты остаточного блока (354). Затем кодер 200 видео может сканировать квантованные коэффициенты преобразования остаточного блока (356). Во время сканирования или после сканирования, кодер 200 видео может энтропийно кодировать коэффициенты (358). Кодер 200 видео может кодировать коэффициенты с использованием CAVLC или CABAC. Кодер 200 видео может затем вывести энтропийно кодированные данные для коэффициентов блока (360).[0199] In this example, video encoder 200 initially predicts the current block (350). For example, video encoder 200 may generate a prediction block for the current block. Video encoder 200 may then calculate a residual block for the current block (352). To calculate the residual block, video encoder 200 may calculate the difference between the original, uncoded block and the prediction block for the current block. Video encoder 200 may then transform and quantize the coefficients of the residual block (354). Video encoder 200 may then scan the quantized transform coefficients of the residual block (356). During scanning or after scanning, video encoder 200 may entropy encode the coefficients (358). Video encoder 200 may encode the coefficients using CAVLC or CABAC. Video encoder 200 may then output entropy coded data for the block coefficients (360).

[0200] На фиг. 10 представлена блок-схема последовательности операций, иллюстрирующая примерный способ для декодирования текущего блока. Текущий блок может содержать текущую CU. Хотя описание приведено относительно декодера 300 видео (фиг. 1 и 7), следует понимать, что другие устройства могут быть выполнены с возможностью выполнения способа, аналогичного показанному на фиг. 10.[0200] In FIG. 10 is a flowchart illustrating an exemplary method for decoding the current block. The current block may contain the current CU. Although the description has been made with respect to the video decoder 300 (FIGS. 1 and 7), it should be understood that other devices may be configured to perform a method similar to that shown in FIGS. 10.

[0201] Декодер 300 видео может принять энтропийно кодированные данные для текущего блока, такие как энтропийно кодированная информация предсказания и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Декодер 300 видео может энтропийно декодировать энтропийно кодированные данные, чтобы определить информацию предсказания для текущего блока и восстановить коэффициенты остаточного блока (372). Декодер 300 видео может предсказывать текущий блок (374), например, с использованием режима интра- или интер-предсказания, как указывается информацией предсказания для текущего блока, чтобы вычислить блок предсказания для текущего блока. Декодер 300 видео может затем обратно сканировать восстановленные коэффициенты (376), чтобы создать блок квантованных коэффициентов преобразования. Декодер 300 видео может затем обратно квантовать и обратно преобразовать коэффициенты, чтобы сформировать остаточный блок (378). Декодер 300 видео может, в конечном счете, декодировать текущий блок путем объединения блока предсказания и остаточного блока (380). После объединения блока предсказания и остаточного блока для генерации восстановленного блока, декодер 300 видео может применить один или более фильтров (например, устранения блочности, SAO и/или ALF/GALF) к нефильтрованному восстановленному блоку для генерации отфильтрованного восстановленного блока (382).[0201] The video decoder 300 may receive entropy coded data for the current block, such as entropy coded prediction information and entropy coded data for residual block coefficients corresponding to the current block (370). Video decoder 300 may entropy decode the entropy encoded data to determine prediction information for the current block and recover coefficients of the residual block (372). The video decoder 300 may predict the current block (374), eg, using an intra- or inter-prediction mode, as indicated by the prediction information for the current block, to compute a prediction block for the current block. Video decoder 300 may then backscan the reconstructed coefficients (376) to create a block of quantized transform coefficients. Video decoder 300 may then inversely quantize and inversely transform the coefficients to form a residual block (378). Video decoder 300 may eventually decode the current block by combining the prediction block and the residual block (380). After combining the prediction block and the residual block to generate a reconstructed block, video decoder 300 may apply one or more filters (eg, deblocking, SAO, and/or ALF/GALF) to the unfiltered reconstructed block to generate a filtered reconstructed block (382).

[0202] На фиг. 11 показана блок-схема последовательности операций, иллюстрирующая примерную методику декодирования видео, описанный в настоящем раскрытии. Методики согласно фиг. 11 будут описаны со ссылкой на типовой декодер видео, такой как, но без ограничения, декодер 300 видео. В некоторых случаях, методики согласно фиг. 11 могут выполняться кодером видео, таким как кодер 200 видео, как часть процесса кодирования видео, и в этом случае типовой декодер видео соответствует контуру декодирования (например, модулю 210 обратного квантования, модулю 212 обработки обратного преобразования, модулю 214 восстановления и модулю 216 фильтрации) кодера 200 видео.[0202] In FIG. 11 is a flowchart illustrating an exemplary video decoding technique described in the present disclosure. The procedures according to FIG. 11 will be described with reference to an exemplary video decoder such as, but not limited to, video decoder 300. In some cases, the techniques of FIG. 11 may be performed by a video encoder, such as a video encoder 200, as part of the video encoding process, in which case the exemplary video decoder corresponds to a decoding loop (e.g., inverse quantization module 210, inverse transform processing module 212, reconstruction module 214, and filter module 216) encoder 200 video.

[0203] В примере согласно фиг. 11, декодер видео получает первый восстановленный блок данных видео, который включает в себя первую выборку с первым значением (400). Декодер видео применяет фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока (402). Декодер видео определяет первое значение отсечения для первой выборки на основе местоположения первой выборки относительно границы первого восстановленного блока и на основе размера первого восстановленного блока (404). Декодер 300 видео сравнивает первое значение отсечения с величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (406). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, большую, чем первое значение отсечения (408, ДА), декодер видео изменяет первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первой выборки (410). В ответ на величину изменения первой выборки, обусловленную фильтрацией устранения блочности, не большую, чем первое значение отсечения (408, НЕТ), декодер видео изменяет первое значение величиной изменения первой выборки, обусловленной фильтрацией устранения блочности (412). Декодер видео может, например, сохранять первое отфильтрованное значение равным отфильтрованному значению, определенному фильтрацией устранения блочности, а не устанавливать первое отфильтрованное значение равным первому значению плюс или минус значение отсечения.[0203] In the example of FIG. 11, the video decoder receives the first recovered video data block, which includes the first sample with the first value (400). The video decoder applies deblocking filtering to the first reconstructed block to create a deblocking filtered block (402). The video decoder determines the first clipping value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block (404). The video decoder 300 compares the first clipping value with the amount of change in the first sample due to the deblocking filtering (406). In response to a first sample change amount due to deblocking filtering greater than the first cutoff value (408, YES), the video decoder modifies the first value by the first cutoff value to determine the first filtered value for the first sample (410). In response to a first sample change amount due to the deblocking filtering not greater than the first cutoff value (408, NO), the video decoder modifies the first value by the first sample change amount due to the deblocking filtering (412). The video decoder may, for example, store the first filtered value equal to the filtered value determined by the deblocking filtering, rather than setting the first filtered value equal to the first value plus or minus the clipping value.

[0204] Следует иметь в виду, что, в зависимости от примера, некоторые действия или события любого из описанных здесь методик могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные действия или события необходимы для практической реализации методик). Кроме того, в некоторых примерах, действия или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерываний или с помощью множества процессоров, а не последовательно.[0204] It should be borne in mind that, depending on the example, some actions or events of any of the techniques described here may be performed in a different sequence, may be added, combined, or excluded altogether (for example, not all of the described actions or events are necessary for practical implementation methods). In addition, in some examples, actions or events may be performed simultaneously, such as through multi-threading, interrupt handling, or multiple processors, rather than sequentially.

[0205] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или любом их объединении. При реализации в программном обеспечении, функции могут сохраняться или передаваться как одна или более инструкций или код на машиночитаемом носителе и исполняться аппаратным модулем обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители, которые соответствуют осязаемому носителю, такому как носитель хранения данных, или коммуникационной среде, включающей в себя любой носитель, который облегчает передачу компьютерной программы из одного места в другое, например, в соответствии с протоколом связи. Таким образом, машиночитаемые носители обычно могут соответствовать (1) осязаемым машиночитаемым носителям хранения данных, которые являются долговременными, или (2) коммуникационному носителю (среде), такому как сигнал или несущая волна. Носителями хранения данных могут быть любые доступные носители, к которым может получить доступ один или более компьютеров или один или более процессоров для извлечения инструкций, кода и/или структур данных для реализации методик, описанных в настоящем раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0205] In one or more examples, the functions described 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 module. Computer-readable media may include computer-readable media that corresponds to a tangible medium, such as a storage medium, or a communication medium, including any medium that facilitates the transfer of a computer program from one place to another, such as in accordance with a communication protocol. Thus, computer-readable media can typically correspond to (1) tangible computer-readable storage media that is durable, or (2) a communication medium such as a signal or carrier wave. Storage media can be any available media that can be accessed by one or more computers or one or more processors to retrieve instructions, code, and/or data structures for implementing the techniques described in this disclosure. The computer program product may include a computer readable medium.

[0206] В качестве примера, а не ограничения, такие машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другие устройства хранения на оптических дисках, устройства хранения на магнитных дисках или другие магнитные устройства хранения, флэш-память или любой другой носитель, который может быть использован для хранения желательного программного кода в форме инструкций или структур данных и к которому может получить доступ компьютер. Кроме того, любое соединение надлежащим образом определяется как машиночитаемый носитель. Например, если инструкции передаются с веб-сайта, сервера или другого удаленного источника с использованием коаксиального кабеля, волоконно-оптического кабеля, витой пары, цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасное излучение, радио и микроволны, то коаксиальный кабель, волоконно-оптический кабель, витая пара, DSL или беспроводные технологии, такие как инфракрасное излучение, радио и микроволны, включаются в определение носителя. Однако следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие волны, сигналы или другие временные носители, а вместо этого направлены на долговременные, осязаемые носители хранения. Магнитный диск (disk) и оптический диск (disc), как используется в настоящем документе, включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и Blu-ray диск, где магнитные диски обычно воспроизводят данные магнитным способом, тогда как оптические диски воспроизводят данные оптическим способом с помощью лазеров. Объединения вышеперечисленного также должны быть включены в объем машиночитаемых носителей.[0206] By way of example, and not limitation, such computer-readable storage media may comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage devices, magnetic disk storage devices or other magnetic storage devices, flash memory, or any other medium that can be used to store desired program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly 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 microwaves, 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. However, it should be understood that computer-readable storage media and storage media do not include connections, carrier waves, signals, or other temporary media, but are instead directed to durable, tangible storage media. The magnetic disc (disk) and optical disc (disc) as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disc, and Blu-ray disc, where magnetic discs usually reproduce data magnetically, while optical discs reproduce data optically using lasers. Combinations of the above should also be included within the scope of computer readable media.

[0207] Инструкции могут исполняться посредством одного или более процессоров, таких как один или более DSP, микропроцессоров общего назначения, ASIC, FPGA или других эквивалентных интегральных схем или дискретных логических схем. Соответственно, термин “процессор”, как используется здесь, может относиться к любой из вышеперечисленных структур или любой другой структуре, подходящей для реализации методик, описанных здесь. Кроме того, в некоторых аспектах, функциональность, описанная здесь, может быть обеспечена в выделенных аппаратных средствах и/или программных модулях, сконфигурированных для кодирования и декодирования или встроенных в объединенный кодек. Кроме того, методики могут быть полностью реализованы в одной или более схемах или логических элементах.[0207] The instructions may be executed by one or more processors, such as one or more DSPs, general purpose microprocessors, ASICs, FPGAs, or other equivalent integrated circuits or discrete logic circuits. Accordingly, the term "processor", as used here, may refer to any of the above structures or any other structure suitable for implementing the techniques described here. In addition, 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 an integrated codec. In addition, the techniques may be fully implemented in one or more circuits or logic elements.

[0208] Методики настоящего раскрытия могут быть реализованы в широком разнообразии устройств или приборов, включая беспроводный телефон, интегральную схему (IC) или набор интегральных схем (например, чипсет). Различные компоненты, модули или блоки описаны в настоящем раскрытии с акцентом на функциональных аспектах устройств, сконфигурированных для выполнения раскрытых методик, но не обязательно требующих реализации различными аппаратными модулями. Скорее, как описано выше, различные модули могут быть объединены в аппаратный модуль кодека или обеспечены набором взаимодействующих аппаратных модулей, включая один или более процессоров, как описано выше, во взаимосвязи с подходящим программным обеспечением и/или микропрограммным обеспечением.[0208] 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 stack of integrated circuits (eg, a chipset). Various components, modules, or blocks are described in this disclosure with emphasis on the functional aspects of devices configured to perform the disclosed techniques, but not necessarily requiring implementation by different hardware modules. Rather, as described above, various modules may be combined into a codec hardware module or provided with a set of cooperating hardware modules, including one or more processors, as described above, in association with suitable software and/or firmware.

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

Claims (90)

1. Способ декодирования данных видео, содержащий этапы, на которых:1. A method for decoding video data, comprising the steps of: получают первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением;receiving a first reconstructed video data block, the first reconstructed block including a first discrete sample with a first value; применяют фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока;applying deblocking filtering to the first reconstructed block to create a deblocked filtered block; определяют первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; determining a first cutoff value for the first discrete sample based on the location of the first discrete sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; сравнивают первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности;comparing the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; в ответ на то, что величина изменения первого дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем первое значение отсечения, изменяют первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и in response to the change amount of the first sample due to the deblocking filtering being greater than the first cutoff value, modifying the first value by the first cutoff value to determine the first filtered value for the first sample; And выводят отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.outputting the deblocked filtered video data block, wherein in the deblocked filtered block the first discrete sample has the first filtered value. 2. Способ по п.1, в котором первое отфильтрованное значение равно первому значению плюс первое значение отсечения.2. The method of claim 1, wherein the first filtered value is equal to the first value plus the first cutoff value. 3. Способ по п.1, в котором первое отфильтрованное значение равно первому значению минус первое значение отсечения.3. The method of claim 1, wherein the first filtered value is equal to the first value minus the first cutoff value. 4. Способ по п.1, дополнительно содержащий этап, на котором определяют первое значение отсечения для первого дискретного отсчета дополнительно на основе режима фильтрации устранения блочности для первого восстановленного блока.4. The method of claim 1, further comprising determining a first cutoff value for the first sample further based on the deblocking filtering mode for the first recovered block. 5. Способ по п.1, в котором первый восстановленный блок включает в себя второй дискретный отсчет со вторым значением, причем способ дополнительно содержит этапы, на которых:5. The method of claim 1, wherein the first recovered block includes a second discrete sample with a second value, the method further comprising: определяют второе значение отсечения для второго дискретного отсчета на основе местоположения второго дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; determining a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; в ответ на то, что величина изменения второго дискретного отсчета, обусловленная фильтрацией устранения блочности, меньше, чем второе значение отсечения, изменяют второе значение посредством величины изменения второго дискретного отсчета для определения второго отфильтрованного значения для второго дискретного отсчета; иin response to the change amount of the second sample due to the deblocking filtering being less than the second cutoff value, modifying the second value by the change amount of the second sample to determine a second filtered value for the second sample; And причем в отфильтрованном с устранением блочности блоке второй дискретный отсчет имеет второе отфильтрованное значение.wherein in the deblocked filtered block, the second discrete sample has a second filtered value. 6. Способ по п.5, в котором расстояние между первым дискретным отсчетом и границей первого восстановленного блока равно расстоянию между вторым дискретным отсчетом и границей первого восстановленного блока, причем первое значение отсечения равно второму значению отсечения для второго дискретного отсчета.6. The method of claim 5, wherein the distance between the first sample and the boundary of the first reconstructed block is equal to the distance between the second sample and the boundary of the first reconstructed block, wherein the first cutoff value is equal to the second cutoff value for the second discrete sample. 7. Способ по п.5, в котором расстояние между первым дискретным отсчетом и границей первого восстановленного блока отличается от расстояния между вторым дискретным отсчетом и границей первого восстановленного блока, причем первое значение отсечения отличается от второго значения отсечения.7. The method of claim 5, wherein the distance between the first sample and the boundary of the first reconstructed block is different from the distance between the second sample and the boundary of the first reconstructed block, wherein the first cutoff value is different from the second cutoff value. 8. Способ по п.1, дополнительно содержащий этап, на котором на основе размера первого восстановленного блока определяют, что фильтр устранения блочности применим только к дискретным отсчетам, которые на шесть или менее дискретных отсчетов удалены от границы первого восстановленного блока.8. The method of claim 1, further comprising determining, based on the size of the first reconstructed block, that the deblocking filter is applicable only to samples that are six or less discrete samples away from the boundary of the first reconstructed block. 9. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет является смежным с границей первого восстановленного блока, определяют, что первое значение отсечения равно 6. 9. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary, and in response to that the first discrete sample is adjacent to the boundary of the first reconstructed block, it is determined that the first clipping value is 6. 10. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на один дискретный отсчет удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 5. 10. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to the discrete samples within 6 rows or columns of the first reconstructed block boundary, and in response to the fact that the first discrete sample on one sample away from the boundary of the first reconstructed block, it is determined that the first cutoff value is 5. 11. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на два дискретных отсчета удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 4. 11. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to the discrete samples within 6 rows or columns of the first reconstructed block boundary, and in response to the fact that the first discrete sample is on two discrete samples away from the boundary of the first reconstructed block determine that the first cutoff value is 4. 12. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на три дискретных отсчета удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 3. 12. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to the discrete samples within 6 rows or columns of the first reconstructed block boundary, and in response to the fact that the first discrete sample on three discrete samples away from the boundary of the first reconstructed block determine that the first cutoff value is 3. 13. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на четыре дискретных отсчета удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 2.13. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to the discrete samples within 6 rows or columns of the first reconstructed block boundary, and in response to the fact that the first discrete sample is on four discrete samples away from the boundary of the first reconstructed block determine that the first cutoff value is 2. 14. Способ по п.8, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на пять дискретных отсчетов удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 1. 14. The method of claim 8, further comprising, in response to determining that the deblocking filter is applicable to the discrete samples within 6 rows or columns of the first reconstructed block boundary, and in response to the fact that the first discrete sample on five discrete samples away from the boundary of the first reconstructed block determine that the first cutoff value is 1. 15. Способ по п.1, дополнительно содержащий этап, на котором на основе размера первого восстановленного блока определяют, что фильтр устранения блочности применим к дискретным отсчетам, которые на два или менее дискретных отсчетов удалены от границы первого восстановленного блока.15. The method of claim 1, further comprising, based on the size of the first reconstructed block, determining that the deblocking filter is applicable to samples that are two or less samples away from the boundary of the first reconstructed block. 16. Способ по п.15, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет является смежным с границей первого восстановленного блока, определяют, что первое значение отсечения равно 6. 16. The method of claim 15, further comprising, in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary, and in response to that the first discrete sample is adjacent to the boundary of the first reconstructed block, it is determined that the first clipping value is 6. 17. Способ по п.15, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на один дискретный отсчет удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 4. 17. The method of claim 15, further comprising, in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary, and in response to the fact that the first discrete sample is on one sample away from the boundary of the first reconstructed block, it is determined that the first cutoff value is 4. 18. Способ по п.15, дополнительно содержащий этап, на котором в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на два дискретных отсчета удален от границы первого восстановленного блока, определяют, что первое значение отсечения равно 2. 18. The method of claim 15, further comprising, in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary, and in response to that the first discrete sample on two discrete samples away from the boundary of the first reconstructed block determine that the first cutoff value is 2. 19. Способ по п.1, дополнительно содержащий этапы, на которых:19. The method of claim 1, further comprising the steps of: получают второй восстановленный блок данных видео, причем второй восстановленный блок включает в себя второй дискретный отсчет со вторым значением, при этом второй восстановленный блок имеет общую границу с первым восстановленным блоком, и причем первый восстановленный блок и второй восстановленный блок имеют разные размеры;obtaining a second reconstructed block of video data, the second reconstructed block including a second discrete sample with a second value, the second reconstructed block having a common boundary with the first reconstructed block, and the first reconstructed block and the second reconstructed block having different sizes; применяют фильтрацию устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока;applying deblocking filtering to the second reconstructed block to determine a second deblocking filtered block; определяют второе значение отсечения для второго дискретного отсчета на основе местоположения второго дискретного отсчета относительно границы второго восстановленного блока и на основе размера второго восстановленного блока; determining a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the second reconstructed block and based on the size of the second reconstructed block; в ответ на то, что величина изменения для второго дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем второе значение отсечения, изменяют второе значение посредством второго значения отсечения для определения второго отфильтрованного значения для второго дискретного отсчета; иin response to the change amount for the second sample due to the deblocking filtering being greater than the second cutoff value, modifying the second value by the second cutoff value to determine a second filtered value for the second sample; And выводят второй отфильтрованный с устранением блочности блок данных видео, причем во втором отфильтрованном с устранением блочности блоке второй дискретный отсчет имеет второе отфильтрованное значение.outputting a second deblocked filtered video data block, wherein in the second deblocking filtered block the second discrete sample has a second filtered value. 20. Способ по п.19, в котором:20. The method according to claim 19, in which: при применении фильтрации устранения блочности к первому восстановленному блоку для определения первого отфильтрованного с устранением блочности блока фильтруют дискретные отсчеты в первом восстановленном блоке с помощью первого фильтра первой длины; и when applying the deblocking filtering to the first reconstructed block, to determine the first deblocking filtered block, filtering the discrete samples in the first reconstructed block with the first filter of the first length; And при применении фильтрации устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока фильтруют дискретные отсчеты во втором восстановленном блоке с помощью второго фильтра второй длины, которая отличается от первой длины.applying deblocking filtering to the second reconstructed block to determine a second deblocking filtered block, filtering the discrete samples in the second reconstructed block with a second filter of a second length that is different from the first length. 21. Способ по п.1, при этом способ выполняется как часть процесса кодирования видео.21. The method of claim 1, wherein the method is performed as part of the video encoding process. 22. Устройство для декодирования данных видео, содержащее:22. A device for decoding video data, comprising: память, приспособленную хранить данные видео;a memory adapted to store video data; один или более процессоров, реализованных в схемах и выполненных с возможностью:one or more processors implemented in circuitry and configured to: получать первый восстановленный блок данных видео, причем первый восстановленный блок включает в себя первый дискретный отсчет с первым значением;obtain a first reconstructed block of video data, the first reconstructed block including a first discrete sample with a first value; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока;apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности;compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; в ответ на то, что величина изменения первого дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; in response to the change amount of the first sample due to the deblocking filtering being larger than the first cutoff value, changing the first value by the first cutoff value to determine the first filtered value for the first sample; выводить отфильтрованный с устранением блочности блок данных видео, причем в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.output the deblocked filtered video data block, wherein in the deblocked filtered block the first discrete sample has the first filtered value. 23. Устройство по п.22, при этом первое отфильтрованное значение равно первому значению плюс первое значение отсечения.23. The apparatus of claim 22, wherein the first filtered value is equal to the first value plus the first cutoff value. 24. Устройство по п.22, при этом первое отфильтрованное значение равно первому значению минус первое значение отсечения. 24. The apparatus of claim 22, wherein the first filtered value is equal to the first value minus the first cutoff value. 25. Устройство по п.22, в котором один или более процессоров дополнительно выполнены с возможностью определять первое значение отсечения для первого дискретного отсчета дополнительно на основе режима фильтрации устранения блочности для первого восстановленного блока.25. The apparatus of claim 22, wherein the one or more processors are further configured to determine the first cutoff value for the first discrete sample further based on the deblocking filtering mode for the first recovered block. 26. Устройство по п.22, при этом восстановленный блок включает в себя второй дискретный отсчет со вторым значением, и при этом один или более процессоров дополнительно выполнены с возможностью:26. The apparatus of claim 22, wherein the reconstructed block includes a second discrete sample with a second value, and wherein the one or more processors are further configured to: определять второе значение отсечения для второго дискретного отсчета на основе местоположения второго дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; determine a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; в ответ на то, что величина изменения второго дискретного отсчета, обусловленная фильтрацией устранения блочности, меньше, чем второе значение отсечения, изменять второе значение посредством величины изменения для второго дискретного отсчета для определения второго отфильтрованного значения для второго дискретного отсчета; иin response to the change amount of the second sample due to the deblocking filtering being less than the second cutoff value, changing the second value by the change amount for the second sample to determine a second filtered value for the second sample; And при этом в отфильтрованном с устранением блочности блоке второй дискретный отсчет имеет второе отфильтрованное значение.wherein, in the deblocking filtered block, the second discrete sample has a second filtered value. 27. Устройство по п.26, при этом расстояние между первым дискретным отсчетом и границей первого восстановленного блока равно расстоянию между вторым дискретным отсчетом и границей первого восстановленного блока, и при этом первое значение отсечения равно второму значению отсечения для второго дискретного отсчета.27. The apparatus of claim 26, wherein the distance between the first sample and the boundary of the first reconstructed block is equal to the distance between the second sample and the boundary of the first reconstructed block, and wherein the first cutoff value is equal to the second cutoff value for the second discrete sample. 28. Устройство по п.26, при этом расстояние между первым дискретным отсчетом и границей первого восстановленного блока отличается от расстояния между вторым дискретным отсчетом и границей первого восстановленного блока, и при этом первое значение отсечения отличается от второго значения отсечения.28. The apparatus of claim 26, wherein the distance between the first sample and the first reconstructed block boundary is different from the distance between the second sample and the first reconstructed block boundary, and wherein the first cutoff value is different from the second cutoff value. 29. Устройство по п.22, в котором один или более процессоров дополнительно выполнены с возможностью на основе размера первого восстановленного блока определять, что фильтр устранения блочности применим только к дискретным отсчетам, которые на шесть или менее дискретных отсчетов удалены от границы первого восстановленного блока.29. The apparatus of claim 22, wherein the one or more processors are further configured to determine, based on the size of the first reconstructed block, that the deblocking filter is applicable only to samples that are six or less samples away from the boundary of the first reconstructed block. 30. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет является смежным с границей первого восстановленного блока, определять, что первое значение отсечения равно 6. 30. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first sample is adjacent to the boundary of the first reconstructed block, determine that the first cutoff value is 6. 31. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на один дискретный отсчет удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 5. 31. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first sample is one sample away from the first reconstructed block boundary, determine that the first cutoff value is 5. 32. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на два дискретных отсчета удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 4. 32. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first bin is two bins away from the first reconstructed block boundary, determine that the first cutoff value is 4. 33. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на три дискретных отсчета удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 3. 33. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first bin is three bins away from the first reconstructed block boundary, determine that the first cutoff value is 3. 34. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на четыре дискретных отсчета удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 2.34. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first bin is four bins away from the first reconstructed block boundary, determine that the first cutoff value is 2. 35. Устройство по п.29, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 6 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на пять дискретных отсчетов удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 1. 35. The apparatus of claim 29, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 6 rows or columns of a first reconstructed block boundary and in response to the first bin is five bins away from the first reconstructed block boundary, determine that the first cutoff value is 1. 36. Устройство по п.22, в котором один или более процессоров дополнительно выполнены с возможностью на основе размера первого восстановленного блока определять, что фильтр устранения блочности применим к дискретным отсчетам, которые на два или менее дискретных отсчетов удалены от границы первого восстановленного блока.36. The apparatus of claim 22, wherein the one or more processors are further configured, based on the size of the first reconstructed block, to determine that the deblocking filter is applicable to samples that are two or less samples away from the boundary of the first reconstructed block. 37. Устройство по п.36, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет является смежным с границей первого восстановленного блока, определять, что первое значение отсечения равно 6. 37. The apparatus of claim 36, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary and in response to the first sample is adjacent to the boundary of the first reconstructed block, determine that the first cutoff value is 6. 38. Устройство по п.36, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на один дискретный отсчет удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 4. 38. The apparatus of claim 36, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary and in response to the first sample is one sample away from the boundary of the first reconstructed block, determine that the first cutoff value is 4. 39. Устройство по п.36, в котором один или более процессоров дополнительно выполнены с возможностью в ответ на определение того, что фильтр устранения блочности применим к дискретным отсчетам в пределах 2 строк или столбцов границы первого восстановленного блока, и в ответ на то, что первый дискретный отсчет на два дискретных отсчета удален от границы первого восстановленного блока, определять, что первое значение отсечения равно 2. 39. The apparatus of claim 36, wherein the one or more processors are further configured in response to determining that the deblocking filter is applicable to discrete samples within 2 rows or columns of a first reconstructed block boundary and in response to the first sample is two samples away from the first reconstructed block boundary, determine that the first cutoff value is 2. 40. Устройство по п.22, в котором один или более процессоров дополнительно выполнены с возможностью:40. The apparatus of claim 22, wherein the one or more processors are further configured to: получать второй восстановленный блок данных видео, причем второй восстановленный блок включает в себя второй дискретный отсчет со вторым значением, при этом второй восстановленный блок имеет общую границу с первым восстановленным блоком, и при этом первый восстановленный блок и второй восстановленный блок имеют разные размеры;obtaining a second reconstructed block of video data, the second reconstructed block including a second discrete sample with a second value, the second reconstructed block having a common boundary with the first reconstructed block, and wherein the first reconstructed block and the second reconstructed block have different sizes; применять фильтрацию устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока;apply deblocking filtering to the second deblocked block to determine a second deblocked filtered block; определять второе значение отсечения для второго дискретного отсчета на основе местоположения второго дискретного отсчета относительно границы второго восстановленного блока и на основе размера второго восстановленного блока; determine a second cutoff value for the second sample based on the location of the second sample relative to the boundary of the second reconstructed block and based on the size of the second reconstructed block; в ответ на то, что величина изменения второго дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем второе значение отсечения, изменять второе значение посредством второго значения отсечения для определения второго отфильтрованного значения для второго дискретного отсчета; иin response to the change amount of the second sample due to the deblocking filtering being greater than the second cutoff value, changing the second value by the second cutoff value to determine a second filtered value for the second sample; And выводить второй отфильтрованный с устранением блочности блок данных видео, при этом во втором отфильтрованном с устранением блочности блоке второй дискретный отсчет имеет второе отфильтрованное значение.outputting a second deblocked filtered video data block, wherein in the second deblocking filtered block, the second sample has a second filtered value. 41. Устройство по п.40, в котором:41. The device according to claim 40, in which: для применения фильтрации устранения блочности к первому восстановленному блоку для определения первого отфильтрованного с устранением блочности блока один или более процессоров дополнительно выполнены с возможностью фильтровать дискретные отсчеты в первом восстановленном блоке с помощью первого фильтра первой длины; иfor applying deblocking filtering to the first reconstructed block to determine the first deblocking filtered block, one or more processors are further configured to filter the samples in the first reconstructed block with the first filter of the first length; And для применения фильтрации устранения блочности ко второму восстановленному блоку для определения второго отфильтрованного с устранением блочности блока один или более процессоров дополнительно выполнены с возможностью фильтровать дискретные отсчеты во втором восстановленном блоке с помощью второго фильтра второй длины, которая отличается от первой длины.to apply deblocking filtering to the second deblocked block to determine a second deblocking filtered block, one or more processors are further configured to filter the discrete samples in the second deblocked block with a second filter of a second length that is different from the first length. 42. Устройство по п.22, при этом устройство содержит кодер видео, выполненный с возможностью декодировать данные видео как часть процесса кодирования видео.42. The apparatus of claim 22, wherein the apparatus comprises a video encoder configured to decode video data as part of a video encoding process. 43. Машиночитаемый носитель данных, хранящий инструкции, которые при их исполнении одним или более процессорами предписывают одному или более процессорам:43. A computer-readable storage medium that stores instructions that, when executed by one or more processors, cause one or more processors to: получать первый восстановленный блок данных видео, при этом первый восстановленный блок включает в себя первый дискретный отсчет с первым значением;obtain a first reconstructed block of video data, wherein the first reconstructed block includes a first discrete sample with a first value; применять фильтрацию устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока;apply deblocking filtering to the first reconstructed block to create a deblocked filtered block; определять первое значение отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; determine a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; сравнивать первое значение отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности;compare the first clipping value with the amount of change of the first discrete sample due to deblocking filtering; в ответ на то, что величина изменения первого дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем первое значение отсечения, изменять первое значение посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета; и in response to the change amount of the first sample due to the deblocking filtering being larger than the first cutoff value, changing the first value by the first cutoff value to determine the first filtered value for the first sample; And выводить отфильтрованный с устранением блочности блок данных видео, при этом в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.output the deblocked filtered video data block, wherein in the deblocked filtered block the first discrete sample has the first filtered value. 44. Устройство для декодирования данных видео, содержащее:44. A device for decoding video data, comprising: средство для получения первого восстановленного блока данных видео, при этом первый восстановленный блок включает в себя первый дискретный отсчет с первым значением;means for obtaining a first reconstructed block of video data, wherein the first reconstructed block includes a first discrete sample with a first value; средство для применения фильтрации устранения блочности к первому восстановленному блоку для создания отфильтрованного с устранением блочности блока;means for applying deblocking filtering to the first reconstructed block to create a deblocking filtered block; средство для определения первого значения отсечения для первого дискретного отсчета на основе местоположения первого дискретного отсчета относительно границы первого восстановленного блока и на основе размера первого восстановленного блока; means for determining a first cutoff value for the first sample based on the location of the first sample relative to the boundary of the first reconstructed block and based on the size of the first reconstructed block; средство для сравнения первого значения отсечения с величиной изменения первого дискретного отсчета, обусловленной фильтрацией устранения блочности;means for comparing the first clipping value with a change amount of the first sample sample due to deblocking filtering; средство для изменения первого значения посредством первого значения отсечения для определения первого отфильтрованного значения для первого дискретного отсчета в ответ на то, что величина изменения первого дискретного отсчета, обусловленная фильтрацией устранения блочности, больше, чем первое значение отсечения; и means for changing the first value by the first clip value to determine the first filtered value for the first sample in response to the fact that the amount of change of the first sample due to deblocking filtering is greater than the first clip value; And средство для вывода отфильтрованного с устранением блочности блока данных видео, при этом в отфильтрованном с устранением блочности блоке первый дискретный отсчет имеет первое отфильтрованное значение.means for outputting the deblocked filtered video data block, wherein in the deblocked filtered block the first discrete sample has the first filtered value.
RU2021104457A 2018-08-27 2019-08-27 Deblocking filter for video encoding and processing RU2795695C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US62/723,408 2018-08-27
US62/742,331 2018-10-06
US16/551,388 2019-08-26

Publications (2)

Publication Number Publication Date
RU2021104457A RU2021104457A (en) 2022-09-29
RU2795695C2 true RU2795695C2 (en) 2023-05-11

Family

ID=

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2580056C2 (en) * 2010-05-18 2016-04-10 Сони Корпорейшн Image processing device and method
WO2018066241A1 (en) * 2016-10-03 2018-04-12 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data
RU2017102891A (en) * 2010-04-13 2018-08-02 Самсунг Электроникс Ко., Лтд. VIDEO ENCODING METHOD AND VIDEO ENCODING METHOD AND VIDEO DECODING METHOD AND VIDEO DECODING DEVICE, WHICH PERFORM A RELEASE FILTERING ON THE BASIS OF TREE CODING UNITS

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2017102891A (en) * 2010-04-13 2018-08-02 Самсунг Электроникс Ко., Лтд. VIDEO ENCODING METHOD AND VIDEO ENCODING METHOD AND VIDEO DECODING METHOD AND VIDEO DECODING DEVICE, WHICH PERFORM A RELEASE FILTERING ON THE BASIS OF TREE CODING UNITS
RU2580056C2 (en) * 2010-05-18 2016-04-10 Сони Корпорейшн Image processing device and method
WO2018066241A1 (en) * 2016-10-03 2018-04-12 Sharp Kabushiki Kaisha Systems and methods for applying deblocking filters to reconstructed video data

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
D. RUSANOVSKYY et al, CE2: Tests on long deblocking (CE2.2.1.4), Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-K0334r1, 11th Meeting: Ljubljana, 10-18 July 2018. JIE DONG et al, Multi-Dimensional Filter Selection for Deblocking, Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JVET-J0056-v2, 10th Meeting: San Diego, 10-20 Apr. 2018. ANDREY NORKIN, CE1: Reduction of block artifacts in HEVC, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, JCTVC-K0186, 11th Meeting: Shanghai, 10-19 Oct. 2012. *

Similar Documents

Publication Publication Date Title
US10694181B2 (en) Bilateral filters in video coding with reduced complexity
US10834396B2 (en) Bilateral filter for predicted video data
US11677984B2 (en) Low-frequency non-separable transform (LFNST) signaling
US11284114B2 (en) Adaptive loop filter set index signaling
US11412262B2 (en) Nonlinear extensions of adaptive loop filtering for video coding
US20200296389A1 (en) Video coding in triangular prediction unit mode using different chroma formats
US11140418B2 (en) Block-based adaptive loop filter design and signaling
US11310519B2 (en) Deblocking of subblock boundaries for affine motion compensated coding
EP3864843A1 (en) Quantization artifact suppression by transform domain filtering in video encoding/decoding
CN112602323B (en) Deblocking filter for video coding and processing
US20220215593A1 (en) Multiple neural network models for filtering during video coding
US11134258B2 (en) Predictive coefficient coding
US11917141B2 (en) High-level deblocking filter (DBF), adaptive loop filter (ALF) and sample adaptive offset (SAO) control, and adaptation parameter set (APS) number constraint in video coding
TWI770546B (en) Deblock filtering for video coding
RU2795695C2 (en) Deblocking filter for video encoding and processing
US20240015312A1 (en) Neural network based filtering process for multiple color components in video coding
US20190373292A1 (en) In-loop bilateral filter type decision based on block information