RU2793272C2 - Reduction of the number of regularly-coded resolution elements for decoding coefficients using threshold value and rice parameter - Google Patents

Reduction of the number of regularly-coded resolution elements for decoding coefficients using threshold value and rice parameter Download PDF

Info

Publication number
RU2793272C2
RU2793272C2 RU2021115788A RU2021115788A RU2793272C2 RU 2793272 C2 RU2793272 C2 RU 2793272C2 RU 2021115788 A RU2021115788 A RU 2021115788A RU 2021115788 A RU2021115788 A RU 2021115788A RU 2793272 C2 RU2793272 C2 RU 2793272C2
Authority
RU
Russia
Prior art keywords
coefficient
value
level
syntax elements
encoded
Prior art date
Application number
RU2021115788A
Other languages
Russian (ru)
Other versions
RU2021115788A (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 RU2021115788A publication Critical patent/RU2021115788A/en
Application granted granted Critical
Publication of RU2793272C2 publication Critical patent/RU2793272C2/en

Links

Images

Abstract

FIELD: means for video coding.
SUBSTANCE: threshold value of regular-coded bins for the first decoding pass is determined. For the first set of coefficients, the context bin decoding of the syntax elements of the coefficient group is performed until a threshold value of regular-coded bins is reached. The context decoded resolution elements of syntax elements contain one or more significance flags, one or more parity level flags, and one or more first flags. Each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero. Each of the one or more parity level flags indicates whether the absolute level for the corresponding coefficient is even or odd. Each of the one or more first flags indicates whether the absolute level for the corresponding factor is greater than two.
EFFECT: increase in the efficiency of video coding.
38 cl, 19 dwg

Description

[0001] Данная заявка притязает на приоритет:[0001] This application claims priority:

- заявки на патент (США) № 16/704995, поданной 5 декабря 2019 года, которая притязает на приоритет:- U.S. Patent Application No. 16/704995, filed December 5, 2019, which claims priority:

- предварительной заявки на патент (США) 62/776379, поданной 6 декабря 2018 года; и- Provisional Patent Application (USA) 62/776379, filed December 6, 2018; And

- предварительной заявки на патент (США) 62/787681, поданной 2 января 2019 года;- U.S. Provisional Patent Application 62/787681, filed January 2, 2019;

содержимое каждой из которых настоящим полностью содержится по ссылке.the contents of each of which are hereby contained in their entirety by reference.

Область техники, к которой относится изобретениеThe field of technology to which the invention belongs

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

Уровень техникиState of the 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] Support for digital video can be included in a wide range of devices, including digital television receivers, digital direct broadcast systems, wireless broadcast systems, personal digital assistants (PDAs), laptop or desktop computers, tablet computers, electronic readers. books, digital cameras, digital recorders, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called "smartphones", video conferencing devices, video streaming devices, and the like. Digital video devices implement video coding technologies such as the video coding technologies described in the standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10 Advanced Coding video (AVC), the High Efficiency Video Coding (HEVC) standard, and the ITU-T H.265/High Efficiency Video Coding (HEVC) standard and extensions of such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video coding technologies.

[0004] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование (предсказание) и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеосрез (например, видеокадр или часть видеокадра) может сегментироваться на видеоблоки, которые также могут называться "единицами дерева кодирования (CTU)", "единицами кодирования (CU)" и/или "узлами кодирования". Видеоблоки во внутреннем (I-) срезе (слайсе) кадра кодируются с использованием пространственного прогнозирования относительно опорных выборок (дискретных отсчетов) в соседних блоках в одном и том же кадре. Видеоблоки во взаимно кодированном (P- или B-) срезе кадра могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в одном и том же кадре или временное прогнозирование относительно опорных выборок в других опорных кадрах. Кадры могут называться "картинками", и опорные кадры могут называться "опорными картинками".[0004] Video coding techniques include spatial (intraframe) prediction (prediction) and/or temporal (interframe) prediction in order to reduce or remove redundancy inherent in video sequences. For block-based video coding, a video slice (eg, a video frame or portion of a video frame) may be segmented into video blocks, which may also be referred to as "coding tree units (CTU)", "coding units (CU)", and/or "coding nodes". Video blocks in an inner (I-) slice (slice) of a frame are encoded using spatial prediction with respect to reference samples (samples) in adjacent blocks in the same frame. Video blocks in an inter-coded (P- or B-) slice of a frame may use spatial prediction with respect to reference samples in adjacent blocks in the same frame, or temporal prediction with respect to reference samples in other reference frames. Frames may be referred to as "pictures" and reference frames may be referred to as "reference pictures".

Сущность изобретенияThe essence of the invention

[0005] Кодирование видео (например, кодирование видео и/или декодирование видео) типично заключает в себе прогнозирование блока видеоданных либо из уже кодированного блока видеоданных в идентичном кадре (например, внутреннее прогнозирование), либо из уже кодированного блока видеоданных в другом кадре (например, взаимное прогнозирование). В некоторых случаях, видеокодер также вычисляет остаточные данные посредством сравнения прогнозирующего блока с исходным блоком. Таким образом, остаточные данные представляют разность между прогнозирующим блоком и исходным блоком видеоданных. Чтобы уменьшать число битов, требуемых для того, чтобы передавать остаточные данные, видеокодер преобразует остаточные данные в коэффициенты преобразования, квантует коэффициенты преобразования и передает преобразованные и квантованные коэффициенты в кодированном потоке битов. Сжатие, достигаемое посредством процессов преобразования и квантования, может выполняться с потерями, что означает то, что процессы преобразования и квантования могут вводить искажение в декодированные видеоданные. Это раскрытие описывает технологии, связанные с кодированием коэффициентов преобразования.[0005] Video coding (e.g., video coding and/or video decoding) typically involves predicting a video block from either an already coded video block in an identical frame (e.g., intra prediction) or from an already coded video block in a different frame (e.g., , mutual prediction). In some cases, the video encoder also calculates residual data by comparing the predictive block with the original block. Thus, the residual data represents the difference between the prediction block and the original block of video data. To reduce the number of bits required to transmit the residual data, the video encoder converts the residual data into transform coefficients, quantizes the transform coefficients, and transmits the transformed and quantized coefficients in the encoded bitstream. The compression achieved by the transformation and quantization processes may be lossy, which means that the transformation and quantization processes may introduce distortion into the decoded video data. This disclosure describes techniques related to transform coefficient coding.

[0006] Способ декодирования видеоданных включает в себя определение порогового числа регулярно-кодированных элементов разрешения (бинов) для первого прохода декодирования; для первого набора коэффициентов, контекстное декодирование элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, при этом каждый из одного или более флагов значимости указывает то, равен или нет абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, превышает или нет абсолютный уровень для соответствующего коэффициента 2; определение значений для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов; в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, обходное декодирование дополнительных синтаксических элементов, при этом обходное декодирование дополнительных синтаксических элементов содержит, для коэффициента из второго набора коэффициентов, извлечение значения для параметра Райса; и определение значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом определение значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов содержит определение значения для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль; прием первого кодированного значения для первого коэффициента из второго набора коэффициентов; и, на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определение уровня для первого коэффициента.[0006] A method for decoding video data includes determining a threshold number of regularly encoded bins for a first decoding pass; for the first set of coefficients, context decoding the syntax element bins of the coefficient group until a threshold number of regularly encoded bins is reached, wherein the context decoded bins of the syntax elements contain one or more significance flags, one or more parity level flags and one or more first flags, wherein each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero or not, each of the one or more parity level flags indicates whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether or not the absolute level for the corresponding factor 2 is exceeded; determining values for the first set of transform unit coefficients based on the context decoded bins of the syntax elements; responsive to reaching a threshold number of regular-coded bins, for the second coefficient set, bypassing decoding the additional syntax elements, wherein the bypass decoding of the additional syntax elements comprises, for a coefficient from the second coefficient set, extracting a value for a Rice parameter; and determining values for a second set of transformation unit coefficients based on the additional syntax elements, wherein determining values for the second set of transformation unit coefficients based on the additional syntax elements comprises determining a value for the null parameter based on the Rice parameter, wherein the value for the null parameter identifies the encoded value , which corresponds to the coefficient level zero; receiving a first encoded value for a first coefficient from the second coefficient set; and, based on the value for the null parameter and the first coded value for the first coefficient, determining a level for the first coefficient.

[0007] Устройство для декодирования видеоданных включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более процессоров, реализованных в схеме и выполненных с возможностью определять пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования; для первого набора коэффициентов, контекстно декодировать элементы разрешения синтаксических элементов группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, при этом каждый из одного или более флагов значимости указывает то, равен или нет абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, превышает или нет абсолютный уровень для соответствующего коэффициента 2; определять значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов; в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, выполнять обходное декодирование дополнительных синтаксических элементов, при этом для того, чтобы выполнять обходное декодирование дополнительных синтаксических элементов, один или более процессоров выполнены с возможностью извлекать, для коэффициента из второго набора коэффициентов, значение для параметра Райса; и определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом для того, чтобы определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, один или более процессоров выполнены с возможностью определять значение для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль; принимать первое кодированное значение для первого коэффициента из второго набора коэффициентов; на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определять уровень для первого коэффициента.[0007] An apparatus for decoding video data includes a memory configured to store video data and one or more processors implemented in the circuit and configured to determine a threshold number of regularly-encoded bins for a first decoding pass; for the first set of coefficients, context-decode the syntax element bins of the coefficient group until a threshold number of regular-coded bins is reached, wherein the context-decoded bins of the syntax elements contain one or more significance flags, one or more parity level flags and one or more first flags, wherein each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero or not, each of the one or more parity level flags indicates whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether or not the absolute level for the corresponding factor 2 is exceeded; determine values for the first set of transformation unit coefficients based on the context-decoded bins of the syntax elements; in response to reaching a threshold number of regularly-encoded bins, for the second set of coefficients, perform bypass decoding of additional syntax elements, wherein, in order to perform bypass decoding of additional syntax elements, one or more processors are configured to extract, for the coefficient from the second a set of coefficients, a value for the Rice parameter; and determining values for the second set of transformation unit coefficients based on the additional syntax elements, wherein in order to determine values for the second set of transformation unit coefficients based on the additional syntax elements, one or more processors are configured to determine a value for the null parameter based on the parameter Rice, wherein the value for the null parameter identifies the encoded value that corresponds to the coefficient level zero; receive a first encoded value for a first coefficient from the second coefficient set; based on the value for the null parameter and the first coded value for the first coefficient, determine the level for the first coefficient.

[0008] Согласно одному или более примерам, машиночитаемый носитель данных хранит инструкции, которые, при их исполнении посредством одного или более процессоров инструктируют одному или более процессорам определять пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования; для первого набора коэффициентов, контекстно декодировать элементы разрешения синтаксических элементов группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, при этом каждый из одного или более флагов значимости указывает то, равен или нет абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, превышает или нет абсолютный уровень для соответствующего коэффициента 2; определять значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов; в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, выполнять обходное декодирование дополнительных синтаксических элементов, при этом для того, чтобы выполнять обходное декодирование дополнительных синтаксических элементов, инструкции инструктируют одному или более процессорам извлекать, для коэффициента из второго набора коэффициентов, значение для параметра Райса; и определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом для того, чтобы определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, инструкции инструктируют одному или более процессорам определять значение для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль; принимать первое кодированное значение для первого коэффициента из второго набора коэффициентов; и, на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определять уровень для первого коэффициента.[0008] According to one or more examples, the computer-readable storage medium stores instructions that, when executed by one or more processors, cause one or more processors to determine a threshold number of regularly-encoded bins for a first decoding pass; for the first set of coefficients, context-decode the syntax element bins of the coefficient group until a threshold number of regular-coded bins is reached, wherein the context-decoded bins of the syntax elements contain one or more significance flags, one or more parity level flags and one or more first flags, wherein each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero or not, each of the one or more parity level flags indicates whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether or not the absolute level for the corresponding factor 2 is exceeded; determine values for the first set of transformation unit coefficients based on the context-decoded bins of the syntax elements; in response to reaching a threshold number of regularly-encoded bins, for the second set of coefficients, perform bypass decoding of additional syntax elements, wherein, in order to perform bypass decoding of additional syntax elements, instructions instruct one or more processors to extract, for a coefficient from the second set coefficients, the value for the Rice parameter; and determining values for the second set of transformation unit coefficients based on the additional syntax elements, wherein in order to determine values for the second set of transformation unit coefficients based on the additional syntax elements, the instructions cause one or more processors to determine a value for the null parameter based on the Rice parameter. , wherein the value for the null parameter identifies the encoded value that corresponds to the coefficient level zero; receive a first encoded value for a first coefficient from the second coefficient set; and, based on the value for the null parameter and the first coded value for the first coefficient, determine the level for the first coefficient.

[0009] Согласно одному примеру, оборудование для декодирования видеоданных включает в себя средство для определения порогового числа регулярно-кодированных элементов разрешения для первого прохода декодирования; средство для контекстного декодирования, для первого набора коэффициентов, элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, при этом каждый из одного или более флагов значимости указывает то, равен или нет абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, превышает или нет абсолютный уровень для соответствующего коэффициента 2; средство для определения значений для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов; средство для обходного декодирования дополнительных синтаксических элементов, для второго набора коэффициентов, в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, при этом средство для обходного декодирования дополнительных синтаксических элементов содержит средство для извлечения, для коэффициента из второго набора коэффициентов, значения для параметра Райса; и средство для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом средство для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов содержит средство для определения значения для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль; средство для приема первого кодированного значения для первого коэффициента из второго набора коэффициентов; и средство для определения уровня для первого коэффициента на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента.[0009] According to one example, equipment for decoding video data includes means for determining a threshold number of regularly-encoded bins for a first decoding pass; means for context decoding, for the first set of coefficients, the syntax element bins of the coefficient group until a threshold number of regularly encoded bins is reached, wherein the context decoded bins of the syntax elements contain one or more significance flags, one or more parity level flags and one or more first flags, each of the one or more significance flags indicating whether the absolute level for the corresponding coefficient is zero or not, each of the one or more parity level flags indicating whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether or not the absolute level for the corresponding factor 2 is exceeded; means for determining values for the first set of transformation unit coefficients based on the context decoded bins of the syntax elements; means for bypassing decoding additional syntax elements, for the second set of coefficients, in response to reaching a threshold number of regularly-coded bins, wherein the means for bypassing decoding additional syntax elements comprises means for extracting, for a coefficient from the second set of coefficients, a value for the Rice parameter ; and means for determining values for a second set of transformation unit coefficients based on the additional syntax elements, wherein the means for determining values for the second set of transformation unit coefficients based on the additional syntax elements comprises means for determining a value for a null parameter based on the Rice parameter, wherein the value for a null parameter, identifies an encoded value that corresponds to a coefficient level of zero; means for receiving a first encoded value for a first coefficient from a second set of coefficients; and means for determining a level for the first coefficient based on a value for the null parameter and a first encoded value for the first coefficient.

[0010] Подробности одного или более примеров изложены на прилагаемых чертежах и в нижеприведенном описании. Другие признаки, цели и преимущества должны становиться очевидными из описания, чертежей и формулы изобретения.[0010] Details of one or more examples are set forth in the accompanying drawings and in the description below. Other features, purposes and advantages should become 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 may perform the techniques of this 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 показывает примерный порядок для синтаксических элементов, представляющих значения абсолютного уровня для коэффициентов в группе для кодирования (CG).[0013] FIG. 3 shows an exemplary order for syntax elements representing absolute level values for coefficients in a coding group (CG).

[0014] Фиг. 4 показывает иллюстрацию эталона, используемого для выбора вероятностных моделей.[0014] FIG. 4 shows an illustration of the benchmark used to select probabilistic models.

[0015] Фиг. 5 показывает пример перемеженного Gt2-флага в первом проходе после Par-флага.[0015] FIG. 5 shows an example of an interleaved Gt2 flag in the first pass after the Par flag.

[0016] Фиг. 6 показывает пример перемеженного Gt2-флага в первом проходе после Gt1-флага.[0016] FIG. 6 shows an example of an interleaved Gt2 flag in the first pass after the Gt1 flag.

[0017] Фиг. 7 показывает пример частичного кодирования последнего коэффициента, при котором предел по регулярно-кодированным элементам разрешения достигается для SIG-Gt1-Par-Gt2-кодирования в первом проходе кодирования.[0017] FIG. 7 shows an example of partial last coefficient coding in which the regular-coded bins limit is reached for SIG-Gt1-Par-Gt2 coding in the first coding pass.

[0018] Фиг. 8 показывает пример частичного кодирования последнего коэффициента, при котором предел по регулярно-кодированным элементам разрешения достигается для SIG-Gt1-Gt2-Par-кодирования в первом проходе кодирования.[0018] FIG. 8 shows an example of a partial last coefficient encoding in which the regularly encoded bin limit is reached for SIG-Gt1-Gt2-Par encoding in the first encoding pass.

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

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

[0021] Фиг. 11A и 11B являются концептуальными схемами, иллюстрирующими процесс обновления диапазона при двоичном арифметическом кодировании.[0021] FIG. 11A and 11B are conceptual diagrams illustrating a range update process in binary arithmetic coding.

[0022] Фиг. 12 является концептуальной схемой, иллюстрирующей процесс вывода при двоичном арифметическом кодировании.[0022] FIG. 12 is a conceptual diagram illustrating an output process in binary arithmetic coding.

[0023] Фиг. 13 является блок-схемой, иллюстрирующей кодер по технологии контекстно-адаптивного двоичного арифметического кодирования (CABAC) в видеокодере.[0023] FIG. 13 is a block diagram illustrating a context adaptive binary arithmetic coding (CABAC) encoder in a video encoder.

[0024] Фиг. 14 является блок-схемой, иллюстрирующей CABAC-кодер в видеодекодере.[0024] FIG. 14 is a block diagram illustrating a CABAC encoder in a video decoder.

[0025] Фиг. 15 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеокодера.[0025] FIG. 15 is a flowchart illustrating exemplary operation of a video encoder.

[0026] Фиг. 16 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеодекодера.[0026] FIG. 16 is a flowchart illustrating exemplary operation of a video decoder.

[0027] Фиг. 17 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеодекодера.[0027] FIG. 17 is a flowchart illustrating exemplary operation of a video decoder.

Осуществление изобретенияImplementation of the invention

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

[0029] Видеодекодер декодирует и суммирует остаточные данные с прогнозирующим блоком, чтобы формировать восстановленный видеоблок, который совпадает с исходным видеоблоком более тесно, чем только прогнозирующий блок. Вследствие потерь, введенных посредством преобразования и квантования остаточных данных, восстановленный блок может иметь искажение или артефакты. Один общий тип артефакта или искажения называется "блочностью", когда границы блоков, используемых для того, чтобы кодировать видеоданные, являются видимыми.[0029] The video decoder decodes and adds the residual data to the prediction block to generate a reconstructed video block that matches the original video block more closely than just the prediction block. Due to the losses introduced by transforming and quantizing the residual data, the reconstructed block may have distortion or artifacts. One common type of artifact or distortion is called "blocking" when the boundaries of the blocks used to encode video data are visible.

[0030] Чтобы дополнительно повышать качество декодированного видео, видеодекодер может выполнять одну или более операций фильтрации для восстановленных видеоблоков. Примеры этих операций фильтрации включают в себя фильтрацию для удаления блочности, фильтрацию на основе дискретизированного адаптивного смещения (SAO) и адаптивную контурную фильтрацию (ALF). Параметры для этих операций фильтрации либо могут определяться посредством видеокодера и явно передаваться в кодированном потоке видеобитов, либо могут неявно определяться посредством видеодекодера без необходимости явно передачи параметров в кодированном потоке видеобитов.[0030] 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, sampled adaptive offset (SAO) filtering, and adaptive loop filtering (ALF). The parameters for these filtering operations may either be determined by the video encoder and be explicitly transmitted in the encoded video bitstream, or may be implicitly determined by the video decoder without having to be explicitly transmitted in the encoded video bitstream.

[0031] Как представлено выше, видеокодер преобразует остаточные данные для того, чтобы формировать коэффициенты преобразования. Эти коэффициенты преобразования дополнительно могут квантоваться. В этом раскрытии, термин "коэффициент преобразования" или "коэффициент", может означать квантованный коэффициент преобразования или неквантованный коэффициент преобразования. Это раскрытие описывает технологии для передачи в служебных сигналах значений коэффициентов преобразования, например, квантованных коэффициентов преобразования, из видеокодера в видеодекодер. Более конкретно, это раскрытие описывает технологии, связанные с процессом энтропийного декодирования, который преобразует двоичное представление битов в последовательность недвоичных квантованных коэффициентов преобразования. Соответствующий процесс энтропийного кодирования, который, в общем, представляет собой обратным процессом по отношению к энтропийному декодированию, также описывается в этом раскрытии.[0031] As presented above, the video encoder transforms the residual data in order to generate transform coefficients. These transform coefficients may further be quantized. In this disclosure, the term "transform factor" or "coefficient" may mean a quantized transform coefficient or a non-quantized transform coefficient. This disclosure describes techniques for signaling transform coefficient values, such as quantized transform coefficients, from a video encoder to a video decoder. More specifically, this disclosure describes technologies associated with an entropy decoding process that converts a binary representation of bits into a sequence of non-binary quantized transform coefficients. The corresponding entropy encoding process, which is generally the inverse of entropy decoding, is also described in this disclosure.

[0032] В одном примере, это раскрытие описывает технологии для определения параметра Райса, используемого для того, чтобы задавать коды, например, коды Голомба-Райса или экспоненциальные коды Голомба, для кодирования оставшихся абсолютных значений уровней коэффициентов для блока коэффициентов, причем контекстно-адаптивное двоичное арифметическое кодирование (CABAC) используется для того, чтобы кодировать другие индикаторы относительно значимых коэффициентов, такие как уровни коэффициентов, большие 1, и уровни коэффициентов, большие 2. Уровни коэффициентов могут представлять собой уровни коэффициентов преобразования в случае кодирования с потерями, или уровни коэффициентов, для которых не применяется преобразование (т.е. остаточные пиксельные значения), в случае кодирования без потерь или кодирования с потерями в режиме пропуска преобразования. Как подробнее поясняется ниже, уровень коэффициентов может составлять либо абсолютное значение для уровня коэффициентов, либо оставшийся уровень для уровня коэффициентов.[0032] In one example, this disclosure describes techniques for determining a Rice parameter used to define codes, such as Golomb-Rice codes or exponential Golomb codes, for encoding the remaining absolute values of the coefficient levels for a block of coefficients, wherein context-adaptive binary arithmetic coding (CABAC) is used to encode other indications of relatively significant coefficients, such as coefficient levels greater than 1 and coefficient levels greater than 2. The coefficient levels may be transform coefficient levels in the case of lossy coding, or coefficient levels , for which no transformation is applied (i.e. residual pixel values), in the case of lossless coding or lossy coding in transform skipping mode. As explained in more detail below, the coefficient level may be either the absolute value for the coefficient level or the remaining level for the coefficient level.

[0033] Параметр Райса является настраиваемым значением, используемым для того, чтобы выбирать набор кодовых слов из семейства кодов Голомба, например, кодов Голомба-Райса или экспоненциальных кодов Голомба. Коды, заданные посредством параметра Райса, могут использоваться для того, чтобы кодировать оставшееся абсолютное значение уровня коэффициентов, по меньшей мере, для одного коэффициента в единице преобразования (TU) или в группе коэффициентов (CG), т.е. в блоке коэффициентов. Каждая из CG может представлять собой блок преобразования 4×4 или субблок 4×4 блока преобразования видеоданных. CG могут включать в себя коэффициенты преобразования в случае кодирования с потерями или коэффициенты, для которых не применяется преобразование, в случае кодирования без потерь или кодирования с потерями в режиме пропуска преобразования.[0033] The Rice parameter is a configurable value used to select a set of codewords from a family of Golomb codes, such as Golomb-Rice codes or Exponential Golomb codes. The codes specified by the Rice parameter may be used to encode the remaining absolute coefficient level value for at least one coefficient in a transform unit (TU) or coefficient group (CG), i.e. in the block of coefficients. Each of the CGs may be a 4×4 transform block or a 4×4 subblock of a video data transform block. The CGs may include transform coefficients in the case of lossy coding, or coefficients for which no transform is applied in the case of lossless coding or lossy coding in transform skipping mode.

[0034] Это раскрытие дополнительно описывает технологии для определения значения для нулевого параметра на основе параметра Райса. Нулевой параметр представляет значение потока битов, которое соответствует уровню коэффициентов нуль. Если вероятность равенства уровня коэффициентов нулю является относительно низкой, то более длинное кодовое слово или значение потока битов может назначаться уровню коэффициентов нуль таким образом, что более короткие кодовые слова могут использоваться для ненулевых значений. Технологии этого раскрытия могут улучшать сжатие видео посредством улучшения выбора нулевых параметров таким образом, что биты могут экономиться при кодировании уровней коэффициентов.[0034] This disclosure further describes techniques for determining a value for a null parameter based on the Rice parameter. The null parameter represents the value of the bitstream that corresponds to the coefficient level zero. If the probability of a coefficient level being zero is relatively low, then a longer codeword or bitstream value may be assigned a coefficient level of zero such that shorter codewords can be used for non-zero values. The techniques of this disclosure can improve video compression by improving the choice of zero parameters such that bits can be saved when encoding coefficient levels.

[0035] Технологии этого раскрытия могут применяться к любым из существующих видеокодеков, таким как стандарт высокоэффективного кодирования видео (HEVC), либо могут предлагаться в качестве перспективного инструментального средства кодирования для новых стандартов кодирования видео, таких как стандарт универсального кодирования видео (VVC), разрабатываемый в данный момент, или для других будущих стандартов кодирования видео.[0035] The techniques of this disclosure may be applied to any of the existing video codecs, such as the High Efficiency Video Coding (HEVC) standard, or may be proposed as a promising coding tool for new video coding standards, such as the Universal Video Coding (VVC) standard under development. currently, or for other future video coding standards.

[0036] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять технологии этого раскрытия. Технологии этого раскрытия, в общем, направлены на кодирование (кодирование и/или декодирование) видеоданных. В общем, видеоданные включают в себя любые данные для обработки видео. Таким образом, видеоданные могут включать в себя необработанное некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и видеометаданные, такие как служебные данные.[0036] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that may perform the techniques of this disclosure. The technologies of this disclosure are generally directed to encoding (encoding and/or decoding) video data. In general, 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 ancillary data.

[0037] Как показано на фиг. 1, система 100 включает в себя исходное устройство 102, которое предоставляет кодированные видеоданные, которые должны декодироваться и отображаться посредством целевого устройства 116, в этом примере. В частности, исходное устройство 102 предоставляет видеоданные в целевое устройство 116 через машиночитаемый носитель 110. Исходное устройство 102 и целевое устройство 116 могут содержать любые из широкого диапазона устройств, включающих в себя настольные компьютеры, ноутбуки (т.е. переносные компьютеры), планшетные компьютеры, абонентские приставки, телефонные трубки, к примеру, смартфоны, телевизионные приемники, камеры, устройства отображения, цифровые мультимедийные проигрыватели, консоли для видеоигр, устройство потоковой передачи видео и т.п. В некоторых случаях, исходное устройство 102 и целевое устройство 116 могут оснащаться возможностями беспроводной связи и в силу этого могут называться "устройствами беспроводной связи".[0037] As shown in FIG. 1, system 100 includes a source device 102 that provides encoded video data to be decoded and displayed by target device 116, 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 may comprise any of a wide range of devices including desktop computers, laptops (i.e., laptops), tablet computers. , set-top boxes, handsets, such as smartphones, televisions, cameras, display devices, digital media players, video game consoles, video streaming device, etc. In some cases, source device 102 and destination device 116 may be equipped with wireless communication capabilities and may therefore be referred to as "wireless devices".

[0038] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для кодирования коэффициентов, описанные в данном документе. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.[0038] In the example of FIG. 1, source device 102 includes a video source 104, a storage device 106, a video encoder 200, and an output interface 108. The target device 116 includes an input interface 122, a video decoder 300, a storage device 120, and a display device 118. In accordance with this disclosure, video encoder 200 of source device 102 and video decoder 300 of target device 116 may be configured to apply the techniques for encoding coefficients described herein. Thus, source device 102 represents an example of a video encoding device, while destination device 116 represents an example of a video decoding device. In other examples, the source device and the target device may include other components or arrangements. For example, source device 102 may receive video data from an external video source such as an external camera. Likewise, target device 116 may interact with an external display device instead of including an integrated display device.

[0039] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для кодирования коэффициентов, описанные в данном документе. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие обозначает устройство "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, исходное устройство 102 и целевое устройство 116 могут работать практически симметрично таким образом, что каждое из исходного устройства 102 и целевого устройства 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между исходным устройством 102 и целевым устройством 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.[0039] System 100, as shown in FIG. 1 is just one example. In general, any digital video encoding and/or decoding device may implement the techniques for coefficient encoding described herein. Source device 102 and destination device 116 are merely examples of such encoders, in which source device 102 generates encoded video data for transmission to destination device 116. This disclosure refers to an "encoder" as a device that performs encoding (encoding and/or decoding ) data. Thus, video encoder 200 and video decoder 300 represent examples of encoding devices, specifically a video encoder and a video decoder, respectively. In some examples, source device 102 and target device 116 may operate substantially symmetrically such that source device 102 and target device 116 each include video encoding and decoding components. Therefore, system 100 can support one-way and two-way video transmission between source device 102 and destination device 116, such as for video streaming, video playback, video broadcast, or video telephony.

[0040] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию изображений (также называемых "кадрами") видеоданных в видеокодер 200, который кодирует данные для кадров. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или машиногенерируемые видеоданные. Видеокодер 200 может перекомпоновывать кадры из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на машиночитаемый носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.[0040] In general, video source 104 represents a source of video data (ie, raw, uncoded video data) and provides a sequential series of pictures (also referred to as "frames") of video data to video encoder 200, which encodes data for frames. 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 live video interface to receive video from a video content provider. As a further alternative, video source 104 may generate computer graphics 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 machine-generated video data. Video encoder 200 may re-arrange frames from receive order (sometimes referred to as "display order") to encoding order for encoding. Video encoder 200 may generate a bit stream including encoded video data. Source device 102 may then output the encoded video data via output interface 108 to computer-readable media 110 for reception and/or retrieval, such as via input interface 122 of target device 116.

[0041] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некоторых примерах, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут хранить программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя запоминающее устройство 106 и запоминающее устройство 120 показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.[0041] The storage device 106 of the source device 102 and the storage device 120 of the target device 116 are general purpose storage devices. In some examples, memories 106, 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, 120 may store program instructions executable by video encoder 200, for example. and video decoder 300, respectively. Although memory 106 and memory 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 storage devices for functionally similar or equivalent purposes. Additionally, memories 106, 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, 120 may be allocated as one or more video buffers, such as to store raw, decoded and/or encoded video data.

[0042] Машиночитаемый носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, машиночитаемый носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый сигнал передачи, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.[0042] Computer-readable media 110 may represent any type of media or device capable of transporting encoded video data from source device 102 to destination device 116. In one example, computer-readable media 110 represents a communication medium to allow source device 102 to transmit encoded video data directly to a target device. device 116 in real time, such as via an RF network or a computer network. Output interface 108 may modulate a transmitted signal including encoded video data, and input interface 122 may demodulate a received transmission signal according to a communication standard such as a wireless communication protocol. The communication medium may comprise any wireless or wired communication medium such as radio frequency (RF) spectrum or one or more physical transmission lines. The communication medium may form part of a packet-switched network such as a local area network, a wide area network, or a wide area network such as the Internet. The communications medium may include routers, switches, base stations, or any other equipment that may be useful to facilitate transmission from source device 102 to destination device 116.

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

[0044] В некоторых примерах, исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.[0044] In some examples, source device 102 may output encoded video data to file server 114 or other intermediate storage device that may store encoded video generated by source device 102. Target device 116 may access stored video data from 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 that encoded video data to target device 116. File server 114 may be a web server (e.g. for a web site), file transfer protocol (FTP) server, , a networked content delivery device, or a Network Attached Storage System (NAS) protocol device. The target device 116 may access the encoded video data from the file server 114 via any standard data connection, including an Internet connection. It may include a wireless link (eg, Wi-Fi connection), a wired connection (eg, digital subscriber line (DSL), cable modem, etc.), or a combination thereof that is appropriate for accessing encoded video data. stored on file server 114. File server 114 and input interface 122 may be configured to operate according to a streaming protocol, a download-based transfer protocol, or a combination of the above.

[0045] Интерфейс 108 вывода и интерфейс 122 ввода могут представлять беспроводные передающие устройства/приемные устройства, модемы, проводные сетевые компоненты (например, Ethernet-карты), компоненты беспроводной связи, которые работают согласно любым из множества IEEE 802.11-стандартов, либо другие физические компоненты. В примерах, в которых интерфейс 108 вывода и интерфейс 122 ввода содержат беспроводные компоненты, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно стандарту сотовой связи, такому как 4G, 4G LTE (стандарт долгосрочного развития), усовершенствованный стандарт LTE, 5G и т.п. В некоторых примерах, в которых интерфейс 108 вывода содержит беспроводное передающее устройство, интерфейс 108 вывода и интерфейс 122 ввода могут быть выполнены с возможностью передавать данные, к примеру, кодированные видеоданные, согласно другим стандартам беспроводной связи, таким как IEEE 802.11-спецификация, IEEE 802.15-спецификация (например, ZigBee™), стандарт Bluetooth™ и т.п. В некоторых примерах, исходное устройство 102 и/или целевое устройство 116 могут включать в себя соответствующие внутримикросхемные (SoC) устройства. Например, исходное устройство 102 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеокодеру 200 и/или интерфейсу 108 вывода, и целевое устройство 116 может включать в себя SoC-устройство, чтобы выполнять функциональность, приписываемую видеодекодеру 300 и/или интерфейсу 122 ввода.[0045] Output interface 108 and input interface 122 may represent wireless transmitter/receiver devices, modems, wired network components (e.g., Ethernet cards), wireless communication components that operate according to any of a variety of IEEE 802.11 standards, or other physical Components. In examples in which the output interface 108 and the input interface 122 comprise wireless components, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, according to a cellular communication standard such as 4G, 4G LTE (standard long-term development), advanced LTE, 5G, etc. In some examples, in which 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, according to other wireless communication standards such as the IEEE 802.11 specification, IEEE 802.15 - specification (eg ZigBee™), Bluetooth™ standard, etc. In some examples, source device 102 and/or target device 116 may include respective on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functionality attributed to video encoder 200 and/or output interface 108, and target device 116 may include an SoC device to perform functionality attributed to video decoder 300 and/or interface 122 entries.

[0046] Технологии этого раскрытия могут применяться к кодированию видео в поддержку любых из множества мультимедийных вариантов применения, таких как телевизионные широковещательные передачи по радиоинтерфейсу, кабельные телевизионные передачи, спутниковые телевизионные передачи, потоковые передачи видео по Интернету, такие как динамическая адаптивная потоковая передача по HTTP (DASH), цифровое видео, которое кодируется на носитель данных, декодирование цифрового видео, сохраненного на носителе данных, или другие варианты применения.[0046] The techniques of this disclosure may be applied to video coding in support of any of a variety of multimedia applications such as over-the-air television broadcasts, cable television, satellite television, video streaming over the Internet such as dynamic adaptive streaming over HTTP (DASH), digital video that is encoded onto a storage medium, decoding of digital video stored on a storage medium, or other applications.

[0047] Интерфейс 122 ввода целевого устройства 116 принимает кодированный поток видеобитов из машиночитаемого носителя 110 (например, среды связи, устройства 112 хранения данных, файлового сервера 114 и т.п.). Кодированный поток видеобитов может включать в себя служебную информацию, заданную посредством видеокодера 200, которая также используется посредством видеодекодера 300, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку видеоблоков либо других кодированных единиц (например, срезов, кадров, групп кадров, последовательностей и т.п.). Устройство 118 отображения отображает декодированные кадры декодированных видеоданных пользователю. Устройство 118 отображения может представлять любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.[0047] The input interface 122 of the target device 116 receives an encoded video bit stream from a computer-readable medium 110 (eg, communication media, storage device 112, file server 114, etc.). The encoded video bitstream may include overhead information specified 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 encoded units (e.g., slices, frames, groups frames, sequences, etc.). The display device 118 displays the decoded frames of the decoded video data to the user. Display device 118 may represent any of a variety of display devices such as a cathode ray tube (CRT) display, liquid crystal display (LCD), plasma display, organic light emitting diode (OLED) display, or other type of display device.

[0048] Хотя не показано на фиг. 1, в некоторых примерах, видеокодер 200 и видеодекодер 300 могут быть интегрированы с аудиокодером и/или аудиодекодером и могут включать в себя соответствующие модули мультиплексора-демультиплексора либо другие аппаратные средства и программное обеспечение для того, чтобы обрабатывать мультимедийные потоки, включающие в себя как аудио, так и видео в общем потоке данных. Если применимо, модули мультиплексора-демультиплексора могут соответствовать протоколу мультиплексора ITU H.223 или другим протоколам, таким как протокол пользовательских дейтаграмм (UDP).[0048] 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-de-multiplexer modules or other hardware and software in order to process media streams including both audio , and video in the general data stream. If applicable, the multiplexer-demultiplexer modules may conform to the ITU H.223 Multiplexer Protocol or other protocols such as User Datagram Protocol (UDP).

[0049] Видеокодер 200 и видеодекодер 300 могут реализовываться как любая из множества надлежащих схем кодера и/или декодера, к примеру, как один или более микропроцессоров, процессоров цифровых сигналов (DSP), специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA), как дискретная логика, программное обеспечение, аппаратные средства, микропрограммное обеспечение либо как любые комбинации вышеозначенного. Когда технологии реализуются частично в программном обеспечении, устройство может сохранять инструкции для программного обеспечения на подходящем энергонезависимом машиночитаемом носителе и выполнять инструкции в аппаратных средствах с использованием одного или более процессоров, чтобы осуществлять технологии этого раскрытия. Каждый из видеокодера 200 и видеодекодера 300 может быть включен в один или более кодеров или декодеров, любой из которых может быть интегрирован как часть комбинированного кодера/декодера (кодека) в соответствующем устройстве. Устройство, включающее в себя видеокодер 200 и/или видеодекодер 300, может содержать интегральную схему, микропроцессор и/или устройство беспроводной связи, такое как сотовый телефон.[0049] 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), field programmable gate arrays ( FPGA) as discrete logic, software, hardware, firmware, or any combination of the above. When the technologies are implemented in part in software, a device may store instructions for the software on a suitable non-volatile computer-readable medium and execute the instructions in hardware using one or more processors to implement the technologies of this 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 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.

[0050] Видеокодер 200 и видеодекодер 300 могут работать согласно стандарту кодирования видео, такому как ITU-T H.265, также называемому "стандартом высокоэффективного кодирования видео (HEVC)", либо его расширениям, таким как расширения кодирования многовидового видео и/или масштабируемого кодирования видео. Альтернативно, видеокодер 200 и видеодекодер 300 могут работать согласно другим собственным или отраслевым стандартам, таким как стандарт объединенной исследовательской группы тестовой модели (JEM) или ITU-T H.266, также называемый "универсальным кодированием видео (VVC)". Последний проект VVC-стандарта описывается в работе авторов Bross и др. "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, 15 конференция: Гетеборг, Швеция, 3-12 июля 2019 года, JVET-O2001-vE (далее "VVC-проект 6"). Тем не менее, технологии этого раскрытия не ограничены каким-либо конкретным стандартом кодирования.[0050] Video encoder 200 and video decoder 300 may operate according to a video coding standard such as ITU-T H.265, also referred to as the "High Efficiency Video Coding (HEVC) standard", 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 according to other proprietary or industry standards, such as the Joint Research Establishment Test Model (JEM) standard or ITU-T H.266, also referred to as "Versatile Video Coding (VVC)". The latest draft of the 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 conference: Gothenburg, Sweden, July 3-12, 2019, JVET-O2001-vE (hereinafter referred to as "VVC project 6"). However, the techniques of this disclosure are not limited to any particular coding standard.

[0051] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование кадров на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок кадра, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.[0051] In general, video encoder 200 and video decoder 300 may perform block-based frame coding. The term "block" generally means a structure including 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 luma and/or chrominance data samples. In general, video encoder 200 and video decoder 300 may encode video data represented in YUV- (eg, Y, Cb, Cr) format. Thus, instead of encoding the red, green, and blue (RGB) data for the frame samples, video encoder 200 and video decoder 300 may encode luminance and chrominance components, where the chrominance components may include red hue and blue tint chrominance components. . In some examples, video encoder 200 converts received RGB-formatted data to YUV prior to encoding, and video decoder 300 converts YUV to RGB. Alternatively, pre- and post-processing modules (not shown) can perform these transformations.

[0052] Это раскрытие, в общем, может означать кодирование (например, кодирование и декодирование) кадров, которое включает в себя процесс кодирования или декодирования данных кадра. Аналогично, это раскрытие может означать кодирование блоков кадра, которое включает в себя процесс кодирования или декодирования данных для блоков, например, прогнозное кодирование и/или остаточное кодирование. Кодированный поток видеобитов, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию кадров на блоки. Таким образом, ссылки на кодирование кадра или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих кадр или блок.[0052] This disclosure can generally mean encoding (eg, encoding and decoding) frames, which includes the process of encoding or decoding frame data. Likewise, this disclosure may refer to coding of blocks of a frame, which includes the process of encoding or decoding data for blocks, such as predictive coding and/or residual coding. The encoded video bitstream generally includes a sequence of values for syntax elements representing encoding decisions (eg, encoding modes) and frame segmentation into blocks. Thus, references to a frame or block encoding are generally to be understood as value encodings for the syntax elements forming the frame or block.

[0053] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (к примеру, видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментируют CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные взаимного прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.[0053] HEVC defines various blocks including coding units (CU), prediction units (PU), and transform units (TU). According to HEVC, a video encoder (eg, video encoder 200) segments a coding tree unit (CTU) into CUs according to a quadtree structure. Thus, the video encoder segments 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 segment the PU and TU. For example, in HEVC, a residual quadtree (RQT) represents the segmentation of a 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 indicator.

[0054] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует кадр на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на дерево квадрантов, и второй уровень, сегментированный согласно сегментации на двоичное дерево. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).[0054] As another example, video encoder 200 and video decoder 300 may be configured to operate according to JEM or VVC. According to JEM or VVC, a video encoder (eg, video encoder 200) segments a frame into multiple coding tree units (CTUs). Video encoder 200 may segment the CTU according to a tree structure, such as a quadtree binary tree (QTBT) structure or a multitype tree (MTT) structure. The QTBT framework removes the concepts of several types of segmentation, such as the division between CUs, PUs, and HEVC TUs. The QTBT structure includes two levels: a first level segmented according to quadtree segmentation and a second level segmented according to binary tree segmentation. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

[0055] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT) (также называемого "третичным деревом (TT)). Сегмент троичного или третичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного или третичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.[0055] In an MTT segmentation structure, blocks may be segmented using a quadtree (QT) segment, a binary tree (BT) segment, and one or more types of ternary tree (TT) segments (also referred to as "tertiary tree (TT)"). A ternary or tertiary tree segment is a segment in which a block is split into three sub-blocks.In some examples, a ternary or tertiary tree segment divides a block into three sub-blocks without splitting the original block down the center.Types of segmentation in MTT (e.g., QT, BT, and TT) may be symmetrical or asymmetrical.

[0056] В некоторых примерах, видеокодер 200 и видеодекодер 300 могут использовать одну QTBT- или MTT-структуру для того, чтобы представлять каждый из компонентов яркости и цветности, в то время как в других примерах, видеокодер 200 и видеодекодер 300 могут использовать две или более QTBT- или MTT-структур, к примеру, одну QTBT/MTT-структуру для компонента яркости и другую QTBT/MTT-структуру для обоих компонентов цветности (либо две QTBT/MTT-структуры для соответствующих компонентов цветности).[0056] 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).

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

[0058] Блоки (например, CTU или CU) могут группироваться различными способами в кадр. В качестве одного примера, кирпич может означать прямоугольную область CTU-строк в конкретной плитке в кадре. Плитка может представлять собой прямоугольную область CTU в конкретном столбце плиток и конкретной строке плиток в кадре. Столбец плиток означает прямоугольную область CTU, имеющих высоту, равную высоте кадра, и ширину, указываемую посредством синтаксических элементов (например, в наборе параметров кадра). Строка плиток означает прямоугольную область CTU, указывающих высоту посредством синтаксических элементов (например, в наборе параметров кадра), и ширину, равную ширине кадра.[0058] Blocks (eg, CTU or CU) may be grouped in various ways into a frame. As one example, a brick may refer to a rectangular area of CTU rows in a particular tile in a frame. A tile may be a rectangular area of the CTU in a particular column of tiles and a particular row of tiles in a frame. A column of tiles means a rectangular area of CTUs having a height equal to the height of a frame and a width specified by syntax elements (eg, in a frame parameter set). A row of tiles means a rectangular area of CTUs indicating a height via syntax elements (eg, in a frame parameter set) and a width equal to the frame width.

[0059] В некоторых примерах, плитка может сегментироваться на несколько кирпичей, каждый из которых может включать в себя одну или более CTU-строк внутри плитки. Плитка, которая не сегментируется на несколько кирпичей, также может называться "кирпичом". Тем не менее, кирпич, который представляет собой истинный поднабор плитки, может не называться "плиткой".[0059] In some examples, a tile may be segmented into multiple bricks, each of which may include one or more CTU rows within the tile. A tile that does not segment into multiple bricks may also be referred to as a "brick". However, a brick that is a true subset of a tile may not be referred to as a "tile".

[0060] Кирпичи в кадре также могут размещаться в срезе. Срез может представлять собой целое число кирпичей кадра, которые могут содержаться исключительно в одной единице слоя абстрагирования от сети (NAL). В некоторых примерах, срез включает в себя либо определенное число полных плиток, либо только жесткую последовательность полных кирпичей одной плитки.[0060] Bricks in a frame can also be placed in a slice. A slice can be an integer number of frame bricks that can be contained solely in one network abstraction layer (NAL) unit. In some examples, a slice includes either a certain number of full tiles, or only a rigid sequence of full bricks of a single tile.

[0061] Это раскрытие может использовать "N×N" и "N на N" взаимозаменяемо, чтобы ссылаться на размеры в выборках блока (к примеру, CU или другого видеоблока) с точки зрения размеров по вертикали и горизонтали, например, на выборки 16×16 или выборки 16 на 16. В общем, CU 16×16 должна иметь 16 пикселов в вертикальном направлении (y=16) и 16 пикселов в горизонтальном направлении (x=16). Аналогично, CU NxN, в общем, имеет N выборок в вертикальном направлении и N выборок в горизонтальном направлении, при этом N представляет неотрицательное целочисленное значение. Выборки в CU могут размещаться в строках и столбцах. Кроме того, CU не обязательно должны иметь идентичное число выборок в горизонтальном направлении и в вертикальном направлении. Например, CU могут содержать NxM выборок, причем M не обязательно равно N.[0061] This disclosure may use "N×N" and "N by N" interchangeably to refer to sizes in samples of a block (e.g., CU or other video block) in terms of vertical and horizontal dimensions, e.g., samples 16 ×16 or 16x16 samples. In general, a 16x16 CU should have 16 pixels in the vertical direction (y=16) and 16 pixels in the horizontal direction (x=16). Similarly, an NxN CU generally has N samples in the vertical direction and N samples in the horizontal direction, with N representing a non-negative integer value. Samples in a CU can be placed 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, CUs may contain NxM samples, with M not necessarily equal to N.

[0062] Видеокодер 200 кодирует видеоданные для CU, представляющих информацию прогнозирования и/или остаточную информацию и другую информацию. Информация прогнозирования указывает то, как CU должна прогнозироваться, чтобы формировать прогнозный блок для CU. Остаточная информация, в общем, представляет последовательные выборочные разности между выборками CU до кодирования и прогнозным блоком.[0062] 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 generally the successive sample differences between pre-coding CU samples and the prediction block.

[0063] Чтобы прогнозировать CU, видеокодер 200, в общем, может формировать прогнозный блок для CU через взаимное прогнозирование или внутреннее прогнозирование. Взаимное прогнозирование, в общем, означает прогнозирование CU из данных ранее кодированного кадра, тогда как внутреннее прогнозирование, в общем, означает прогнозирование CU из ранее кодированных данных идентичного кадра. Чтобы выполнять взаимное прогнозирование, видеокодер 200 может формировать прогнозный блок с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения для того, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может прогнозировать текущую CU с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.[0063] To predict a CU, video encoder 200 may generally generate a predictive block for the CU via inter-prediction or intra-prediction. Mutual prediction generally means predicting a CU from a previously coded frame data, while intra prediction generally means predicting a CU from a previously coded identical frame data. To perform inter prediction, video encoder 200 may generate a prediction block using one or more motion vectors. Video encoder 200 may generally perform a motion search in order 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 differences (MAD), root mean square differences (MSD), or other such difference calculations to determine whether or not a reference block closely matches. with the current CU. In some examples, video encoder 200 may predict the current CU using unidirectional prediction or bidirectional prediction.

[0064] Некоторые примеры JEM и VVC также предоставляют аффинный режим компенсации движения, который может считаться режимом взаимного прогнозирования. В аффинном режиме компенсации движения, видеокодер 200 может определять два или более векторов движения, которые представляют непоступательное движение в пространстве, такое как увеличение или уменьшение масштаба, вращение, перспективное движение или другие типы нерегулярного движения.[0064] 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 in space, such as zoom in or out, rotation, perspective motion, or other types of irregular motion.

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

[0066] Видеокодер 200 кодирует данные, представляющие режим прогнозирования для текущего блока. Например, для режимов взаимного прогнозирования, видеокодер 200 может кодировать данные, представляющие то, какой из различных доступных режимов взаимного прогнозирования используется, а также информацию движения для соответствующего режима. Для однонаправленного или двунаправленного взаимного прогнозирования, например, видеокодер 200 может кодировать векторы движения с использованием усовершенствованного прогнозирования векторов движения (AMVP) или режима объединения. Видеокодер 200 может использовать аналогичные режимы для того, чтобы кодировать векторы движения для аффинного режима компенсации движения.[0066] Video encoder 200 encodes data representing a 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 unidirectional or bidirectional inter-prediction, for example, video encoder 200 may encode motion vectors using advanced motion vector prediction (AMVP) or combining mode. Video encoder 200 may use similar modes to encode motion vectors for the affine motion compensation mode.

[0067] После прогнозирования, такого как внутреннее прогнозирование или взаимное прогнозирование блока, видеокодер 200 может вычислять остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют выборку посредством выборочных разностей между блоком и прогнозным блоком для блока, сформированных с использованием соответствующего режима прогнозирования. Видеокодер 200 может применять одно или более преобразований к остаточному блоку, чтобы формировать преобразованные данные в области преобразования вместо выборочной области. Например, видеокодер 200 может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным видеоданным. Дополнительно, видеокодер 200 может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неразделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Видеокодер 200 формирует коэффициенты преобразования после применения одного или более преобразований.[0067] After prediction, such as intra prediction or block inter prediction, video encoder 200 may calculate residual data for the block. Residual data, such as a residual block, represents a sample by means of sample differences between a block and a prediction block for the block generated using the corresponding prediction mode. Video encoder 200 may apply one or more transforms to the residual block to generate transformed data in a transform region instead of a 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. Additionally, video encoder 200 may apply a secondary transform after the first transform, such as mode-dependent non-separable secondary transform (MDNSST), signal-dependent transform, Karhunen-Loeve (KLT) transform, and the like. Video encoder 200 generates transform coefficients after applying one or more transforms.

[0068] Как отмечено выше, после преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 200 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты преобразования, обеспечивая дополнительное сжатие. Посредством выполнения процесса квантования, видеокодер 200 может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, видеокодер 200 может округлять n-битовое значение в меньшую сторону до m-битового значения во время квантования, где n превышает m. В некоторых примерах, чтобы выполнять квантование, видеокодер 200 может выполнять побитовый сдвиг вправо значения, которое должно квантоваться.[0068] As noted above, after transforms to generate transform coefficients, video encoder 200 may perform quantization of the transform coefficients. Quantization generally means a process in which transform coefficients are quantized to possibly reduce the amount of data used to represent the transform coefficients, providing additional compression. By performing the quantization process, video encoder 200 may reduce the bit depth associated with some or all of the transform coefficients. For example, video encoder 200 may round down 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.

[0069] После квантования, видеокодер 200 может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может проектироваться с возможностью размещать коэффициенты преобразования с более высокой энергией (и в силу этого с более низкой частотой) в начале вектора и размещать коэффициенты преобразования с более низкой энергией (и в силу этого с более высокой частотой) в конце вектора. В некоторых примерах, видеокодер 200 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, чтобы формировать преобразованный в последовательную форму вектор, и затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, видеокодер 200 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, видеокодер 200 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному двоичному арифметическому кодированию (CABAC). Видеокодер 200 также может энтропийно кодировать другие синтаксические элементы, описывающие метаданные, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 300 при декодировании видеоданных.[0069] After quantization, video encoder 200 may scan transform coefficients forming a one-dimensional vector from a two-dimensional matrix including the quantized transform coefficients. The scan may be designed to place higher energy (and therefore lower frequency) transform coefficients at the beginning of the vector and place lower energy (and therefore 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 generate 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 according to context adaptive binary arithmetic coding (CABAC). Video encoder 200 may also entropy encode other syntax elements describing metadata associated with encoded video data for use by video decoder 300 when decoding video data.

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

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

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

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

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

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

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

[0077] В общем, CTU 132 по фиг. 2B может быть ассоциирована с параметрами, задающими размеры блоков, соответствующих узлам QTBT-структуры 130 на первом и втором уровнях. Эти параметры могут включать в себя CTU-размер (представляющий размер CTU 132 в выборках), минимальный размер дерева квадрантов (MinQTSize, представляющий минимальный разрешенный размер узлов-листьев дерева квадрантов), максимальный размер двоичного дерева (MaxBTSize, представляющий максимальный разрешенный размер корневых узлов двоичного дерева), максимальную глубину двоичного дерева (MaxBTDepth, представляющий максимальную разрешенную глубину двоичного дерева) и минимальный размер двоичного дерева (MinBTSize, представляющий минимальный разрешенный размер узлов-листьев двоичного дерева).[0077] In general, the CTU 132 of FIG. 2B may be associated with parameters specifying block sizes corresponding to the nodes of the QTBT structure 130 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 allowed size of quadtree leaf nodes), maximum binary tree size (MaxBTSize, representing the maximum allowed size of binary root nodes). tree), the maximum depth of a binary tree (MaxBTDepth, representing the maximum allowed depth of a binary tree), and the minimum size of a binary tree (MinBTSize, representing the minimum allowed size of leaf nodes of a binary tree).

[0078] Корневой узел QTBT-структуры, соответствующей CTU, может иметь четыре дочерних узла на первом уровне QTBT-структуры, каждый из которых может сегментироваться согласно сегментации на дерево квадрантов. Таким образом, узлы первого уровня либо представляют собой узлы-листья (имеющие дочерние узлы), либо имеют четыре дочерних узла. Пример QTBT-структуры 130 представляет такие узлы как включающие в себя родительский узел и дочерний узлы, имеющие сплошные линии для ветвей. Если узлы первого уровня не превышают максимальный разрешенный размер корневых узлов двоичного дерева (MaxBTSize), то узлы дополнительно могут сегментироваться посредством соответствующих двоичных деревьев. Разбиение на двоичное дерево одного узла может обрабатываться с помощью итераций до тех пор, пока узлы, получающиеся в результате разбиения, не достигают минимального разрешенного размера узлов-листьев двоичного дерева (MinBTSize) или максимальной разрешенной глубины двоичного дерева (MaxBTDepth). Пример QTBT-структуры 130 представляет такие узлы как имеющие пунктирные линии для ветвей. Узел-лист двоичного дерева называется "единицей кодирования (CU)", которая используется для прогнозирования (например, внутрикадрового или межкадрового прогнозирования) и преобразования, без дальнейшей сегментации. Как пояснено выше, CU также могут называться "видеоблоками" или "блоками".[0078] 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 segmented according to segmentation into a quadtree. Thus, first-level nodes are either leaf nodes (having child nodes) or have four child nodes. An example QTBT structure 130 represents such nodes as including a parent node and child nodes having solid lines for branches. If the nodes of the first level do not exceed the maximum allowed size of the root nodes of the binary tree (MaxBTSize), then the nodes can additionally be segmented by means of the corresponding binary trees. Splitting into a binary tree of a single node can be iterated until the resulting nodes of the split reach the minimum allowed leaf node size of the binary tree (MinBTSize) or the maximum allowed binary tree depth (MaxBTDepth). Example QTBT structure 130 represents such nodes as having dashed lines for branches. A leaf node of a binary tree is called a "coding unit (CU)" which is used for prediction (eg, intra-picture or inter-picture prediction) and transformation without further segmentation. As explained above, CUs may also be referred to as "video blocks" or "blocks".

[0079] В одном примере 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" и дополнительно обрабатываются согласно прогнозированию и преобразованию без дополнительной сегментации.[0079] In one example of a QTBT segmentation 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( for width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree segmentation is applied to the CTU first to form the leaf nodes of the quadtree. The leaf nodes of the quadtree can range in size from 16×16 (i.e. MinQTSize) to 128×128 (i.e. CTU size). If the leaf node of the quadtree is 128×128, then it should not be further split by the binary tree because the size exceeds MaxBTSize (ie 64×64, in this example). Otherwise, the leaf node of the quadtree is further segmented by a binary tree. Therefore, 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 implies that no additional horizontal splitting is allowed. Similarly, a binary tree node having a height equal to MinBTSize implies that additional vertical splitting is not allowed for that binary tree node. As noted above, the leaf nodes of the binary tree are called "CU" and are further processed according to prediction and transformation without additional segmentation.

[0080] Квантование с решетчатым кодированием (TCQ) предложено в работе авторов H. Schwarz, T. Nguyen, D. Marpe, T. Wiegand, M. Karczewicz, M. Coban, J. Dong, "CE7: Transform coefficient coding with reduced number of regular-coded bins (tests 7.1.3a, 7.1.3b)", JVET document JVET-L0274, Макао, Китай, октябрь 2018 года (далее JVET-L0274). В технологиях JVET-L0274, два скалярных квантователя переключаемо используются для квантования/деквантования. Скалярный квантователь, используемый для текущего коэффициента преобразования/квантованного коэффициента, определяется посредством четности (младшего бита) квантованного коэффициента, который предшествует текущему коэффициенту преобразования/квантованному коэффициенту в порядке сканирования.[0080] Trellised coding quantization (TCQ) is proposed by H. Schwarz, T. Nguyen, D. Marpe, T. Wiegand, M. Karczewicz, M. Coban, J. Dong, "CE7: Transform coefficient coding with reduced number of regular-coded bins (tests 7.1.3a, 7.1.3b)", JVET document JVET-L0274, Macau, China, October 2018 (hereafter JVET-L0274). In JVET-L0274 technologies, two scalar quantizers are switchable for quantization/dequantization. The scalar quantizer used for the current transform coefficient/quantized coefficient is determined by the parity (least significant bit) of the quantized coefficient that precedes the current transform coefficient/quantized coefficient in scan order.

[0081] Схема кодирования коэффициентов вместе с TCQ также предложена в JVET-L0274, в силу которой выбор контекста для декодирования квантованного коэффициента зависит от используемого квантователя. В частности, флаг значимости (SIG) коэффициента, указывающий то является коэффициент нулевым или ненулевым, имеет три набора контекстных моделей, и набор, выбранный для конкретного SIG, зависит от квантователя, используемого для ассоциированного коэффициента. Следовательно, при начале декодирования SIG текущего коэффициента, энтропийный декодер должен знать четность коэффициента в предыдущей позиции сканирования, которая определяет квантователь для текущего коэффициента и в силу этого контекстный набор для SIG того коэффициента.[0081] A coefficient coding scheme along with TCQ is also proposed in JVET-L0274, whereby context selection for decoding a quantized coefficient depends on the quantizer used. In particular, the coefficient significance flag (SIG) indicating whether the coefficient is zero or non-zero has three sets of context models, and the set chosen for a particular SIG depends on the quantizer used for the associated coefficient. Therefore, when starting to decode the SIG of the current coefficient, the entropy decoder must know the parity of the coefficient at the previous scan position, which determines the quantizer for the current coefficient and hence the context set for the SIG of that coefficient.

[0082] TU разделяется на неперекрывающиеся субблоки, называемые "группами для кодирования (CG)", размер которых обычно составляет 4×4. Процесс декодирования, описанный в данном документе, иногда может описываться относительно CG 4×4, но может легко распространяться на любые другие CG-размеры. Технологии этого раскрытия и в силу этого описание, включенное в данный документ, главным образом относятся к процессам кодирования и декодирования для абсолютного уровня коэффициента в CG. Другая информация, ассоциированная с CG, такая как знаки, может кодироваться или декодироваться способом, описанным в JVET-L0274, но также может кодироваться и декодироваться с использованием альтернативных технологий.[0082] The TU is divided into non-overlapping sub-blocks, called "groups for coding (CG)", the size of which is usually 4×4. The decoding process described herein can sometimes be described with respect to 4x4 CG, but can easily be extended to any other CG sizes. The techniques of this disclosure, and therefore the description included herein, primarily relate to encoding and decoding processes for an absolute coefficient level in CG. Other information associated with the CG, such as characters, may be encoded or decoded in the manner described in JVET-L0274, but may also be encoded and decoded using alternative technologies.

[0083] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью обрабатывать синтаксические элементы в потоках битов. Например, следующие синтаксические элементы могут использоваться для того, чтобы представлять значение абсолютного уровня (absLevel) для коэффициента.[0083] Video encoder 200 and video decoder 300 may be configured to process syntax elements in bitstreams. For example, the following syntax elements may be used to represent an absolute level (absLevel) value for a coefficient.

- sig_coeff_flag: Этот флаг равен 0, если absLevel равен 0; иначе, флаг равен 1.- sig_coeff_flag: This flag is 0 if absLevel is 0; otherwise, the flag is 1.

- abs_level_gt1_flag: Флаг присутствует в потоке битов, если sig_coeff_flag равен 1. Он равен 1, если absLevel превышает 1; иначе, флаг равен 0.- abs_level_gt1_flag: The flag is present in the bitstream if sig_coeff_flag is 1. It is 1 if absLevel is greater than 1; otherwise, the flag is 0.

- par_level_flag: Флаг присутствует в потоке битов, если rem_abs_gt1_flag равен 1. Он равен 0, если absLevel является нечетным числом, и равен 1, если absLevel является четным числом.- par_level_flag: The flag is present in the bitstream if rem_abs_gt1_flag is 1. It is 0 if absLevel is an odd number and 1 if absLevel is an even number.

- abs_level_gt3_flag: Флаг присутствует в потоке битов, если abs_level_gt1_flag равен 1. Он равен 1, если absLevel превышает 3; иначе, флаг равен 0.- abs_level_gt3_flag: The flag is present in the bitstream if abs_level_gt1_flag is equal to 1. It is equal to 1 if absLevel is greater than 3; otherwise, the flag is 0.

- abs_remainder: Этот синтаксический элемент присутствует в потоке битов, если abs_level_gt3_flag равен 1. Он представляет собой оставшееся абсолютное значение уровня коэффициентов преобразования, который кодируется с помощью кода Голомба-Райса.- abs_remainder: This syntax element is present in the bitstream if abs_level_gt3_flag is equal to 1. It represents the remaining absolute value of the transform coefficient level, which is encoded with the Golomb-Rice code.

- abs_level: Он представляет собой абсолютное значение уровня коэффициентов преобразования, который кодируется с помощью кода Голомба-Райса.- abs_level: This is the absolute value of the level of the transform coefficients, which is encoded with the Golomb-Rice code.

[0084] Ниже, синтаксические элементы sig_coeff_flag, par_level_flag, abs_level_gt1_flag, abs_level_gt3_flag, abs_remainder и abs_level обозначаются как SIG, Par, Gt1, Gt2, remLevel, absLevel, соответственно, для простоты описания.[0084] Below, the syntax elements sig_coeff_flag, par_level_flag, abs_level_gt1_flag, abs_level_gt3_flag, abs_remainder, and abs_level are referred to as SIG, Par, Gt1, Gt2, remLevel, absLevel, respectively, for ease of description.

[0085] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью задавать любые из вышеуказанных синтаксических элементов, которые не извлекаются посредством синтаксического анализа из потока битов, равными значению по умолчанию, к примеру, 0. С учетом значений первого из пяти синтаксических элементов, значение для абсолютного уровня коэффициента может вычисляться следующим образом:[0085] Video encoder 200 and video decoder 300 may be configured to set any of the above syntax elements that are not parsed from the bit stream to a default value of 0, for example. Given the values of the first of the five syntax elements, the value for the absolute level of the coefficient can be calculated as follows:

absoluteLevel=SIG+Gt1+Par+(Gt2<<1)+(remLevel<<1) (1)absoluteLevel=SIG+Gt1+Par+(Gt2<<1)+(remLevel<<1) (1)

[0086] Альтернативно, если коэффициент кодируется полностью в режиме обходного кодирования, то absoluteLevel может непосредственно кодироваться в качестве abs_level.[0086] Alternatively, if the coefficient is encoded entirely in bypass coding mode, then absoluteLevel may be directly encoded as abs_level.

[0087] Фиг. 3 показывает примерный порядок для синтаксических элементов, представляющих absoluteLevel в CG, как указано в JVET-L0274. Также могут использоваться другие технологии. Как можно видеть, все пять синтаксических элементов получаются посредством синтаксического анализа из потока битов, когда absLevel превышает 4.[0087] FIG. 3 shows an example order for syntax elements representing absoluteLevel in CG, as specified in JVET-L0274. Other technologies may also be used. As can be seen, all five syntax elements are parsed from the bit stream when absLevel is greater than 4.

[0088] В примере по фиг. 3, видеодекодер 300 сканирует позиции в CG максимум в четырех проходах. В первом проходе 136, видеодекодер 300 получает, посредством синтаксического анализа, значения для SIG, Par и Gt1. Только после ненулевых SIG предусмотрены соответствующие Gt1 и Par. Таким образом, если видеодекодер 300 определяет то, что SIG имеет значение нуль, что означает то, что уровень коэффициентов равен нулю, то видеодекодер 300 не принимает экземпляры Gt1 и Par для того коэффициента. После первого прохода 136, значение для частичного absoluteLevel, обозначаемое в качестве absLevel1, для каждой позиции, может восстанавливаться, как показано в уравнении (2).[0088] In the example of FIG. 3, video decoder 300 scans positions in the CG in a maximum of four passes. In the first pass 136, video decoder 300 obtains, through parsing, the values for SIG, Par, and Gt1. Only after non-zero SIGs are the corresponding Gt1 and Par provided. Thus, if video decoder 300 determines that SIG is zero, which means that the coefficient level is zero, then video decoder 300 does not receive instances of Gt1 and Par for that coefficient. After the first pass 136, the value for the partial absoluteLevel, referred to as absLevel1, for each position, can be restored, as shown in equation (2).

absLevel1=SIG+Par+Gt1 (2)absLevel1=SIG+Par+Gt1 (2)

[0089] В некоторых реализациях, видеодекодер 300 может быть выполнен с возможностью получать, посредством синтаксического анализа, максимум 28 регулярно-кодированных элементов разрешения в первом проходе 136 для субблоков 4×4 и максимум 6 регулярно-кодированных элементов разрешения для субблоков 2×2. Пределы для числа регулярно-кодированных элементов разрешения могут принудительно активироваться в группах элементов разрешения SIG, Gt1, Par, что означает то, что каждая группа элементов разрешения SIG, Gt1 и Par кодируется в качестве набора, и то, что переключение на обходное кодирование в середине набора не разрешается.[0089] In some implementations, video decoder 300 may be configured to obtain, via parsing, a maximum of 28 regular-coded bins in the first pass 136 for 4x4 sub-blocks, and a maximum of 6 regular-coded bins for 2x2 sub-blocks. Limits on the number of regularly-encoded bins can be forced to be enabled in bin groups SIG, Gt1, Par, which means that each bin group SIG, Gt1, and Par is encoded as a set, and that switching to bypass coding in the middle set is not allowed.

[0090] Если имеется, по меньшей мере, один ненулевой Gt1 в первом проходе, то видеодекодер 300 может быть выполнен с возможностью выполнять сканирование во втором проходе 138. Во втором проходе 138, видеодекодер 300 получает, посредством синтаксического анализа, Gt2 для позиций с ненулевыми Gt1. Элементы разрешения в первом проходе 136 и вторых проходах 138 могут регулярно кодироваться, что означает то, что распределение вероятностей элемента разрешения моделируется посредством выбранной контекстной модели. Если имеется, по меньшей мере, один ненулевой Gt2 во втором проходе 138, то видеодекодер 300 сканирует третий проход 140. в ходе третьего прохода 140, видеодекодер 300 получает, посредством синтаксического анализа, remLevel позиций с ненулевыми Gt2. RemLevel не является двоичным, и видеодекодер 300 может выполнять обходное кодирование элементов разрешения преобразованной в двоичную форму версии rem, что означает то, что элементы разрешения предположительно равномерно распределяются, и выбор контекста не требуется.[0090] If there is at least one non-zero Gt1 in the first pass, then video decoder 300 may be configured to scan in the second pass 138. In the second pass 138, video decoder 300 obtains, by parsing, Gt2 for positions with non-zero GT1. The bins in the first pass 136 and second passes 138 may be regularly encoded, which means that the bin probability distribution is modeled by the selected context model. If there is at least one non-zero Gt2 in second pass 138, then video decoder 300 scans third pass 140. During third pass 140, video decoder 300 obtains, by parsing, remLevel positions with non-zero Gt2. The RemLevel is not binary, and video decoder 300 can bypass the bins of the binarized version of rem, which means that the bins are assumed to be evenly distributed and no context selection is required.

[0091] В четвертом проходе 142, видеодекодер 300 сканирует все оставшиеся коэффициенты, не представленные частично с регулярно-кодированными элементами разрешения в предыдущих трех проходах. Уровни коэффициентов дополнительного прохода 142 кодируются в качестве абсолютных значений с использованием элементов разрешения после обходного кодирования.[0091] In the fourth pass 142, video decoder 300 scans all remaining coefficients not partially represented with regular-coded bins in the previous three passes. The extra pass coefficient levels 142 are encoded as absolute values using bins after bypass encoding.

[0092] Видеокодер 200 и видеодекодер 300 могут выполнять контекстное моделирование. Контекстное моделирование, используемое в JVET-L0274, также кратко представлено здесь, наряду с модификациями, предложенными посредством этого раскрытия. Контекстное моделирование, подробнее поясненное ниже, в общем, означает выбор вероятностных моделей, также называемых "контекстами", для элемента разрешения, подлежащего декодированию. В JVET-L0274, синтаксические элементы SIG, Par, Gt1 и Gt2 кодируются с использованием контекстного моделирования. Выбор контекста зависит от значений absLevel1s в локальном окружении, обозначаемом в качестве N. Фиг. 4 иллюстрирует эталон используемого окружения. При этом позиции внутри эталона, но за пределами текущей TU могут исключаться из N.[0092] Video encoder 200 and video decoder 300 may perform context modeling. The context modeling used in JVET-L0274 is also briefly presented here, along with modifications suggested through this disclosure. Context modeling, explained in more detail below, generally means selecting probabilistic models, also referred to as "contexts", for a bin to be decoded. In JVET-L0274, the syntax elements SIG, Par, Gt1 and Gt2 are encoded using context modeling. The choice of context depends on the values of absLevel1s in the local environment, denoted as N. FIG. 4 illustrates a sample environment in use. In this case, positions inside the reference, but outside the current TU, can be excluded from N.

[0093] Фиг. 4 показывает иллюстрацию эталона, используемого для выбора вероятностных моделей. Квадрат, помеченный с помощью "X", указывает текущую позицию сканирования, и квадраты, помеченные с помощью "Y", представляют используемое локальное окружение.[0093] FIG. 4 shows an illustration of the benchmark used to select probabilistic models. The box marked with "X" indicates the current scan position, and the boxes marked with "Y" represent the locale in use.

[0094] Для текущей позиции (см. квадрат с X на фиг. 4), видеодекодер 300 определяет индексы контекстов своих SIG, Par, Gt1 и Gt2, обозначаемые в качестве ctxIdxSIG, ctxIdxPar, ctxIdxGt1 и ctxIdxGt2. Чтобы определять индексы контекстов, видеодекодер 300 может сначала определять три переменные: numSIG, sumAbs1 и d. Переменная numSIG представляет число ненулевых SIG в N, которое выражается посредством нижеприведенного уравнения (3).[0094] For the current position (see X box in FIG. 4), video decoder 300 determines the context indices of its SIGs, Par, Gt1, and Gt2, denoted as ctxIdxSIG, ctxIdxPar, ctxIdxGt1, and ctxIdxGt2. To determine the context indices, video decoder 300 may first determine three variables: numSIG, sumAbs1, and d. The variable numSIG represents the number of non-zero SIGs in N, which is expressed by Equation (3) below.

Figure 00000001
(3)
Figure 00000001
(3)

[0095] Переменная sumAbs1 представляет сумму absLevel1 в N, который выражается посредством нижеприведенного уравнения (4):[0095] The variable sumAbs1 represents the sum of absLevel1 in N, which is expressed by the following equation (4):

Figure 00000002
(4)
Figure 00000002
(4)

[0096] Переменная d представляет диагональный показатель текущей позиции в TU, как выражается посредством нижеприведенного уравнения (5):[0096] The variable d represents the diagonal measure of the current position in the TU, as expressed by Equation (5) below:

d=x+y (5),d=x+y (5),

где x и y представляют координаты текущей позиции в TU.where x and y represent the coordinates of the current position in the TU.

[0097] С учетом sumAbs1 и d, видеодекодер 300 определяет индекс контекста для декодирования SIG следующим образом:[0097] Given sumAbs1 and d, video decoder 300 determines a context index for SIG decoding as follows:

- Для сигнала яркости, ctxIdxSIG определяется посредством уравнения (6):- For the luminance signal, ctxIdxSIG is determined by equation (6):

ctxIdxSIG=18*max(0, state-1)+min(sumAbs1, 5)+(d < 2 ? 12 : (d<5? 6 : 0)) (6)ctxIdxSIG=18*max(0, state-1)+min(sumAbs1, 5)+(d < 2 ? 12 : (d<5? 6 : 0)) (6)

- Для сигнала цветности, ctxIdxSIG определяется посредством уравнения (7):- For a chrominance signal, ctxIdxSIG is determined by equation (7):

ctxIdxSIG=12*max(0, state-1)+min(sumAbs1, 5)+(d<2 ? 6 : 0)) (7)ctxIdxSIG=12*max(0, state-1)+min(sumAbs1, 5)+(d<2 ? 6 : 0)) (7)

[0098] В уравнениях (6) и (7), переменная state представляет текущее состояние машины состояний, заданной в JVET-L0274.[0098] In equations (6) and (7), the state variable represents the current state of the state machine defined in JVET-L0274.

[0099] При условии sumSIG, sumAbs1 и d, видеодекодер 300 определяет индекс контекста для декодирования Par следующим образом:[0099] Given sumSIG, sumAbs1, and d, video decoder 300 determines the context index for decoding Par as follows:

- Если текущая позиция сканирования равна позиции последнего ненулевого коэффициента, ctxIdxPar равен 0.- If the current scan position is equal to the position of the last non-zero coefficient, ctxIdxPar is 0.

- Иначе:- Otherwise:

-o Для сигнала яркости, ctxIdxPar определяется посредством уравнения (8):-o For the luminance signal, ctxIdxPar is determined by equation (8):

ctxIdxPar=1+min(sumAbs1-numSIG, 4)+(d==0 ? 15 : (d<3 ? 10 : (d<10 ? 5 : 0))) (8)ctxIdxPar=1+min(sumAbs1-numSIG, 4)+(d==0 ? 15 : (d<3 ? 10 : (d<10 ? 5 : 0))) (8)

-o Для сигнала цветности, ctxIdxPar определяется посредством (9):-o For a chrominance signal, ctxIdxPar is determined by (9):

ctxIdxPar=1+min(sumAbs1-numSIG, 4)+(d==0? 5 : 0) (9)ctxIdxPar=1+min(sumAbs1-numSIG, 4)+(d==0? 5 : 0) (9)

ctxIdxGt1 и ctxIdxGt2 задаются равными значению ctxIdxPar.ctxIdxGt1 and ctxIdxGt2 are set to the value of ctxIdxPar.

[0100] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью выполнять кодирование RemLevel. Видеодекодер 300 извлекает параметр Райса (ricePar) для кодирования недвоичного синтаксического элемента remRemainder (remLevel) и absLevel следующим образом:[0100] Video encoder 200 and video decoder 300 may be configured to perform RemLevel encoding. Video decoder 300 extracts the Rice parameter (ricePar) to encode the non-binary syntax element remRemainder (remLevel) and absLevel as follows:

- В начале каждого субблока ricePar задается равным 0;- At the beginning of each sub-block, ricePar is set to 0;

- После кодирования синтаксического элемента remainder, параметр Райса (ricePar) модифицируется следующим образом:- After encoding the remainder syntax element, the Rice parameter (ricePar) is modified as follows:

Если ricePar меньше 3, и последнее кодированное значение remainder превышает ((3<<ricePar)-1), ricePar постепенно увеличивается на 1.If ricePar is less than 3 and the last coded value of remainder is greater than ((3<<ricePar)-1), ricePar is incremented by 1.

[0101] Для кодирования недвоичного синтаксического элемента absLevel, представляющего абсолютные индексы квантования, которые полностью подвергаются обходному кодированию, следующее применимо:[0101] To encode the absLevel non-binary syntax element representing absolute quantization indices that are fully bypass-encoded, the following applies:

- Сумма sumAbs абсолютных значений в локальном эталоне определяется.- The sum sumAbs of absolute values in the local reference is determined.

- Переменные ricePar и posZero определяются посредством табличного поиска согласно:- Variables ricePar and posZero are determined by table lookup according to:

ricePar=riceParTable[min(31, sumAbs)]ricePar=riceParTable[min(31, sumAbs)]

posZero=posZeroTable[max(0, state-1)][min(31, sumAbs)],posZero=posZeroTable[max(0, state-1)][min(31, sumAbs)],

где переменная state представляет состояние для зависимого квантования (она равна 0, когда зависимое квантование деактивируется), и таблицы riceParTable[] и posZeroTable[][] задаются следующим образом:where the state variable represents the state for dependent quantization (it is 0 when dependent quantization is deactivated), and the tables riceParTable[] and posZeroTable[][] are defined as follows:

riceParTable[32]={riceParTable[32]={

0,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2,2,2,2,3,3,3,30,0,0,0,0,0,0,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2,2,2, 2,2,2,3,3,3,3

};};

posZeroTable[3][32]={posZeroTable[3][32]={

{0,0,0,0,0,1,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,8,8,8,8,8,8,8,8,8},{0,0,0,0,0,1,2,2,2,2,2,2,4,4,4,4,4,4,4,4,4,4,4,8,8 ,8,8,8,8,8,8,8},

{1,1,1,1,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,12,16,16,16,16,16,16},{1,1,1,1,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12 ,12,16,16,16,16,16,16},

{1,1,2,2,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12,16,16,16,16,16,16,16}{1,1,2,2,2,3,4,4,4,6,6,6,8,8,8,8,8,8,12,12,12,12,12,12,12 ,16,16,16,16,16,16,16}

};};

- Промежуточная переменная codeValue извлекается следующим образом:- The intermediate variable codeValue is retrieved as follows:

-o Если absLevel равен 0, codeValue задается равным posZero;-o If absLevel is 0, codeValue is set to posZero;

-o Иначе, если absLevel меньше или равен posZero, codeValue задается равным absLevel-1;-o Otherwise, if absLevel is less than or equal to posZero, codeValue is set to absLevel-1;

-o Иначе (absLevel превышает posZero), codeValue задается равным absLevel.-o Otherwise (absLevel is greater than posZero), codeValue is set to absLevel.

- Значение codeValue кодируется с использованием кода Голомба-Райса с параметром Райса ricePar.- The codeValue is encoded using the Golomb-Rice code with the Rice parameter ricePar.

[0102] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью выполнять восстановление absoluteLevel. Восстановление absoluteLevel может быть идентичным восстановлению в JVET-L0274, что пояснено выше относительно синтаксических элементов в потоке битов.[0102] Video encoder 200 and video decoder 300 may be configured to perform absoluteLevel recovery. The restoration of absoluteLevel may be identical to the restoration in JVET-L0274, as explained above with respect to the syntax elements in the bitstream.

[0103] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью кодировать Gt2-флаги перемеженным способом. В некоторых примерах, вместо описанной схемы, в которой в первом проходе кодируются SIG-, Gt1-, Par-флаги, а во втором проходе кодируются Gt2-флаги, Gt2-флаги могут быть включены в первый проход после Par-флага или после Gt1-флага, как показано на нижеприведенных чертежах, уменьшая проходы кодирования до 3 с 4.[0103] Video encoder 200 and video decoder 300 may be configured to encode the Gt2 flags in an interleaved manner. In some examples, instead of the described scheme in which the SIG, Gt1-, Par flags are encoded in the first pass and the Gt2 flags are encoded in the second pass, the Gt2 flags may be included in the first pass after the Par flag or after the Gt1- flag as shown in the drawings below, reducing the encoding passes to 3 from 4.

[0104] Фиг. 5 показывает пример перемеженного Gt2-флага в первом проходе после Par-флага. Относительно фиг. 5 видеодекодер 300 может определять значение для absLevel1 идентично вышеописанному относительно фиг. 3, но порядок, в котором принимаются различные синтаксические элементы, изменяется. Например, на фиг. 5, видеодекодер 300 определяет значения для Gt2 в качестве части первого прохода 162, а не в качестве части второго прохода (например, второго прохода 138 на фиг. 3). Таким образом, на фиг. 5, первый проход 136 и второй проход 138 по фиг. 3 эффективно комбинируются в один проход (первый проход 162), и третий проход 140 и четвертый проход 142 по фиг. 3 становятся вторым проходом 164 и третьим проходом 166 по фиг. 5, соответственно. Таким образом, в примере по фиг. 5, только три прохода требуются для того, чтобы передавать все синтаксические элементы.[0104] FIG. 5 shows an example of an interleaved Gt2 flag in the first pass after the Par flag. With respect to FIG. 5, video decoder 300 may determine a value for absLevel1 identical to that described above with respect to FIG. 3, but the order in which the various syntax elements are received is changed. For example, in FIG. 5, video decoder 300 determines the values for Gt2 as part of the first pass 162 and not as part of the second pass (eg, second pass 138 in FIG. 3). Thus, in FIG. 5, the first passage 136 and the second passage 138 of FIG. 3 are effectively combined into one pass (first pass 162), and third pass 140 and fourth pass 142 of FIG. 3 become the second passage 164 and the third passage 166 of FIG. 5, respectively. Thus, in the example of FIG. 5, only three passes are required in order to transfer all syntax elements.

[0105] Фиг. 6 показывает пример перемеженного Gt2-флага в первом проходе после Gt1-флага. В этом случае, absLevel1 может вычисляться следующим образом:[0105] FIG. 6 shows an example of an interleaved Gt2 flag in the first pass after the Gt1 flag. In this case, absLevel1 can be calculated as follows:

absLevel1=SIG+Par+Gt1+(Gt2<<1)absLevel1=SIG+Par+Gt1+(Gt2<<1)

и может использоваться при извлечении контекста в формулах, введенных выше относительно контекстного моделирования. Относительно фиг. 6 видеодекодер 300 может определять значение для absLevel1 идентично вышеописанному относительно фиг. 3, но порядок, в котором принимаются различные синтаксические элементы, изменяется. Например, на фиг. 6, видеодекодер 300 определяет значения для Gt2 в качестве части первого прохода 172, а не в качестве части второго прохода (например, второго прохода 138 на фиг. 3). Таким образом, на фиг. 6, первый проход 136 и второй проход 138 по фиг. 3 эффективно комбинируются в один проход (первый проход 172), и третий проход 140 и четвертый проход 142 по фиг. 3 становятся вторым проходом 174 и третьим проходом 176 по фиг. 6, соответственно. Таким образом, в примере по фиг. 6, только три прохода требуются для того, чтобы передавать все синтаксические элементы. На фиг. 6, синтаксические элементы первого прохода 172 сканируются в порядке, отличающемся от порядка для синтаксических элементов первого прохода 162 на фиг. 5, но другие проходы, в общем, являются идентичными.and can be used in context extraction in the formulas introduced above regarding context modeling. With respect to FIG. 6, video decoder 300 may determine a value for absLevel1 identical to that described above with respect to FIG. 3, but the order in which the various syntax elements are received is changed. For example, in FIG. 6, video decoder 300 determines the values for Gt2 as part of the first pass 172 and not as part of the second pass (eg, second pass 138 in FIG. 3). Thus, in FIG. 6, the first passage 136 and the second passage 138 of FIG. 3 are effectively combined into one pass (first pass 172), and third pass 140 and fourth pass 142 of FIG. 3 become the second passage 174 and the third passage 176 of FIG. 6, respectively. Thus, in the example of FIG. 6, only three passes are required in order to transfer all syntax elements. In FIG. 6, the syntax elements of the first pass 172 are scanned in a different order than the order for the syntax elements of the first pass 162 in FIG. 5, but the other passages are generally identical.

[0106] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать частичное представление последних регулярно-кодированных на основе элементов разрешения коэффициентов, при этом значения для некоторых коэффициентов могут частично передаваться с использованием регулярно-кодированных элементов разрешения со значением остатка, передаваемым с использованием обходного кодирования. В схеме кодирования, описанной в JVET-L0274, последний регулярно-кодированный на основе элементов разрешения коэффициент, при котором достигается бюджет по регулярно-кодированным элементам разрешения для первого прохода кодирования (например, коэффициент K на фиг. 3), элементы разрешения SIG, Gt1, Par, кодируются в качестве регулярно-кодированных элементов разрешения. Регулярное кодирование на основе элементов разрешения не завершается в середине SIG-Gt1-Par-группы. Аналогично для SIG-Gt1-Par-Gt2-группы или SIG-Gt1-Gt2-Par-группы (например, фиг. 5 и 6), кодирование для SIG-, Gt1-, Par-, Gt2-флагов коэффициента K проводится в регулярном режиме. Это раскрытие предлагает технологии для нарушения этого ограничения посредством разрешения возможного завершения регулярно-кодированных элементов разрешения после кодирования SIG- и Gt1-флагов, как показано на фиг. 7 и 8.[0106] Video encoder 200 and video decoder 300 may be configured to use a partial representation of the last regular bin-coded coefficients, wherein values for some coefficients may be partially transmitted using regular bin-coded bins with a residual value transmitted using a bypass. coding. In the coding scheme described in JVET-L0274, the last regularly-coded bin-based coefficient at which the regular-coded bin budget for the first coding pass is achieved (e.g., coefficient K in FIG. 3), bins SIG, Gt1 , Par, are encoded as regular-encoded bins. Regular element-based encoding does not terminate in the middle of a SIG-Gt1-Par-group. Similarly for the SIG-Gt1-Par-Gt2-group or SIG-Gt1-Gt2-Par-group (for example, Figs. 5 and 6), the coding for the SIG-, Gt1-, Par-, Gt2-flags of the coefficient K is carried out in a regular mode. This disclosure proposes techniques for violating this limitation by allowing regular-encoded bins to be possible after encoding the SIG and Gt1 flags, as shown in FIG. 7 and 8.

[0107] Фиг. 7 показывает пример частичного кодирования последнего коэффициента, при котором предел по регулярно-кодированным элементам разрешения достигается для SIG-Gt1-Par-Gt2-кодирования в первом проходе 182 кодирования. В примере по фиг. 7, видеодекодер 300 сканирует третий проход 186, который включает в себя как значения remLevel, так и значения absLevel. Значение для remLevel представляет значение остатка между фактическим значением для коэффициента и частичным значением, определенным из первого прохода 182 и второго прохода 184. Значение для absLevel, в отличие от этого, представляет абсолютное значение значения коэффициента.[0107] FIG. 7 shows an example of a partial last coefficient encoding in which the regularly encoded bin limit is reached for the SIG-Gt1-Par-Gt2 encoding in the first encoding pass 182. In the example of FIG. 7, video decoder 300 scans a third pass 186 that includes both remLevel and absLevel values. The value for remLevel represents the remainder value between the actual value for the coefficient and the partial value determined from the first pass 182 and the second pass 184. The value for absLevel, in contrast, represents the absolute value of the coefficient value.

[0108] Фиг. 8 показывает пример частичного кодирования последнего коэффициента, при котором предел по регулярно-кодированным элементам разрешения достигается для SIG-Gt1-Gt2-Par-кодирования в первом проходе 192 кодирования. На фиг. 8, синтаксические элементы первого прохода 192 сканируются в порядке, отличающемся от порядка для синтаксических элементов первого прохода 182 на фиг. 7. Второй проход 194 и третий проход 196, в общем, являются идентичными второму проходу 184 и третьему проходу 186 на фиг. 7.[0108] FIG. 8 shows an example of a partial last coefficient encoding in which the regularly encoded bin limit is reached for SIG-Gt1-Gt2-Par encoding in the first encoding pass 192. In FIG. 8, the syntax elements of the first pass 192 are scanned in a different order than the order for the syntax elements of the first pass 182 in FIG. 7. Second passage 194 and third passage 196 are generally identical to second passage 184 and third passage 186 in FIG. 7.

[0109] В примерах по фиг. 7 и 8, оставшийся уровень коэффициента K кодируется в качестве remLevelFull, который подвергается обходному кодированию в третьем проходе 186/196 наряду со значениями для absLevel, которые подвергаются обходному кодированию. Значение для коэффициента представляется как:[0109] In the examples of FIG. 7 and 8, the remaining K coefficient level is encoded as remLevelFull, which is bypass-encoded in the third pass 186/196, along with the values for absLevel, which are bypass-encoded. The value for the coefficient is represented as:

absoluteLevel=SIG+Gt1+remLevelFull,absoluteLevel=SIG+Gt1+remLevelFull,

или:or:

absoluteLevel=SIG+remLevelFull.absoluteLevel=SIG+remLevelFull.

[0110] В других примерах, регулярное кодирование элементов разрешения может завершаться после кодирования Par- и Gt2-флагов или наоборот. В этом случае, оставшийся уровень последнего коэффициента должен кодироваться в качестве половины оставшегося уровня, т.е.:[0110] In other examples, the regular encoding of the bins may be completed after the encoding of the Par and Gt2 flags, or vice versa. In this case, the remaining level of the last coefficient shall be encoded as half of the remaining level, i.e.:

absoluteLevel=SIG+GT1+Par+(remLevel<<1),absoluteLevel=SIG+GT1+Par+(remLevel<<1),

или:or:

absoluteLevel=SIG+GT1+(GT2<<1)+(remLevel<<1).absoluteLevel=SIG+GT1+(GT2<<1)+(remLevel<<1).

[0111] Общее число регулярно-кодированных элементов разрешения может указываться в качестве общего числа, которое налагается на перемеженные SIG-, Gt1-, Gt2- и Par-флаги.[0111] The total number of regularly encoded bins may be indicated as the total number that is superimposed on the interleaved SIG, Gt1, Gt2, and Par flags.

[0112] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью выполнять кодирование по оставшимся уровням. Кодирование remLevel во втором проходе кодирования может быть идентичным тому, что описывается выше относительно кодирования RemLevel. Видеодекодер 300 может выполнять обновление и извлечение параметра Райса до конца коэффициента K-1, при этом коэффициент K-1 представляет предпоследний регулярно-кодированный коэффициент перед последним регулярно-кодированным коэффициентом (коэффициентом K). Видеодекодер 300 может декодировать коэффициент K-1 с использованием полностью регулярного кодирования и может декодировать коэффициент K полностью с использованием регулярного кодирования либо с использованием комбинации регулярного кодирования и обходного кодирования. Для кодирования remLevelFull коэффициента K, видеодекодер 300 может обновлять параметр Райса следующим образом:[0112] Video encoder 200 and video decoder 300 may be configured to perform coding on the remaining layers. The remLevel encoding in the second encoding pass may be identical to that described above with respect to RemLevel encoding. Video decoder 300 may update and extract the Rice parameter until the end of the K-1 coefficient, with the K-1 coefficient representing the penultimate regular-coded coefficient before the last regular-coded coefficient (K coefficient). Video decoder 300 may decode the K-1 coefficient using fully regular coding, and may decode the K coefficient completely using regular coding, or using a combination of regular coding and bypass coding. For remLevelFull encoding of the K coefficient, video decoder 300 may update the Rice parameter as follows:

riceParBypass=2xricePar+lastCodedGt2Flag,riceParBypass=2xricePar+lastCodedGt2Flag,

riceParBypass=riceParBypass==1? riceParBypass-1: riceParBypass,riceParBypass=riceParBypass==1? riceParBypass-1: riceParBypass,

где ricePar является ricePar, используемым для кодирования remLevel во втором проходе, и lastCodedGt2Flag является значением последнего кодированного Gt2-флага в первом проходе кодирования. Альтернативно, может использоваться значение для ricePar, которое равно 2xricePar, либо может использоваться ricePar, который совпадает с оптимальным кодированием оставшегося уровня для коэффициента K.where ricePar is the ricePar used to encode remLevel in the second pass, and lastCodedGt2Flag is the value of the last encoded Gt2 flag in the first pass of encoding. Alternatively, a value for ricePar that is equal to 2xricePar may be used, or ricePar may be used that matches the optimal remaining level encoding for the K coefficient.

[0113] В некоторых примерах, для кодирования remLevelFull коэффициента K, видеодекодер 300 может обновлять параметр Райса следующим образом:[0113] In some examples, to encode remLevelFull of the K coefficient, video decoder 300 may update the Rice parameter as follows:

1-riceParBypass=min(ricePar>0? ricePar+1: lastCodedGt2Flag, 3)1-riceParBypass=min(ricePar>0? ricePar+1: lastCodedGt2Flag, 3)

2-riceParBypass=min(2*ricePar+lastCodedGt2Flag, 3)2-riceParBypass=min(2*ricePar+lastCodedGt2Flag, 3)

3-riceParBypass=min(2*ricePar, 3)3-riceParBypass=min(2*ricePar, 3)

[0114] Для остальной части значений absLevel для коэффициентов, которые полностью кодируются с использованием обходного кодирования, видеодекодер 300 может обновлять riceParBypass следующим образом. До кодирования коэффициента после обходного кодирования, видеодекодер 300 обновляет riceParBypass следующим образом:[0114] For the rest of the absLevel values for coefficients that are fully coded using bypass coding, video decoder 300 may update riceParBypass as follows. Before coefficient coding, after bypass coding, video decoder 300 updates riceParBypass as follows:

if(riceParBypass<3 && absoluteLevelPrevCoeff>((3<<riceParBypass)-1){riceParBypass++;}if(riceParBypass<3 &&absoluteLevelPrevCoeff>((3<<riceParBypass)-1){riceParBypass++;}

[0115] Аналогично способу, которым ricePar обновляется для кодирования remLevel, за исключением полного абсолютного значения предыдущего кодированного коэффициента (коэффициента K), используется для пороговой проверки вместо remLevel.[0115] Similar to the way ricePar is updated to encode remLevel, except for the full absolute value of the previous encoded coefficient (K coefficient), is used for thresholding instead of remLevel.

[0116] Видеодекодер 300 может извлекать параметр posZero для определения уровня absLevel согласно любому множеству различных технологий. В одном примере, видеодекодер 300 может извлекать параметр posZero для определения уровня absLevel с использованием таблицы поиска следующим образом:[0116] Video decoder 300 may extract the posZero parameter to determine absLevel according to any of a variety of different technologies. In one example, video decoder 300 may extract the posZero parameter to determine absLevel using a lookup table as follows:

posZero=posZeroTableBypass[max(0, state-1)][riceParBypass]posZero=posZeroTableBypass[max(0, state-1)][riceParBypass]

posZeroTableBypass[3][4]={{1, 2, 4, 8},{3, 6, 12, 16},{4, 6, 12, 16}};posZeroTableBypass[3][4]={{1, 2, 4, 8},{3, 6, 12, 16},{4, 6, 12, 16}};

[0117] Видеодекодер 300 может извлекать промежуточную переменную codeValue, которая должна кодироваться следующим образом:[0117] Video decoder 300 may extract an intermediate variable codeValue, which should be encoded as follows:

-o Если absLevel или remLevelFull равен 0, codeValue задается равным posZero;-o If absLevel or remLevelFull is 0, codeValue is set to posZero;

-o Иначе, если absLevel или remLevelFull меньше или равен posZero, codeValue задается равным absLevel-1 или remLevelFull-1, соответственно.-o Otherwise, if absLevel or remLevelFull is less than or equal to posZero, codeValue is set to absLevel-1 or remLevelFull-1, respectively.

-o Иначе (absLevel или remLevelFull превышает posZero), codeValue задается равным absLevel или remLevelFull, соответственно.-o Otherwise (absLevel or remLevelFull is greater than posZero), codeValue is set to absLevel or remLevelFull, respectively.

[0118] Видеодекодер 300 может кодировать значение codeValue с использованием кода Голомба-Райса с параметром riceParBypass Райса.[0118] Video decoder 300 may encode the codeValue using a Golomb-Rice code with a riceParBypass Rice parameter.

[0119] Фиг. 9 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия. Фиг. 9 предоставляется для целей пояснения и не должен считаться ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии. Для целей пояснения, это раскрытие описывает видеокодер 200 в контексте стандартов кодирования видео, таких как стандарт HEVC-кодирования видео и разрабатываемый стандарт кодирования видео H.266. Тем не менее, технологии этого раскрытия не ограничены этими стандартами кодирования видео и являются, в общем, применимыми к кодированию и декодированию видео.[0119] FIG. 9 is a block diagram illustrating an exemplary video encoder 200 that may perform the techniques of this disclosure. Fig. 9 is provided for purposes of explanation and should not be considered a limitation of the technologies illustrated and described in general terms in this disclosure. For purposes of explanation, this disclosure describes 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 this disclosure are not limited to these video coding standards and are generally applicable to video encoding and decoding.

[0120] В примере по фиг. 9, видеокодер 200 включает в себя запоминающее устройство 230 видеоданных, модуль 202 выбора режима, модуль 204 формирования остатков, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных кадров (DPB) и модуль 220 энтропийного кодирования.[0120] In the example of FIG. 9, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual 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, buffer 218 decoded frames (DPB) and module 220 entropy encoding.

[0121] Запоминающее устройство 230 видеоданных может сохранять видеоданные, которые должны кодироваться посредством компонентов видеокодера 200. Видеокодер 200 может принимать видеоданные, сохраненные в запоминающем устройстве 230 видеоданных, например, из видеоисточника 104 (фиг. 1). DPB 218 может выступать в качестве запоминающего устройства опорных кадров, которое сохраняет опорные видеоданные для использования при прогнозировании последующих видеоданных посредством видеокодера 200. Запоминающее устройство 230 видеоданных и DPB 218 могут формироваться посредством любых из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее устройство 230 видеоданных и DPB 218 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее устройство 230 видеоданных может быть внутримикросхемным с другими компонентами видеокодера 200, как проиллюстрировано, или внемикросхемным относительно этих компонентов.[0121] Video data storage 230 may store video data to be encoded by components of video encoder 200. Video encoder 200 may receive video data stored in video data storage 230, for example, from video source 104 (FIG. 1). DPB 218 may act as a reference frame store that stores reference video data for use in predicting subsequent video data by video encoder 200. Video data store 230 and DPB 218 may be formed by any of a variety of memories, such as dynamic random access memory (DRAM) DRAM), including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. The video storage device 230 and the DPB 218 may be provided via an identical storage device or separate storage devices. In various examples, video data storage 230 may be on-chip with other components of video encoder 200, as illustrated, or off-chip with respect to those components.

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

[0123] Различные модули по фиг. 9 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0123] The various modules of FIG. 9 are illustrated to assist in understanding the operations performed by video encoder 200. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Fixed functional circuits means circuits that provide specific functionality and are preset in terms of operations that can be performed. Programmable circuits means circuits that can be programmed to perform various tasks and provide flexible functionality in operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed function circuits can execute program instructions (eg, to receive parameters or output parameters), but the types of operations that fixed function circuits perform are generally immutable. In some examples, one or more modules may be various circuit blocks (fixed function or programmable), and in some examples, one or more modules may be integrated circuits.

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

[0125] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать кадр видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.[0125] The video storage device 230 is configured to store received video data. The video encoder 200 may retrieve a frame of video data from the video data storage device 230 and provide the video data to the residual generator 204 and the mode selection module 202 . The video data in the video data storage 230 may be raw video data to be encoded.

[0126] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п.[0126] 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 to perform video prediction in accordance with other prediction modes. By way of example, mode selection module 202 may include a palette processing module, an intra-block copy module (which may be part of motion estimation module 222 and/or motion compensation module 224), affine processing module, linear model (LM ) and so on.

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

[0128] Видеокодер 200 может сегментировать кадр, извлеченный из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в срезе. Модуль 202 выбора режима может сегментировать CTU кадра в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".[0128] Video encoder 200 may segment a frame retrieved from video storage 230 into a sequence of CTUs and encapsulate one or more CTUs in a slice. The mode selection module 202 may segment the frame CTU 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 CTU segmentation according to a tree structure. Such a CU may also be referred to generically as a "video block" or "block".

[0129] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать прогнозный блок для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для взаимного прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одном или более опорных кадрах (например, в одном или более ранее кодированных кадрах, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.[0129] 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) so as to generate a prediction block for the current block (e.g., the 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 frames (eg, one or more previously coded frames stored in DPB 218). In particular, motion estimation module 222 may calculate a value representing how similar a potential reference block is with respect to the current block, for example, according to Sum Absolute Differences (SAD), Sum Squared Differences (SSD), Average Absolute Differences (MAD), RMS Differences (MSD), etc. Motion estimation module 222 can generally perform these calculations using successive 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 resulting from these calculations, indicating the reference block that most closely matches the current block.

[0130] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных кадрах относительно позиции текущего блока в текущем кадре. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать прогнозный блок с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для прогнозного блока согласно одному или более интерполяционным фильтрам. Кроме того, для двунаправленного взаимного прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.[0130] The motion estimation module 222 may generate one or more motion vectors (MVs) that define positions of reference blocks in reference frames relative to the position of the current block in the current frame. 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 predictive 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 precision, motion compensation module 224 may interpolate values for the predictive block according to one or more interpolation filters. In addition, for bidirectional 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 successive sample averaging or weighted averaging.

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

[0132] Модуль 202 выбора режима предоставляет прогнозный блок в модуль 204 формирования остатков. Модуль 204 формирования остатков принимает необработанную некодированную версию текущего блока из запоминающего устройства 230 видеоданных и прогнозный блок из модуля 202 выбора режима. Модуль 204 формирования остатков вычисляет последовательные выборочные разности между текущим блоком и прогнозным блоком. Результирующие последовательные выборочные разности задают остаточный блок для текущего блока. В некоторых примерах, модуль 204 формирования остатков также может определять разности между выборочными значениями в остаточном блоке, чтобы формировать остаточный блок с использованием остаточной дифференциальной импульсно-кодовой модуляции (RDPCM). В некоторых примерах, модуль 204 формирования остатков может формироваться с использованием одной или более схем вычитателя, которые выполняют двоичное вычитание.[0132] The mode selection module 202 provides a predictive block to the residual generation module 204 . The residual generation module 204 receives a raw, uncoded version of the current block from the video data storage 230 and a predictive block from the mode selection module 202 . The residual generation module 204 calculates successive sample differences between the current block and the predictive block. The resulting successive sample differences define the residual block for the current block. In some examples, residual block 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, residual module 204 may be generated using one or more subtractor circuits that perform binary subtraction.

[0133] В примерах, в которых модуль 202 выбора режима сегментирует CU на PU, каждая PU может быть ассоциирована с единицей прогнозирования сигналов яркости и соответствующими единицами прогнозирования сигналов цветности. Видеокодер 200 и видеодекодер 300 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, и размер PU может означать размер единицы прогнозирования сигналов яркости PU. При условии, что размер конкретной CU составляет 2Nx2N, видеокодер 200 может поддерживать PU-размеры в 2Nx2N или NxN для внутреннего прогнозирования и симметричные PU-размеры в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для взаимного прогнозирования. Видеокодер 20 и видеодекодер 30 также могут поддерживать асимметричное сегментирование для PU-размеров в 2NxnU, 2NxnD, nLx2N и nRx2N для взаимного прогнозирования.[0133] In examples in which mode selector 202 segments CUs 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 size of the CU may mean the size of the luminance coding unit of the CU, and the size of the PU may mean the size of the luminance prediction unit of the PU. Assuming that the specific CU size is 2Nx2N, video encoder 200 may support PU sizes of 2Nx2N or NxN for intra prediction and symmetric PU sizes of 2Nx2N, 2NxN, Nx2N, NxN or similar for inter prediction. Video encoder 20 and video decoder 30 may also support asymmetric segmentation for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.

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

[0135] Для других технологий кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме на основе линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, через соответствующие модули, ассоциированные с технологиями кодирования, формирует прогнозный блок для кодируемого текущего блока. В некоторых примерах, таких как кодирование в палитровом режиме, модуль 202 выбора режима может не формировать прогнозный блок и вместо этого формировать синтаксические элементы, которые указывают способ, которым следует восстанавливать блок на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы в модуль 220 энтропийного кодирования для кодирования.[0135] For other video coding technologies 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 technologies encoding, generates a predictive block for the current block being encoded. In some examples, such as paletted mode encoding, mode selector 202 may not generate a predictive block and instead generate syntax elements that indicate the manner in which the block should be reconstructed based on the selected palette. In such modes, mode selector 202 may provide these syntax elements to entropy encoding module 220 for encoding.

[0136] Как описано выше, модуль 204 формирования остатков принимает видеоданные для текущего блока и соответствующего прогнозного блока. Модуль 204 формирования остатков затем формирует остаточный блок для текущего блока. Чтобы формировать остаточный блок, модуль 204 формирования остатков вычисляет последовательные выборочные разности между прогнозным блоком и текущим блоком.[0136] As described above, the residue generator 204 receives video data for the current block and the corresponding predictive block. The residual block 204 then generates a residual block for the current block. To generate a residual block, the residual block 204 calculates successive sample differences between the predictive block and the current block.

[0137] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять несколько преобразований для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0137] 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 on the residual block, such as a primary transform and a secondary transform such as a rotational transform. In some examples, transform processing module 206 does not apply transforms to the residual block.

[0138] Модуль 208 квантования может квантовать коэффициенты преобразования в блоке коэффициентов преобразования, чтобы формировать блок квантованных коэффициентов преобразования. Модуль 208 квантования может квантовать коэффициенты преобразования блока коэффициентов преобразования согласно значению параметра квантования (QP), ассоциированному с текущим блоком. Видеокодер 200 (например, через модуль 202 выбора режима) может регулировать степень квантования, применяемую к блокам коэффициентов, ассоциированным с текущим блоком, посредством регулирования QP-значения, ассоциированного с CU. Квантование может вводить потери информации, и в силу этого квантованные коэффициенты преобразования могут иметь меньшую точность, чем исходные коэффициенты преобразования, сформированные посредством модуля 206 обработки преобразования.[0138] 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 according to 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 coefficient blocks associated with the current block by adjusting the QP value associated with the CU. Quantization may introduce loss of information, and because of this, the quantized transform coefficients may have less accuracy than the original transform coefficients generated by the transform processing unit 206 .

[0139] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и прогнозного блока, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из прогнозного блока, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.[0139] 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, in order to recover the residual block from the block of transform coefficients. Restoration module 214 may generate a reconstructed block corresponding to the current block (albeit potentially with a certain degree of distortion) based on the reconstructed residual block and the predictive block generated by mode selector 202 . For example, reconstruction module 214 may sum the samples of the reconstructed residual block with corresponding samples from the prediction block generated by mode selection module 202 to form a reconstructed block.

[0140] Модуль 216 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 216 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев CU. Операции модуля 216 фильтрации могут пропускаться в некоторых примерах.[0140] The 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 a CU. The operations of filter module 216 may be omitted in some examples.

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

[0142] В общем, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы, принимаемые из других функциональных компонентов видеокодера 200, включающие в себя синтаксические элементы, описанные выше для кодирования коэффициентов. Например, модуль 220 энтропийного кодирования может энтропийно кодировать блоки квантованных коэффициентов преобразования из модуля 208 квантования. В качестве другого примера, модуль 220 энтропийного кодирования может энтропийно кодировать синтаксические элементы прогнозирования (например, информацию движения для взаимного прогнозирования или информацию внутреннего режима для внутреннего прогнозирования) из модуля 202 выбора режима. Модуль 220 энтропийного кодирования может выполнять одну или более операций энтропийного кодирования для синтаксических элементов, которые представляют собой другой пример видеоданных, чтобы формировать энтропийно кодированные данные. Например, модуль 220 энтропийного кодирования может выполнять операцию контекстно-адаптивного кодирования переменной длины (CAVLC), CABAC-операцию, операцию кодирования переменно-переменной (V2V) длины, операцию синтаксического контекстно-адаптивного двоичного арифметического кодирования (SBAC), операцию энтропийного кодирования на основе сегментирования на интервалы вероятности (PIPE), операцию экспоненциального кодирования кодом Голомба или другой тип операции энтропийного кодирования для данных. В некоторых примерах, модуль 220 энтропийного кодирования может работать в обходном режиме, в котором синтаксические элементы не подвергаются энтропийному кодированию.[0142] In general, entropy encoding module 220 may entropy encode syntax elements received from other functional components of video encoder 200, including the syntax elements described above for coefficient encoding. 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, inter-prediction motion information or intra-prediction intra mode information) from mode selection unit 202 . Entropy encoding module 220 may perform one or more entropy encoding operations on syntax elements that 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 length variable (V2V) coding operation, a syntactic context adaptive binary arithmetic coding (SBAC) operation, an entropy coding operation based on segmentation into probability intervals (PIPE), an exponential Golomb encoding operation, or another type of entropy encoding operation for the data. In some examples, entropy encoding module 220 may operate in a bypass mode in which syntax elements are not entropy encoded.

[0143] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки среза или кадра. В частности, модуль 220 энтропийного кодирования может выводить поток битов.[0143] Video encoder 200 may output a bit stream that includes entropy encoded syntax elements required in order to reconstruct slice or frame blocks. In particular, entropy encoding unit 220 may output a bitstream.

[0144] Операции, описанные выше, описываются относительно блока. Такое описание должно пониматься как операции для блока кодирования сигналов яркости и/или блоков кодирования сигналов цветности. Как описано выше, в некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности CU. В некоторых примерах, блок кодирования сигналов яркости и блоки кодирования сигналов цветности представляют собой компоненты сигнала яркости и сигнала цветности PU.[0144] 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 luminance signal and chrominance signal components of the CU. In some examples, the luminance coder and the chrominance coders are luma and chroma components of the PU.

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

[0146] Видеокодер 200 представляет пример устройства, выполненного с возможностью кодировать видеоданные, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью кодировать коэффициенты, как описано в этом раскрытии.[0146] Video encoder 200 is an example of an apparatus configured to encode video data, including a memory configured to store video data and one or more processing modules implemented in a circuit and configured to encode coefficients as described in this disclosure.

[0147] Фиг. 10 является блок-схемой, иллюстрирующей примерный видеодекодер 300, который может выполнять технологии этого раскрытия. Фиг. 10 предоставляется для целей пояснения и не является ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии. Для целей пояснения, это раскрытие описывает видеодекодер 300, описанный согласно технологиям JEM и HEVC. Тем не менее технологии этого раскрытия могут выполняться посредством устройств кодирования видео, которые сконфигурированы для других стандартов кодирования видео.[0147] FIG. 10 is a block diagram illustrating an exemplary video decoder 300 that may perform the techniques of this disclosure. Fig. 10 is provided for purposes of explanation and is not intended to be a limitation of the technologies illustrated and outlined in this disclosure. For purposes of explanation, this disclosure describes a video decoder 300 described in terms of JEM and HEVC technologies. However, the techniques of this disclosure may be performed by video coding devices that are configured for other video coding standards.

[0148] В примере по фиг. 10, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных кадров (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных кадров (DPB). Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя модули суммирования, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.[0148] In the example of FIG. 10, the video decoder 300 includes a coded frame buffer (CPB) 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 frame buffer 314. (DPB). The prediction processing module 304 includes a motion compensation module 316 and an intra prediction module 318 . The prediction processing unit 304 may include summing units to perform prediction in accordance with other prediction modes. As an example, the prediction processing module 304 may include a palette processing module, an intra-block copy module (which may be part of the motion compensation module 316), an affine processing module, a linear model (LM) processing module, and the like. In other examples, video decoder 300 may include more, fewer, or other functional components.

[0149] Запоминающее CPB-устройство 320 может сохранять видеоданные, такие как кодированный поток видеобитов, который должен декодироваться посредством компонентов видеодекодера 300. Видеоданные, сохраненные в запоминающем CPB-устройстве 320, могут получаться, например, из машиночитаемого носителя 110 (фиг. 1). Запоминающее CPB-устройство 320 может включать в себя CPB, который сохраняет кодированные видеоданные (например, синтаксические элементы) из кодированного потока видеобитов. Кроме того, запоминающее CPB-устройство 320 может сохранять видеоданные, отличные от синтаксических элементов кодированного кадра, такие как временные данные, представляющие выводы из различных модулей видеодекодера 300. DPB 314, в общем, сохраняет декодированные кадры, которые видеодекодер 300 может выводить и/или использовать в качестве опорных видеоданных при декодировании последующих данных или кадров кодированного потока видеобитов. Запоминающее CPB-устройство 320 и DPB 314 могут формироваться посредством любого из множества запоминающих устройств, к примеру, как динамическое оперативное запоминающее устройство (DRAM), включающее в себя синхронное DRAM (SDRAM), магниторезистивное RAM (MRAM), резистивное RAM (RRAM) или другие типы запоминающих устройств. Запоминающее CPB-устройство 320 и DPB 314 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее CPB-устройство 320 может быть внутримикросхемным с другими компонентами видеодекодера 300 или внемикросхемным относительно этих компонентов.[0149] The CPB storage device 320 may store video data, such as an encoded video bit stream to be decoded by the components of the video decoder 300. The video data stored in the CPB storage device 320 may be obtained, for example, from a computer-readable medium 110 (FIG. 1) . CPB storage 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 syntax elements of the encoded frame, such as temporal data representing outputs from various modules of the video decoder 300. The DPB 314 generally stores decoded frames that the video decoder 300 may output and/or be used as reference video data when decoding subsequent data or frames of the encoded video bitstream. The CPB memory 320 and DPB 314 may be formed by any of a variety of memories, such as dynamic random access memory (DRAM) including synchronous DRAM (SDRAM), magnetoresistive RAM (MRAM), resistive RAM (RRAM), or other types of storage devices. The CPB storage device 320 and DPB 314 may be provided via an identical storage device or separate storage 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.

[0150] Дополнительно или альтернативно, в некоторых примерах, видеодекодер 300 может извлекать кодированные видеоданные из запоминающего устройства 120 (фиг. 1). Таким образом, запоминающее устройство 120 может сохранять данные, как пояснено выше для запоминающего CPB-устройства 320. Аналогично, запоминающее устройство 120 может хранить инструкции, которые должны исполняться посредством видеодекодера 300, когда часть или вся функциональность видеодекодера 300 реализуется в программном обеспечении для выполнения посредством схемы обработки видеодекодера 300.[0150] Additionally or alternatively, in some examples, video decoder 300 may retrieve encoded video data from memory 120 (FIG. 1). Thus, 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 for execution by video decoder processing circuitry 300.

[0151] Различные модули, показанные на фиг. 10, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 9, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0151] The various modules shown in FIG. 10 are illustrated to assist in understanding the operations performed by video decoder 300. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Similarly to FIG. 9, fixed functional circuits means circuits that provide specific functionality and are predetermined with respect to operations that can be performed. Programmable circuits means circuits that can be programmed to perform various tasks and provide flexible functionality in operations that can be performed. For example, the programmable circuits may execute software or firmware that causes the programmable circuits to operate in a manner specified by the software or firmware instructions. Fixed function circuits can execute program instructions (eg, to receive parameters or output parameters), but the types of operations that fixed function circuits perform are generally immutable. In some examples, one or more modules may be various circuit blocks (fixed function or programmable), and in some examples, one or more modules may be integrated circuits.

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

[0153] Модуль 302 энтропийного декодирования может принимать кодированные видеоданные из CPB и энтропийно декодировать видеоданные для того, чтобы воспроизводить синтаксические элементы, включающие в себя синтаксические элементы, описанные выше для кодирования коэффициентов. Модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления и модуль 312 фильтрации могут формировать декодированные видеоданные на основе синтаксических элементов, извлеченных из потока битов.[0153] The entropy decoding module 302 may receive the encoded video data from the CPB and entropy decode the video data in order to reproduce syntax elements including the syntax elements described above for coefficient coding. 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 bit stream.

[0154] В общем, видеодекодер 300 восстанавливает кадр на поблочной основе. Видеодекодер 300 может выполнять операцию восстановления для каждого блока отдельно (причем блок, в данный момент восстанавливаемый, т.е. декодируемый, может называться "текущим блоком").[0154] In general, video decoder 300 reconstructs a frame on a block-by-block basis. Video decoder 300 may perform the recovery operation for each block separately (and the block currently being recovered, ie, being decoded, may be referred to as the "current block").

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

[0156] После того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов.[0156] After inverse quantizer 306 generates 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 module 308 may apply an inverse DCT, inverse integer transform, inverse Karhunen-Loeve (KLT), inverse rotational, inverse directional transform, or other inverse transform to the coefficient block.

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

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

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

[0160] Модуль 312 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 312 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.[0160] 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. The operations of filter module 312 are not necessarily performed in all examples.

[0161] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущего кадра для внутреннего прогнозирования и ранее декодированных кадров для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные кадры из DPB для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.[0161] Video decoder 300 may store the reconstructed blocks in DPB 314. As explained above, DPB 314 may provide reference information, such as samples of the current frame for intra prediction and previously decoded frames for subsequent motion compensation, to prediction processing unit 304. In addition, video decoder 300 may output decoded frames from the DPB for subsequent presentation on a display device, such as display device 118 of FIG. 1.

[0162] Таким образом, видеодекодер 300 представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью декодировать коэффициенты, как описано в этом раскрытии.[0162] Thus, video decoder 300 is an example of a video decoding apparatus including a memory configured to store video data and one or more processing modules implemented in a circuit and configured to decode coefficients as described in this disclosure.

[0163] Фиг. 11A и 11B показывают примеры CABAC-процесса в элементе n разрешения. В примере 400 по фиг. 11A, в элементе n разрешения диапазон в элементе 2 разрешения включает в себя RangeMPS и RangeLPS, заданные посредством вероятности наименее вероятного символа (LPS) (pσ) с учетом определенного контекстного состояния (σ). Пример 400 показывает обновление диапазона в элементе n+1 разрешения, когда значение элемента n разрешения равно наиболее вероятному символу (MPS). В этом примере, низкий уровень остается идентичным, но значение диапазона в элементе n+1 разрешения уменьшается до значения RangeMPS в элементе n разрешения. Пример 402 по фиг. 11B показывает обновление диапазона в элементе n+1 разрешения, когда значение элемента n разрешения не равно MPS (т.е. равно LPS). В этом примере, низкий уровень перемещается к более низкому значению диапазона RangeLPS в элементе n разрешения. Помимо этого, значение диапазона в элементе n+1 разрешения уменьшается до значения RangeLPS в элементе n разрешения.[0163] FIG. 11A and 11B show examples of the CABAC process in permission element n. In example 400 of FIG. 11A, in bin n, the range in bin 2 includes RangeMPS and RangeLPS specified by least probable symbol probability (LPS) (p σ ) given a certain context state (σ). Example 400 shows a range update in permission element n+1 when the value of permission element n is equal to the most likely symbol (MPS). In this example, the low level remains identical, but the range value in bin n+1 is reduced to the RangeMPS value in bin n. Example 402 of FIG. 11B shows a range update in bin n+1 when the value of bin n is not equal to MPS (ie equal to LPS). In this example, the low level moves to the lower value of the RangeLPS range in bin n. In addition, the range value in bin n+1 is reduced to the value of RangeLPS in bin n.

[0164] В одном примере процесса HEVC-кодирования видео, диапазон выражается с помощью 9 битов, а низкий уровень с помощью 10 битов. Предусмотрен процесс ренормализации для того, чтобы поддерживать значения диапазона и низкого уровня с достаточной точностью. Ренормализация возникает каждый раз, когда диапазон меньше 256. Следовательно, диапазон всегда равен или выше 256 после ренормализации. В зависимости от значений диапазона и низкого уровня, двоичный арифметический кодер (BAC) выводит в поток битов 0 или 1 либо обновляет внутреннюю переменную (называемую "BO: с незавершенными битами"), с поддержкой будущих выводов. Фиг. 12 показывает примеры BAC-вывода в зависимости от диапазона. Например, 1 выводится в поток битов, когда диапазон и низкий уровень составляют выше определенного порогового значения (например, 512). 0 выводится в поток битов, когда диапазон и низкий уровень составляют ниже определенного порогового значения (например, 512). Ничего не выводится в поток битов, когда диапазон и низкий уровень составляют между определенными пороговыми значениями. Вместо этого, BO-значение может постепенно увеличиваться, и следующий элемент разрешения кодируется.[0164] In one example of a HEVC video encoding process, a range is expressed with 9 bits and a low level with 10 bits. A renormalization process is provided to maintain range and low values with sufficient accuracy. Renormalization occurs every time the range is less than 256. Therefore, the range is always equal to or greater than 256 after renormalization. Depending on the range and low values, the binary arithmetic encoder (BAC) outputs 0 or 1 bits to the bitstream, or updates an internal variable (called "BO: with bits pending") to support future outputs. Fig. 12 shows examples of BAC output depending on the range. For example, 1 is output to the bitstream when the range and low are above a certain threshold (eg, 512). 0 is output to the bitstream when range and low are below a certain threshold (eg, 512). Nothing is output to the bitstream when range and low are between certain thresholds. Instead, the BO-value may increment and the next bin is encoded.

[0165] В контекстной CABAC-модели H.264/AVC и в некоторых примерах HEVC, предусмотрено 128 состояний. Предусмотрено 64 возможных LPS-вероятности (обозначаемых посредством состояния σ), которые могут составлять от 0 до 63. Каждый MPS может быть равен нулю или единице. В связи с этим, 128 состояний представляют собой 64 вероятности состояний, умноженные на 2 возможных значения для MPS (0 или 1). Следовательно, состояние может индексироваться с помощью 7 битов.[0165] In the H.264/AVC CABAC context model, and in some HEVC examples, there are 128 states. There are 64 possible LPS probabilities (denoted by the state σ) that can range from 0 to 63. Each MPS can be zero or one. In this regard, 128 states represent 64 state probabilities multiplied by 2 possible values for MPS (0 or 1). Therefore, the state can be indexed with 7 bits.

[0166] Чтобы уменьшать объем вычислений для извлечения LPS-диапазонов (rangeLPSσ), результаты для всех случаев могут предварительно вычисляться и сохраняться в качестве аппроксимаций в таблице поиска. Следовательно, LPS-диапазон может получаться вообще без умножения посредством использования простого табличного поиска. Исключение умножения может быть важным для некоторых устройств или приложений, поскольку эта операция может вызывать значимую задержку во многих аппаратных архитектурах.[0166] In order to reduce the amount of computation for extracting LPS ranges (rangeLPS σ ), results for all cases may be precomputed and stored as approximations in a lookup table. Therefore, the LPS range can be obtained without multiplication at all by using a simple table lookup. The elimination of multiplication may be important for some devices or applications because this operation can cause significant latency in many hardware architectures.

[0167] 4-столбцовая предварительно вычисленная таблица LPS-диапазонов может использоваться вместо умножения. Диапазон разделяется на четыре сегмента. Индекс сегмента может извлекаться посредством вопроса (диапазон>>6)&3. Фактически, индекс сегмента извлекается посредством сдвига и отбрасывания битов из фактического диапазона. Следующая таблица 1 показывает возможные диапазоны и их соответствующие индексы.[0167] A 4-column precomputed LPS range table may be used instead of multiplication. The range is divided into four segments. The segment index can be retrieved by asking (range>>6)&3. In fact, the segment index is extracted by shifting and discarding bits from the actual range. The following table 1 shows the possible ranges and their respective indices.

Таблица 1. Индекс диапазоновTable 1. Index of ranges

ДиапазонRange 256-319256-319 320-383320-383 384-447384-447 448-511448-511 (диапазон>>6) & 3(range>>6) & 3 00 11 22 33

[0168] Таблица LPS-диапазонов в таком случае имеет 64 записи (по одной для каждого вероятностного состояния), умноженные на 4 (по одному для каждого индекса диапазона). Каждая запись представляет собой LPS диапазона, т.е. значение умножения диапазона на LPS-вероятность. Пример части этой таблицы показывается в следующей таблице 2. Таблица 2 иллюстрирует вероятностные состояния 9-12. В одном предложении по HEVC, вероятностные состояния могут колебаться от 0-63.[0168] The LPS range table then has 64 entries (one for each probability state) multiplied by 4 (one for each range index). Each entry is an LPS of a range, i.e. the value of multiplying the range by the LPS-probability. An example of a portion of this table is shown in the following table 2. Table 2 illustrates probabilistic states 9-12. In one HEVC proposal, the probability states can range from 0-63.

Таблица 2. RangeLPSTable 2. RangeLPS

Вероятностное состояние (σ)Probabilistic state (σ) RangeLPSRangeLPS Индекс 0Index 0 Индекс 1Index 1 Индекс 2Index 2 Индекс 3Index 3 ...... ...... ...... ...... ...... 99 9090 110110 130130 150150 1010 8585 104104 123123 142142 11eleven 8181 9999 117117 135135 1212 7777 9494 111111 128128 ...... ...... ...... ...... ......

[0169] В каждом сегменте (т.е. при каждом значении диапазона), LPS-диапазон каждого вероятностного состояния σ предварительно задается. Другими словами, LPS-диапазон вероятностного состояния σ квантуется в четыре значения (т.е. по одному значению для каждого индекса диапазонов). Конкретный LPS-диапазон, используемый в данной точке, зависит от того, какому сегменту принадлежит диапазон. Число возможных LPS-диапазонов, используемых в таблице, представляет собой компромисс между числом столбцов таблицы (т.е. числом возможных значений LPS-диапазона) и точностью LPS-диапазона. Вообще говоря, большее количество столбцов приводит к меньшим ошибкам квантования значений LPS-диапазона, но также и увеличивает потребность в большем объеме запоминающего устройства для того, чтобы сохранять таблицу. Меньшее количество столбцов увеличивает ошибки квантования, но также и уменьшает объем запоминающего устройства, требуемый для того, чтобы сохранять таблицу.[0169] In each segment (ie, at each range value), the LPS range of each probability state σ is predetermined. In other words, the LPS range of the probability state σ is quantized into four values (ie, one value for each range index). The specific LPS range used at a given point depends on which segment the range belongs to. The number of possible LPS ranges used in the table is a compromise between the number of columns in the table (ie, the number of possible LPS range values) and the accuracy of the LPS range. Generally speaking, more columns result in less quantization errors for the LPS range values, but also increase the need for more storage space in order to store the table. Fewer columns increase quantization errors, but also reduce the amount of storage required to store the table.

[0170] Как описано выше, каждое вероятностное LPS-состояние имеет соответствующую вероятность. Вероятность p для каждого состояния извлекается следующим образом:[0170] As described above, each LPS probability state has a corresponding probability. The probability p for each state is extracted as follows:

pσ=α*pσ -1,p σ =α*p σ -1 ,

где состояние σ составляет от 0 до 63. Константа α представляет величину изменения вероятности между каждым контекстным состоянием. В одном примере, α=0,9493, либо, более точно, α=(0,01875/0,5)1/63. Вероятность в состоянии σ=0 равна 0,5 (т.е. p0=1/2). Таким образом, в контекстном состоянии 0, LPS и MPS являются одинаково вероятными. Вероятность в каждом последовательном состоянии извлекается посредством умножения предыдущего состояния на α. В связи с этим, вероятность появления LPS в контекстном состоянии α=1 составляет p0*0,9493 (0,5*0,9493=0,47465). В связи с этим, по мере того, как индекс состояния α увеличивается, вероятность появления LPS понижается.where state σ is between 0 and 63. The constant α represents the amount of change in probability between each context state. In one example, α=0.9493, or more specifically, α=(0.01875/0.5) 1/63 . The probability in the state σ=0 is 0.5 (i.e. p 0 =1/2). Thus, in context state 0, LPS and MPS are equally likely. The probability in each successive state is obtained by multiplying the previous state by α. In this regard, the probability of occurrence of LPS in the context state α=1 is p 0 *0.9493 (0.5*0.9493=0.47465). In this regard, as the state index α increases, the probability of occurrence of LPS decreases.

[0171] CABAC является адаптивным, поскольку вероятностные состояния обновляются таким образом, что они соответствуют статистике по сигналам (т.е. значениям ранее кодированных элементов разрешения). Процесс обновления заключается в следующем. Для данного вероятностного состояния, обновление зависит от индекса состояния и значения кодированного символа, идентифицированного в качестве LPS или в качестве MPS. Как результат процесса обновления, извлекается новое вероятностное состояние, которое состоит из потенциально модифицированной оценки LPS-вероятности и, при необходимости, модифицированного MPS-значения.[0171] CABAC is adaptive because the probabilistic states are updated in such a way that they correspond to the statistics on the signals (i.e., the values of previously encoded bins). The update process is as follows. For a given probability state, the update depends on the state index and the value of the encoded symbol identified as LPS or as MPS. As a result of the update process, a new probability state is retrieved, which consists of a potentially modified LPS probability estimate and, if necessary, a modified MPS value.

[0172] В случае значения элемента разрешения, равного MPS, данный индекс состояния может постепенно увеличиваться на 1. Это актуально для всех состояний кроме тех случаев, когда MPS возникает при индексе 62 состояния, при котором LPS-вероятность уже является минимальной (или эквивалентно, максимальная MPS-вероятность достигается). В этом случае, индекс 62 состояния остается фиксированным до тех пор, пока LPS не наблюдается либо значение последнего элемента разрешения не кодируется (состояние 63 используется для частного случая значения последнего элемента разрешения). Когда LPS возникает, индекс состояния изменяется посредством постепенного уменьшения индекса состояния на определенную величину, как показано в нижеприведенном уравнении. Это правило, в общем, применяется к каждому возникновению LPS со следующим исключением. При условии, что LPS кодирован в состоянии с индексом σ=0, что соответствует равновероятному случаю, индекс состояния остается фиксированным, но MPS-значение должно переключаться таким образом, что значение LPS и MPS должно меняться местами. Во всех остальных случаях, независимо от того, какой символ кодирован, MPS-значение не должно изменяться. Извлечение правил перехода для LPS-вероятности основано на следующем отношении между данной LPS-вероятностью pold и ее обновленным дубликатом pnew:[0172] In the case of a bin value equal to MPS, this state index may increment by 1. This is relevant for all states except when MPS occurs at state index 62, at which the LPS probability is already at a minimum (or equivalently, the maximum MPS-probability is reached). In this case, the state index 62 remains fixed until the LPS is observed or the last bin value is encoded (state 63 is used for the special case of the last bin value). When LPS occurs, the state index is changed by gradually decreasing the state index by a certain amount, as shown in the equation below. This rule generally applies to every occurrence of LPS with the following exception. Provided that the LPS is encoded in the state with index σ=0, which corresponds to the equiprobable case, the state index remains fixed, but the MPS value must be switched such that the value of LPS and MPS must be swapped. In all other cases, no matter which character is encoded, the MPS value must not change. Extraction of transition rules for an LPS probability is based on the following relationship between a given LPS probability p old and its updated counterpart p new :

pnew=max(α pold, p62), если возникает MPS p new =max(α p old , p 62 ) if MPS occurs

pnew=(1-α)+α pold, если возникает LPSp new =(1-α)+α p old if LPS occurs

[0173] Относительно практической реализации процесса оценки вероятности в CABAC важно отметить, что все правила перехода могут быть реализованы посредством самое большее двух таблиц, имеющих 63 записи 6-битовых целочисленных значений без знака. В некоторых примерах, переходы состояния могут определяться с помощью одной таблицы TransIdxLPS, которая определяет, для данного индекса σ состояния, новый обновленный индекс TransIdxLPS[σ] состояния в случае, если наблюдается LPS. MPS-обусловленные переходы могут получаться посредством простого (насыщенного) приращения индекса состояния на фиксированное значение в 1, что приводит к обновленному индексу min(σ+1, 62) состояния. Нижеприведенная таблица 3 представляет собой пример частичной таблицы TransIdxLPS.[0173] Regarding the practical implementation of the probability estimation process in CABAC, it is important to note that all transition rules can be implemented by at most two tables having 63 entries of unsigned 6-bit integer values. In some examples, state transitions may be defined using a single TransIdxLPS table that defines, for a given state index σ, a new updated state index TransIdxLPS[σ] in case LPS is observed. MPS-conditioned transitions can be obtained by simply (saturated) incrementing the state index by a fixed value of 1, resulting in an updated state index min(σ+1, 62). Table 3 below is an example of a partial TransIdxLPS table.

Таблица 3. TransIdxLPSTable 3. TransIdxLPS

Вероятностное состояние (σ)Probabilistic state (σ) Новое состояние TransIdxLPS[σ]New state TransIdxLPS[σ] ...... ...... 99 66 1010 88 11eleven 88 1212 88 ...... ......

[0174] Технологии, описанные выше относительно фиг. 11A, 11B и 12, представляют просто одну примерную реализацию CABAC. Следует понимать, что технологии этого раскрытия не ограничены только этой описанной реализацией CABAC. Например, в устаревших BAC-подходах (например, в BAC-подходе, используемому в H.264/AVC), таблицы RangeLPS и TransIdxLPS настроены для видео низкого разрешения (т.е. для видео в общем промежуточном формате (CIF) и в четверть-CIF-формате (QCIF)). В HEVC- и будущих кодеках, таких как VVC, большой объем видеоконтента имеет высокую четкость (HD) и, в некоторых случаях, более чем HD. Видеоконтент, который имеет HD- или более чем HD-разрешение, имеет тенденцию иметь статистику, отличную от статистики 10-летних QCIF-последовательностей, используемых для того, чтобы разрабатывать H.264/AVC. В связи с этим, таблицы RangeLPS и TransIdxLPS из H.264/AVC могут вызывать адаптацию между состояниями таким способом, который слишком является быстрым. Таким образом, переходы между вероятностными состояниями, в частности, когда LPS возникает, могут быть слишком большими для более плавного контента более высокого разрешения HD-видео. Таким образом, вероятностные модели, используемые согласно традиционным технологиям, могут не быть настолько точными для HD- и сверхHD-контента. Помимо этого, поскольку HD-видеоконтент включает в себя больший диапазон пиксельных значений, таблицы H.264/AVC не включают в себя достаточное количество записей для того, чтобы учитывать более экстремальные значения, которые могут присутствовать в HD-контенте.[0174] The techniques described above with respect to FIG. 11A, 11B and 12 represent just one exemplary implementation of CABAC. It should be understood that the techniques of this disclosure are not limited to this described implementation of CABAC. For example, in legacy BAC approaches (such as the BAC approach used in H.264/AVC), the RangeLPS and TransIdxLPS tables are configured for low resolution video (i.e. common intermediate format (CIF) video and quarter -CIF format (QCIF)). In HEVC and future codecs such as VVC, a large amount of video content is high definition (HD) and in some cases more than HD. Video content that is HD or higher than HD resolution tends to have different statistics than the 10 year QCIF sequences used to develop H.264/AVC. As such, the H.264/AVC RangeLPS and TransIdxLPS tables may cause inter-state adaptation in a way that is too fast. Thus, transitions between probabilistic states, in particular when LPS occurs, may be too large for smoother, higher resolution HD video content. Thus, the probabilistic models used by conventional technologies may not be as accurate for HD and ultra HD content. In addition, because HD video content includes a larger range of pixel values, the H.264/AVC tables do not include enough entries to account for the more extreme values that may be present in HD content.

[0175] В связи с этим, для HEVC и для будущих стандартов кодирования, таких как VVC, таблицы RangeLPS и TransIdxLPS могут модифицироваться с возможностью учитывать характеристики этого нового контента. В частности, BAC-процессы для HEVC и будущих стандартов кодирования могут использовать таблицы, которые предоставляют возможность более медленного процесса адаптации и могут учитывать более крайние случаи (т.е. скошенные вероятности). Таким образом, в качестве одного примера, таблицы RangeLPS и TransIdxLPS могут модифицироваться с возможностью достигать этих целей за счет включения большего числа вероятностных состояний и диапазонов, чем используются в BAC для H.264/AVC или HEVC.[0175] In this regard, for HEVC and for future coding standards such as VVC, the RangeLPS and TransIdxLPS tables can be modified to take into account the characteristics of this new content. In particular, BAC processes for HEVC and future coding standards may use tables that allow for a slower adaptation process and may take into account more extreme cases (ie, skew probabilities). Thus, as one example, the RangeLPS and TransIdxLPS tables can be modified to achieve these goals by including more probability states and ranges than are used in BAC for H.264/AVC or HEVC.

[0176] Фиг. 13 является блок-схемой примерного модуля 220 энтропийного кодирования, который может быть выполнен с возможностью выполнять CABAC в соответствии с технологиями этого раскрытия. Синтаксический элемент 418 вводится в модуль 220 энтропийного кодирования. Если синтаксический элемент уже представляет собой двоичный синтаксический элемент (т.е. синтаксический элемент, который имеет только значение нуль и единицу), этап преобразования в двоичную форму может пропускаться. Если синтаксический элемент представляет собой недвоичный синтаксический элемент (например, синтаксический элемент, представленный посредством нескольких битов, к примеру, уровней коэффициентов преобразования), недвоичный синтаксический элемент преобразуется в двоичную форму посредством модуля 420 преобразования в двоичную форму. Модуль 420 преобразования в двоичную форму выполняет преобразование недвоичного синтаксического элемента в последовательность двоичных решений. Эти двоичные решения зачастую называются "элементами разрешения". Например, для уровней коэффициентов преобразования, значение уровня может разбиваться на последовательные элементы разрешения, причем каждый элемент разрешения указывает то, превышает или нет абсолютное значение уровня коэффициентов некоторое значение. Например, элемент 0 разрешения (иногда называемый "флагом значимости") указывает то, превышает абсолютное значение уровня коэффициентов преобразования 0 или нет. Элемент 1 разрешения указывает то, превышает абсолютное значение уровня коэффициентов преобразования 1 или нет и т.д., Уникальное преобразование может разрабатываться для каждого недвоичного синтаксического элемента.[0176] FIG. 13 is a block diagram of an exemplary entropy encoding module 220 that may be configured to perform CABAC in accordance with the techniques of this disclosure. The syntax element 418 is entered into the module 220 entropy encoding. If the syntax element is already a binary syntax element (ie, a syntax element that only has the value zero and one), the binarization step may be skipped. If the syntax element is a non-binary syntax element (eg, a syntax element represented by multiple bits, eg, transform coefficient levels), the non-binary syntax element is binarized by binarization module 420 . The binarizer 420 converts the non-binary syntax element into a sequence of binary solutions. These binary solutions are often referred to as "permission elements". For example, for transform coefficient levels, the level value may be partitioned into successive bins, with each bin indicating whether or not the absolute value of the coefficient level exceeds a certain value. For example, resolution element 0 (sometimes called a "significance flag") indicates whether the absolute value of the transform coefficients level is greater than 0 or not. Permission element 1 indicates whether the absolute value of the transform coefficient level 1 is greater or not, etc. A unique transform may be developed for each non-binary syntax element.

[0177] Каждый элемент разрешения, сформированный посредством модуля 420 преобразования в двоичную форму, подается в сторону двоичного арифметического кодирования модуля 220 энтропийного кодирования. Таким образом, для предварительно определенного набора недвоичных синтаксических элементов, каждый тип элемента разрешения (например, элемента 0 разрешения) кодируется перед типом следующего элемента разрешения (например, элемента 1 разрешения). Кодирование может выполняться в регулярном режиме или в обходном режиме. В обходном режиме, механизм 426 обходного кодирования выполняет арифметическое кодирование с использованием фиксированной вероятностной модели, например, с использованием кодирования кодом Голомба-Райса или экспоненциальным кодом Голомба. Обходной режим в общем, используется для более прогнозируемых синтаксических элементов.[0177] Each bin generated by the binarizer 420 is supplied to the binary arithmetic coding side of the entropy coding unit 220 . Thus, for a predefined set of non-binary syntax elements, each permission element type (eg, permission element 0) is encoded before the type of the next permission element (eg, permission element 1). Encoding can be performed in regular mode or in bypass mode. In bypass mode, bypass coding engine 426 performs arithmetic encoding using a fixed probability model, such as using Golomb-Rice or exponential Golomb encoding. Bypass mode is generally used for more predictable syntax elements.

[0178] Кодирование в регулярном режиме заключает в себе выполнение CABAC. CABAC в регулярном режиме служит для кодирования значений элементов разрешения, при котором вероятность значения элемента разрешения является прогнозируемой, с учетом значений ранее кодированных элементов разрешения. Вероятность равенства LPS элемента разрешения определяется посредством модуля 422 контекстного моделирования. Модуль 422 контекстного моделирования выводит значение элемента разрешения и контекстную модель (например, вероятностное состояние σ). Контекстная модель может представлять собой начальную контекстную модель для последовательности элементов разрешения или может определяться на основе кодированных значений ранее кодированных элементов разрешения. Как описано выше, модуль контекстного моделирования может обновлять состояние на основе того, представляет собой ранее кодированный элемент разрешения MPS или LPS.[0178] Regular mode coding involves executing CABAC. CABAC in regular mode serves to encode bin values such that the probability of a bin value is predictable given the values of previously encoded bins. The probability of equality LPS bin is determined by module 422 context modeling. The context modeling module 422 outputs a bin value and a context model (eg, probability state σ). The context model may be an initial context model for a sequence of permission elements, or may be determined based on encoded values of previously encoded permission elements. As described above, the context modeling module may update the state based on whether it is a previously encoded MPS or LPS bin.

[0179] После того, как контекстная модель и вероятностное состояние σ определяются посредством модуля 422 контекстного моделирования, механизм 424 регулярного кодирования выполняет BAC для значения элемента разрешения. Согласно технологиям этого раскрытия, механизм 424 регулярного кодирования выполняет BAC с использованием таблицы 430 TransIdxLPS, которая включает в себя более 64 вероятностных состояний σ. В одном примере, число вероятностных состояний равно 128. TransIdxLPS используется для того, чтобы определять то, какое вероятностное состояние используется для следующего элемента разрешения (элемента n+1 разрешения), когда предыдущий элемент разрешения (элемент n разрешения) представляет собой LPS. Механизм 424 регулярного кодирования также может использовать таблицу 128 RangeLPS для того, чтобы определять значение диапазона для LPS с учетом конкретного вероятностного состояния σ. Тем не менее, согласно технологиям этого раскрытия, вместо использования всех возможных вероятностных состояний σ таблицы 430 TransIdxLPS, индексы σ вероятностных состояний преобразуются в сгруппированные индексы для использования в таблице RangeLPS. Таким образом, каждый индекс в таблице 428 RangeLPS может представлять два или более из общего числа вероятностных состояний. Преобразование индекса σ вероятностного состояния в сгруппированные индексы может быть линейным (например, посредством деления на два) либо может быть нелинейным (например, как логарифмическая функция или таблица преобразования).[0179] After the context model and the probability state σ are determined by the context modeling module 422, the regular encoding engine 424 performs BAC on the bin value. According to the techniques of this disclosure, regular encoding engine 424 performs BAC using TransIdxLPS table 430, which includes more than 64 probability states σ. In one example, the number of probability states is 128. TransIdxLPS is used to determine which probability state is used for the next bin (bin n+1) when the previous bin (bin n) is an LPS. Regular encoding engine 424 may also use RangeLPS table 128 to determine the range value for LPS given a particular probability state σ. However, according to the techniques of this disclosure, instead of using all possible probability states σ of the TransIdxLPS table 430, the probability state indices σ are converted into grouped indices for use in the RangeLPS table. Thus, each index in RangeLPS table 428 may represent two or more of the total number of probability states. The transformation of the probability state index σ to grouped indices may be linear (eg, by dividing by two) or may be non-linear (eg, as a logarithmic function or a lookup table).

[0180] В других примерах раскрытия, разность между последовательными вероятностными состояниями может задаваться меньшей посредством задания параметра α таким образом, что он больше 0,9493. В одном примере, α=0,9689. В другом примере раскрытия, наибольшая вероятность (p0) появления LPS может задаваться ниже 0,5. В одном примере, p0 может быть равна 0,493.[0180] In other examples of the disclosure, the difference between successive probabilistic states can be made smaller by setting the parameter α such that it is greater than 0.9493. In one example, α=0.9689. In another disclosure example, the highest probability (p 0 ) of the occurrence of LPS may be set below 0.5. In one example, p 0 may be equal to 0.493.

[0181] В соответствии с одной или более технологиями этого раскрытия, в отличие от использования идентичного значения переменной, используемой для того, чтобы обновлять вероятностное состояние в процессе двоичного арифметического кодирования (например, одного или более из размера окна кодирования со взвешиванием, коэффициента (α) масштабирования и скорости обновления вероятности), модуль 220 энтропийного кодирования может использовать различные значения переменной для различных контекстных моделей и/или различных синтаксических элементов. Например, модуль 220 энтропийного кодирования может определять, для контекстной модели из множества контекстных моделей, значение переменной, используемой для того, чтобы обновлять вероятностное состояние в процессе двоичного арифметического кодирования, и обновлять вероятностное состояние на основе определенного значения.[0181] In accordance with one or more of the techniques of this disclosure, as opposed to using the same value of the variable used to update the probability state in the binary arithmetic encoding process (e.g., one or more of the weighted coding window size, coefficient (α ) scaling and probability update rate), entropy encoding module 220 may use different variable values for different context models and/or different syntax elements. For example, entropy encoding module 220 may determine, for a context model from a plurality of context models, the value of a variable used to update the probability state in the binary arithmetic encoding process, and update the probability state based on the determined value.

[0182] Фиг. 14 является блок-схемой примерного модуля 302 энтропийного декодирования, который может быть выполнен с возможностью выполнять CABAC в соответствии с технологиями этого раскрытия. Модуль 302 энтропийного декодирования по фиг. 14 выполняет CABAC обратным способом по отношению к способу для модуля 220 энтропийного кодирования, описанного на фиг. 13. Кодированные биты из потока 448 битов вводятся в модуль 302 энтропийного декодирования. Кодированные биты подаются в модуль 450 контекстного моделирования или в механизм 452 обходного декодирования на основе того, кодированные биты энтропийно кодированы с использованием обходного режима или регулярного режима. Если кодированные биты кодированы в обходном режиме, механизм 452 обходного декодирования, например, может использовать декодирование кодом Голомба-Райса или экспоненциальным кодом Голомба для того, чтобы извлекать двоичные синтаксические элементы или элементы разрешения недвоичных синтаксических элементов.[0182] FIG. 14 is a block diagram of an exemplary entropy decoding module 302 that may be configured to perform CABAC in accordance with the techniques of this disclosure. The entropy decoding module 302 of FIG. 14 performs CABAC in a reverse manner to the method for entropy encoding unit 220 described in FIG. 13. The encoded bits from the bit stream 448 are input to the entropy decoding module 302 . The coded bits are provided to the context modeling module 450 or to the bypass decoding engine 452 based on whether the coded bits are entropy encoded using the bypass mode or the regular mode. If the encoded bits are bypass encoded, the bypass decoding engine 452, for example, may use Golomb-Rice or Exponential Golomb decoding to extract binary syntax elements or non-binary syntax element enablers.

[0183] Если кодированные биты кодированы в регулярном режиме, модуль 450 контекстного моделирования может определять вероятностную модель для кодированных битов, и механизм 454 регулярного декодирования может декодировать кодированные биты для того, чтобы формировать элементы разрешения недвоичных синтаксических элементов (либо непосредственно синтаксические элементы, если двоичные). После того, как контекстная модель и вероятностное состояние σ определяются посредством модуля 450 контекстного моделирования, механизм 454 регулярного декодирования выполняет BAC для значения элемента разрешения. Согласно технологиям этого раскрытия, механизм 454 регулярного декодирования выполняет BAC с использованием таблицы 458 TransIdxLPS, которая включает в себя более 64 вероятностных состояний σ. В одном примере, число вероятностных состояний равно 128, хотя другие числа вероятностных состояний могут задаваться в соответствии с технологиями этого раскрытия. Таблица 458 TransIdxLPS используется для того, чтобы определять то, какое вероятностное состояние используется для следующего элемента разрешения (элемента n+1 разрешения), когда предыдущий элемент разрешения (элемент n разрешения) представляет собой LPS. Механизм 454 регулярного декодирования также может использовать таблицу 456 RangeLPS для того, чтобы определять значение диапазона для LPS с учетом конкретного вероятностного состояния σ. Тем не менее, согласно технологиям этого раскрытия, вместо использования всех возможных вероятностных состояний σ таблицы 458 TransIdxLPS, индексы σ вероятностных состояний преобразуются в сгруппированные индексы для использования в таблице 456 RangeLPS. Таким образом, каждый индекс в таблице 456 RangeLPS может представлять два или более из общего числа вероятностных состояний. Преобразование индекса σ вероятностного состояния в сгруппированные индексы может быть линейным (например, посредством деления на два) либо может быть нелинейным (например, как логарифмическая функция или таблица преобразования).[0183] If the encoded bits are encoded in a regular mode, the context modeling module 450 may determine a probability model for the encoded bits, and the regular decoding engine 454 may decode the encoded bits in order to generate non-binary syntax elements (or directly syntax elements if binary ). After the context model and probability state σ are determined by the context modeling module 450, the regular decoding engine 454 performs a BAC on the bin value. According to the techniques of this disclosure, the regular decoding engine 454 performs BAC using a TransIdxLPS table 458 that includes more than 64 probability states σ. In one example, the number of probability states is 128, although other numbers of probability states may be specified in accordance with the techniques of this disclosure. The TransIdxLPS table 458 is used to determine which probability state is used for the next bin (bin n+1) when the previous bin (bin n) is an LPS. Regular decoding engine 454 may also use RangeLPS table 456 to determine a range value for LPS given a particular probability state σ. However, according to the techniques of this disclosure, instead of using all possible probability states σ of the TransIdxLPS table 458, the probability state indices σ are converted into grouped indices for use in the RangeLPS table 456. Thus, each index in RangeLPS table 456 may represent two or more of the total number of probability states. The transformation of the probability state index σ to grouped indices may be linear (eg, by dividing by two) or may be non-linear (eg, as a logarithmic function or a lookup table).

[0184] В других примерах раскрытия, разность между последовательными вероятностными состояниями может задаваться меньшей посредством задания параметра α таким образом, что он больше 0,9493. В одном примере, α=0,9689. В другом примере раскрытия, наибольшая вероятность (p0) появления LPS может задаваться ниже 0,5. В одном примере, p0 может быть равна 0,493.[0184] In other examples of the disclosure, the difference between successive probabilistic states can be made smaller by setting the parameter α such that it is greater than 0.9493. In one example, α=0.9689. In another disclosure example, the highest probability (p 0 ) of the occurrence of LPS may be set below 0.5. In one example, p 0 may be equal to 0.493.

[0185] После того, как элементы разрешения декодируются посредством механизма 454 регулярного декодирования, модуль 460 обратного преобразования в двоичную форму может выполнять обратное преобразование для того, чтобы преобразовывать элементы разрешения обратно в значения недвоичных синтаксических элементов.[0185] After the bins are decoded by the regular decoding engine 454, the debinarization module 460 may perform a debinarization to convert the bins back to non-binary syntax element values.

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

[0187] В этом примере, видеокодер 200 первоначально прогнозирует текущий блок (550). Например, видеокодер 200 может формировать блок прогнозирования для текущего блока. Видеокодер 200 затем может вычислять остаточный блок для текущего блока (552). Чтобы вычислять остаточный блок, видеокодер 200 может вычислять разность между исходным, некодированным блоком и блоком прогнозирования для текущего блока. Видеокодер 200 затем может преобразовывать и квантовать коэффициенты остаточного блока (554). Затем видеокодер 200 может сканировать квантованные коэффициенты преобразования остаточного блока (556). В ходе сканирования или после сканирования, видеокодер 200 может энтропийно кодировать коэффициенты (558). Например, видеокодер 200 может кодировать коэффициенты с использованием CAVLC или CABAC. Видеокодер 200 затем может выводить энтропийно кодированные данные блока (560).[0187] In this example, video encoder 200 initially predicts the current block (550). 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 (552). 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 (554). Video encoder 200 may then scan the quantized transform coefficients of the residual block (556). During or after scanning, video encoder 200 may entropy encode the coefficients (558). For example, video encoder 200 may encode the coefficients using CAVLC or CABAC. Video encoder 200 may then output entropy encoded block data (560).

[0188] Фиг. 16 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеодекодера для декодирования текущего блока видеоданных. Текущий блок может включать в себя текущую CU. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 3), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять работу, аналогичную работе по фиг. 16.[0188] FIG. 16 is a flowchart illustrating an exemplary operation of a video decoder for decoding a current block of video data. The current block may include the current CU. While described with respect to video decoder 300 (FIGS. 1 and 3), it should be understood that other devices may be configured to perform similar operation to that of FIGS. 16.

[0189] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, к примеру, энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (570). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты остаточного блока (572). Видеодекодер 300 может прогнозировать текущий блок (574), например, с использованием режима внутреннего или взаимного прогнозирования, как указано посредством информации прогнозирования для текущего блока, чтобы вычислять блок прогнозирования для текущего блока. Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты (576), чтобы создавать блок квантованных коэффициентов преобразования. Видеодекодер 300 затем может обратно квантовать и обратно преобразовывать коэффициенты для того, чтобы формировать остаточный блок (578). Видеодекодер 300 может, в конечном счете, декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (580).[0189] Video decoder 300 may receive entropy coded data for the current block, eg, entropy coded prediction information and entropy coded data for residual block coefficients corresponding to the current block (570). Video decoder 300 may entropy decode the entropy encoded data to determine prediction information for the current block and reproduce residual block coefficients (572). Video decoder 300 may predict the current block (574), for example, 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 reproduced coefficients (576) 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 (578). Video decoder 300 may eventually decode the current block by combining the prediction block and the residual block (580).

[0190] Фиг. 17 является блок-схемой последовательности операций способа, иллюстрирующей примерную работу видеодекодера для декодирования значений коэффициентов. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 10), следует понимать, что другие устройства могут быть выполнены с возможностью выполнять работу, аналогичную работе по фиг. 17.[0190] FIG. 17 is a flowchart illustrating exemplary operation of a video decoder for decoding coefficient values. While described with respect to video decoder 300 (FIGS. 1 and 10), it should be understood that other devices may be configured to perform similar operation to that of FIGS. 17.

[0191] Видеодекодер 300 определяет пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования (602).[0191] Video decoder 300 determines a threshold number of regularly encoded bins for the first decoding pass (602).

[0192] Для первого набора коэффициентов, видеодекодер 300 контекстно декодирует синтаксические элементы группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается (604). Контекстно-декодированные элементы разрешения синтаксических элементов, например, могут включать в себя один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, как описано выше. Каждый из одного или более флагов значимости может указывать то, равен или нет абсолютный уровень для коэффициента нулю, и каждый из одного или более флагов уровня четности может указывать то, имеет коэффициент абсолютный уровень, который является четным или нечетным. Каждый из одного или более первых флагов может указывать то, имеет или нет коэффициент абсолютный уровень, который превышает 2.[0192] For the first set of coefficients, video decoder 300 contextually decodes the syntax elements of the coefficient group until a threshold number of regular-coded bins is reached (604). Context-decoded syntax element enablers, for example, may include one or more significance flags, one or more parity level flags, and one or more first flags, as described above. Each of the one or more significance flags may indicate whether or not the absolute level for the coefficient is zero, and each of the one or more parity level flags may indicate whether the coefficient has an absolute level that is even or odd. Each of the one or more first flags may indicate whether or not the coefficient has an absolute level that is greater than 2.

[0193] Чтобы контекстно декодировать синтаксические элементы группы коэффициентов, видеодекодер 300 может выполнять контекстно-адаптивное двоичное арифметическое декодирование, чтобы декодировать синтаксические элементы группы коэффициентов. В других примерах, чтобы контекстно декодировать синтаксические элементы группы коэффициентов до тех пор, пока пороговое число регулярно-кодированных элементов разрешения не достигается, видеодекодер 300 может определять то, что пороговое число регулярно-кодированных элементов разрешения достигнуто при кодировании синтаксического элемента для коэффициента из первого набора коэффициентов, и контекстно декодировать один или более оставшихся синтаксических элементов для коэффициента из первого набора коэффициентов.[0193] To contextually decode the coefficient group syntax elements, video decoder 300 may perform context-adaptive binary arithmetic decoding to decode the coefficient group syntax elements. In other examples, to contextually decode the syntax elements of a coefficient group until a threshold number of regularly-coded bins is reached, video decoder 300 may determine that a threshold number of regularly-coded bins is reached when encoding a syntax element for a coefficient from the first set coefficients, and contextually decode one or more remaining syntax elements for the coefficient from the first coefficient set.

[0194] Видеодекодер 300 определяет значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов (606). В ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, видеодекодер 300 выполняет обходное декодирование дополнительных синтаксических элементов (608). Чтобы выполнять обходное декодирование дополнительных синтаксических элементов, видеодекодер 300, для коэффициента из второго набора коэффициентов, может извлекать значение для параметра Райса.[0194] Video decoder 300 determines values for the first set of transform unit coefficients based on the context decoded bins of the syntax elements (606). In response to reaching a threshold number of regular-coded bins for the second set of coefficients, video decoder 300 performs bypass decoding of additional syntax elements (608). To perform bypass decoding of additional syntax elements, video decoder 300, for a coefficient from the second coefficient set, may extract a value for the Rice parameter.

[0195] Видеодекодер 300 определяет значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов (610). Чтобы определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, видеодекодер 300 определяет значение для нулевого параметра на основе параметра Райса (612). Чтобы определять значение для нулевого параметра на основе параметра Райса, видеодекодер 300, например, может определять значение для нулевого параметра на основе параметра Райса и также на основе текущего состояния машины состояний. Как описано выше, значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль. Видеодекодер 300, например, может определять значение для параметра Райса из таблицы поиска или некоторым другим способом.[0195] Video decoder 300 determines values for the second set of transform unit coefficients based on additional syntax elements (610). To determine values for the second set of transform unit coefficients based on additional syntax elements, video decoder 300 determines a value for the null parameter based on the Rice parameter (612). To determine the value for the null parameter based on the Rice parameter, video decoder 300, for example, may determine the value for the null parameter based on the Rice parameter and also based on the current state of the state machine. As described above, the value for the null parameter identifies the encoded value that corresponds to the coefficient level zero. Video decoder 300, for example, may determine a value for the Rice parameter from a lookup table or in some other manner.

[0196] Чтобы определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, видеодекодер 300 также принимает первое кодированное значение для первого коэффициента из второго набора коэффициентов (614) и, на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определяет уровень для первого коэффициента (616). Уровень для первого коэффициента, например, может представлять собой оставшийся уровень или абсолютный уровень.[0196] To determine values for the second set of transform unit coefficients based on additional syntax elements, video decoder 300 also receives a first coded value for the first coefficient from the second coefficient set (614) and, based on the value for the null parameter and the first coded value for the first coefficient , determines the level for the first coefficient (616). The level for the first coefficient, for example, may be the remaining level or the absolute level.

[0197] В ответ на то, что значение для нулевого параметра равно первому кодированному значению, видеодекодер 300 может определять то, что уровень для первого коэффициента равен нулю. В ответ на то, что первое кодированное значение больше значения для нулевого параметра, видеодекодер 300 может определять то, что уровень для первого коэффициента равен первому кодированному значению. В других случаях, в ответ на то, что первое кодированное значение меньше значения для нулевого параметра, видеодекодер 300 может определять то, что уровень для первого коэффициента равен первому кодированному значению плюс единица.[0197] In response to the fact that the value for the zero parameter is equal to the first encoded value, video decoder 300 may determine that the level for the first coefficient is zero. In response to the first encoded value being greater than the value for parameter zero, video decoder 300 may determine that the level for the first coefficient is equal to the first encoded value. In other cases, in response to the first coded value being less than the value for parameter zero, video decoder 300 may determine that the level for the first coefficient is equal to the first coded value plus one.

[0198] Видеодекодер 300 также может определять декодированный блок преобразования на основе значений для первого набора коэффициентов и значений для второго набора коэффициентов; суммировать декодированный блок преобразования с блоком прогнозирования, чтобы определять восстановленный блок; выполнять одну или более операций фильтрации для восстановленного блока, чтобы определять декодированный блок видеоданных; и выводить декодированный кадр видеоданных, которые включают в себя декодированный блок видеоданных.[0198] Video decoder 300 may also determine a decoded transform block based on values for the first coefficient set and values for the second coefficient set; add the decoded transform block to the prediction block to determine a reconstructed block; perform one or more filtering operations on the reconstructed block to determine a decoded block of video data; and output a decoded frame of video data that includes the decoded block of video data.

[0199] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.[0199] It should be recognized that, depending on the example, certain steps or events of any of the technologies described herein may be performed in a different sequence, may be added, combined, or excluded altogether (for example, not all of the described steps or events are required for practical implementation of technologies). In addition, in certain examples, steps or events may be executed simultaneously, such as through multithreading, interrupt handling, or across multiple processors, rather than sequentially.

[0200] В одном или более примерах, описанные функции могут быть реализованы в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители данных, которые соответствуют материальному носителю, такие как носители данных, или среды связи, включающие в себя любой носитель, который упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0200] In one or more examples, the functions described may be implemented in hardware, software, firmware, or any combination of the foregoing. When implemented in software, the functions may be stored or transmitted, as one or more instructions or code, on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable storage media that corresponds to a tangible medium, such as storage media, or communication media, including any medium that facilitates transfer of a computer program from one place to another, such as according to a communication protocol. Thus, computer-readable media can generally correspond to (1) a tangible computer-readable storage medium that is non-volatile, or (2) a communication medium such as a signal or carrier. Storage media can be any available media that can be accessed by one or more computers or one or more processors in order to retrieve instructions, code, and/or data structures for implementing the technologies described in this disclosure. The computer program product may include a computer readable medium.

[0201] В качестве примера, а не ограничения, эти машиночитаемые носители данных могут включать в себя одно или более из RAM, ROM, EEPROM, CD-ROM или другого устройства хранения данных на оптических дисках, устройства хранения данных на магнитных дисках или других магнитных устройств хранения данных, флэш-памяти либо любого другого носителя, который может использоваться для того, чтобы хранить требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL), или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители данных и носители данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители данных. Диск при использовании в данном документе включает в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски обычно воспроизводят данные магнитным способом, и диски обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.[0201] By way of example, and not limitation, these computer-readable storage media may include one or more of RAM, ROM, EEPROM, CD-ROM, or other optical disk storage device, magnetic disk storage device, or other magnetic data storage devices, flash memory, or any other medium that can be used to store the required program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is properly referred to as a computer-readable medium. For example, if instructions are transmitted from a Web site, server, or other remote source using coaxial cable, fiber optic cable, twisted pair, digital subscriber line (DSL), or wireless technologies such as infrared, radio, and microwave media, then coaxial cable, fiber optic cable, twisted pair, DSL, or wireless technologies such as infrared, radio, and microwave media are included in the definition of media. However, it should be understood that computer-readable storage media and storage media do not include connections, carriers, signals, or other volatile media, but are instead directed to non-volatile tangible storage media. A disc as used herein includes a compact disc (CD), a laser disc, an optical disc, a digital versatile disc (DVD), a floppy disc, and a Blu-ray disc, wherein the discs typically reproduce data magnetically, and the discs typically reproduce data optically using lasers. Combinations of the above should also be included in computer readable media.

[0202] Инструкции могут выполняться посредством одного или более процессоров, к примеру, одного или более микропроцессоров общего назначения, ASIC, FPGA либо других эквивалентных интегрированных или дискретных логических схем. Соответственно, термин "процессор" при использовании в данном документе может означать любую вышеуказанную структуру или другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схемах или логических элементах.[0202] Instructions may be executed by one or more processors, such as one or more general purpose microprocessors, ASICs, FPGAs, or other equivalent integrated or discrete logic circuits. Accordingly, the term "processor" as used herein can mean any of the above structures, or another structure suitable for implementing the technologies described herein. In addition, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules capable of encoding or decoding or embedded in a combined codec. In addition, technologies may be fully implemented in one or more circuits or logic elements.

[0203] Технологии этого раскрытия могут реализовываться в широком спектре устройств или оборудования, в том числе в беспроводном переносном телефоне, в интегральной схеме (IC), или в наборе IC (к примеру, в наборе микросхем). Различные компоненты, модули или блоки описываются в этом раскрытии для того, чтобы подчеркивать функциональные аспекты устройств, выполненных с возможностью осуществлять раскрытые технологии, но необязательно требуют реализации посредством различных аппаратных модулей. Наоборот, как описано выше, различные модули могут комбинироваться в аппаратный модуль кодека или предоставляться посредством набора взаимодействующих аппаратных модулей, включающих в себя один или более процессоров, как описано выше, в сочетании с надлежащим программным обеспечением и/или микропрограммным обеспечением.[0203] The techniques of this disclosure may be implemented in a wide variety of devices or equipment, including a wireless handset, an integrated circuit (IC), or an IC stack (eg, a chipset). Various components, modules, or blocks are described in this disclosure in order to emphasize the functional aspects of devices capable of implementing the disclosed technologies, but do not necessarily require implementation by different hardware modules. Conversely, as described above, various modules may be combined into a codec hardware module or provided through a set of cooperating hardware modules including one or more processors as described above in combination with appropriate software and/or firmware.

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

Claims (90)

1. Способ декодирования видеоданных, содержащий этапы, на которых:1. A method for decoding video data, comprising the steps of: определяют пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования;determining a threshold number of regularly-encoded bins for the first decoding pass; для первого набора коэффициентов, выполняют контекстное декодирование элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, причем каждый из одного или более флагов значимости указывает то, равен ли абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является ли абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, больше ли абсолютный уровень для соответствующего коэффициента двух;for the first set of coefficients, perform context decoding of the syntax element bins of the coefficient group until a threshold number of regularly encoded bins is reached, wherein the context decoded bins of the syntax elements contain one or more significance flags, one or more flags a parity level and one or more first flags, each of the one or more significance flags indicating whether the absolute level for the corresponding coefficient is zero, each of the one or more parity level flags indicating whether the absolute level for the corresponding coefficient is even or odd , and each of the one or more first flags indicates whether the absolute level for the corresponding factor is greater than two; определяют значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов;determining values for a first set of transform unit coefficients based on the context-decoded bins of the syntax elements; в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, выполняют обходное декодирование дополнительных синтаксических элементов, при этом обходное декодирование дополнительных синтаксических элементов содержит, для коэффициента из второго набора коэффициентов, получение значения для параметра Райса; иin response to reaching a threshold number of regular-coded bins, for the second set of coefficients, bypass decoding the additional syntax elements, wherein the bypass decoding of the additional syntax elements comprises, for a coefficient from the second coefficient set, deriving a value for a Rice parameter; And определяют значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом определение значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов содержит этапы, на которых:determining values for a second set of transformation unit coefficients based on the additional syntax elements, wherein determining values for the second set of transformation unit coefficients based on the additional syntax elements comprises the steps of: определяют значение для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль;determining a value for the null parameter based on the Rice parameter, wherein the value for the null parameter identifies an encoded value that corresponds to a coefficient level of zero; принимают первое кодированное значение для первого коэффициента из второго набора коэффициентов; иreceiving a first coded value for a first coefficient from a second set of coefficients; And на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определяют уровень для первого коэффициента.based on the value for the null parameter and the first coded value for the first coefficient, a level for the first coefficient is determined. 2. Способ по п.1, в котором уровень для первого коэффициента содержит оставшийся уровень.2. The method of claim 1, wherein the level for the first coefficient comprises the remaining level. 3. Способ по п.1, в котором уровень для первого коэффициента содержит абсолютный уровень.3. The method of claim 1, wherein the level for the first coefficient comprises an absolute level. 4. Способ по п.1, в котором при упомянутом определении значения для нулевого параметра на основе параметра Райса значение для нулевого параметра определяют на основе параметра Райса и на основе текущего состояния машины состояний.4. The method of claim 1, wherein in said determining a value for the null parameter based on the Rice parameter, the value for the null parameter is determined based on the Rice parameter and based on the current state of the state machine. 5. Способ по п.1, дополнительно содержащий этап, на котором: в ответ на то, что значение для нулевого параметра равно первому кодированному значению, определяют, что уровень для первого коэффициента равен нулю.5. The method of claim 1, further comprising: in response to the fact that the value for the null parameter is equal to the first encoded value, determining that the level for the first coefficient is equal to zero. 6. Способ по п.1, дополнительно содержащий этап, на котором: в ответ на то, что первое кодированное значение больше значения для нулевого параметра, определяют, что уровень для первого коэффициента равен первому кодированному значению.6. The method of claim 1, further comprising: in response to the first encoded value being greater than the value for the null parameter, determining that the level for the first coefficient is equal to the first encoded value. 7. Способ по п.1, дополнительно содержащий этап, на котором: в ответ на то, что первое кодированное значение меньше значения для нулевого параметра, определяют, что уровень для первого коэффициента равен первому кодированному значению плюс единица.7. The method of claim 1, further comprising: in response to the first coded value being less than the value for the null parameter, determining that the level for the first coefficient is equal to the first coded value plus one. 8. Способ по п.1, дополнительно содержащий этап, на котором определяют значение для параметра Райса из таблицы поиска.8. The method of claim 1, further comprising determining a value for the Rice parameter from the lookup table. 9. Способ по п.1, в котором контекстное декодирование синтаксических элементов группы коэффициентов содержит выполнение контекстно-адаптивного двоичного арифметического декодирования, чтобы декодировать синтаксические элементы группы коэффициентов.9. The method of claim 1, wherein the context decoding of the coefficient group syntax elements comprises performing context-adaptive binary arithmetic decoding to decode the coefficient group syntax elements. 10. Способ по п.1, в котором контекстное декодирование синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, содержит этапы, на которых:10. The method of claim 1, wherein in-context decoding the coefficient group syntax elements until a threshold number of regular-coded bins is reached comprises: определяют, что пороговое число регулярно-кодированных элементов разрешения достигнуто при кодировании синтаксического элемента для коэффициента из первого набора коэффициентов;determining that a threshold number of regular-encoded bins has been reached when encoding a syntax element for a coefficient from the first coefficient set; выполняют контекстное декодирование одного или более оставшихся синтаксических элементов для коэффициента из первого набора коэффициентов.performing context decoding of one or more remaining syntax elements for the coefficient from the first coefficient set. 11. Способ по п.1, дополнительно содержащий этапы, на которых:11. The method of claim 1, further comprising the steps of: определяют декодированный блок преобразования на основе значений для первого набора коэффициентов и значений для второго набора коэффициентов;determining a decoded transform block based on values for the first set of coefficients and values for the second set of coefficients; суммируют декодированный блок преобразования с блоком прогнозирования, чтобы определить восстановленный блок;adding the decoded transform block to the prediction block to determine the reconstructed block; выполняют одну или более операций фильтрации в отношении восстановленного блока, чтобы определить декодированный блок видеоданных; иperforming one or more filtering operations on the reconstructed block to determine a decoded block of video data; And выводят декодированный кадр видеоданных, которые включают в себя декодированный блок видеоданных.outputting a decoded frame of video data that includes the decoded block of video data. 12. Устройство для декодирования видеоданных, содержащее:12. A device for decoding video data, comprising: запоминающее устройство, приспособленное для хранения видеоданных; иa storage device adapted to store video data; And один или более процессоров, реализованных в схемах и выполненных с возможностью:one or more processors implemented in circuitry and configured to: - определять пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования;- determine the threshold number of regularly-encoded bins for the first decoding pass; - для первого набора коэффициентов, выполнять контекстное декодирование элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, причем каждый из одного или более флагов значимости указывает то, равен ли абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является ли абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, больше ли абсолютный уровень для соответствующего коэффициента двух;- for the first set of coefficients, perform context decoding of the syntax element bins of the coefficient group until a threshold number of regular-coded bins is reached, wherein the context-decoded bins of the syntax elements contain one or more significance flags, one or more parity level flags and one or more first flags, where each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero, each of the one or more parity level flags indicates whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether the absolute level for the corresponding factor is greater than two; - определять значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов;- to determine the values for the first set of coefficients of the transformation unit based on the context-decoded resolution elements of the syntax elements; - в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, выполнять обходное декодирование дополнительных синтаксических элементов, при этом для выполнения обходного декодирования дополнительных синтаксических элементов один или более процессоров выполнены с возможностью получать, для коэффициента из второго набора коэффициентов, значение для параметра Райса; и- in response to reaching the threshold number of regularly-coded bins, for the second set of coefficients, perform bypass decoding of additional syntax elements, while to perform bypass decoding of additional syntax elements, one or more processors are configured to receive, for a coefficient from the second set of coefficients, value for the Rice parameter; And - определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов один или более процессоров выполнены с возможностью:- to determine values for the second set of transformation unit coefficients based on additional syntax elements, wherein in order to determine values for the second set of transformation unit coefficients based on additional syntax elements, one or more processors are configured to: определять значение для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль;determine a value for the null parameter based on the Rice parameter, wherein the value for the null parameter identifies an encoded value that corresponds to a coefficient level of zero; принимать первое кодированное значение для первого коэффициента из второго набора коэффициентов;receive a first encoded value for a first coefficient from the second coefficient set; на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определять уровень для первого коэффициента.based on the value for the null parameter and the first coded value for the first coefficient, determine the level for the first coefficient. 13. Устройство по п.12, при этом уровень для первого коэффициента содержит оставшийся уровень.13. The apparatus of claim 12, wherein the level for the first coefficient contains the remaining level. 14. Устройство по п.12, при этом уровень для первого коэффициента содержит абсолютный уровень.14. The apparatus of claim 12, wherein the level for the first coefficient contains the absolute level. 15. Устройство по п.12, в котором для определения значения для нулевого параметра на основе параметра Райса один или более процессоров выполнены с возможностью определять значение для нулевого параметра на основе параметра Райса и на основе текущего состояния машины состояний.15. The apparatus of claim 12, wherein in order to determine a value for the null parameter based on the Rice parameter, one or more processors are configured to determine a value for the null parameter based on the Rice parameter and based on the current state of the state machine. 16. Устройство по п.12, в котором один или более процессоров дополнительно выполнены с возможностью: в ответ на то, что значение для нулевого параметра равно первому кодированному значению, определять, что уровень для первого коэффициента равен нулю.16. The apparatus of claim 12, wherein the one or more processors are further configured to: in response to a value for the null parameter being equal to the first encoded value, determine that the level for the first coefficient is equal to zero. 17. Устройство по п.12, в котором один или более процессоров дополнительно выполнены с возможностью: в ответ на то, что первое кодированное значение больше значения для нулевого параметра, определять, что уровень для первого коэффициента равен первому кодированному значению.17. The apparatus of claim 12, wherein the one or more processors are further configured to: in response to the first coded value being greater than the value for the null parameter, determine that the level for the first coefficient is equal to the first coded value. 18. Устройство по п.12, в котором один или более процессоров дополнительно выполнены с возможностью: в ответ на то, что первое кодированное значение меньше значения для нулевого параметра, определять, что уровень для первого коэффициента равен первому кодированному значению плюс единица.18. The apparatus of claim 12, wherein the one or more processors are further configured to: in response to the first coded value being less than the value for the zero parameter, determine that the level for the first coefficient is equal to the first coded value plus one. 19. Устройство по п.12, в котором один или более процессоров дополнительно выполнены с возможностью определять значение для параметра Райса из таблицы поиска.19. The apparatus of claim 12, wherein the one or more processors are further configured to determine a value for the Rice parameter from a lookup table. 20. Устройство по п.12, в котором для контекстного декодирования синтаксических элементов группы коэффициентов один или более процессоров выполнены с возможностью выполнять контекстно-адаптивное двоичное арифметическое декодирование, чтобы декодировать синтаксические элементы группы коэффициентов.20. The apparatus of claim 12, wherein in order to context-decode the coefficient group syntax elements, one or more processors are configured to perform context-adaptive binary arithmetic decoding to decode the coefficient group syntax elements. 21. Устройство по п.12, в котором для контекстного декодирования синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, один или более процессоров выполнены с возможностью:21. The apparatus of claim 12, wherein, in order to contextually decode the syntax elements of the coefficient group until a threshold number of regular-coded bins is reached, the one or more processors are configured to: определять, что пороговое число регулярно-кодированных элементов разрешения достигнуто при кодировании синтаксического элемента для коэффициента из первого набора коэффициентов;determine that a threshold number of regular-encoded bins has been reached when encoding a syntax element for a coefficient of the first coefficient set; выполнять контекстное декодирование одного или более оставшихся синтаксических элементов для коэффициента из первого набора коэффициентов.perform context decoding of one or more remaining syntax elements for the coefficient from the first coefficient set. 22. Устройство по п.12, в котором один или более процессоров дополнительно выполнены с возможностью:22. The apparatus of claim 12, wherein the one or more processors are further configured to: определять декодированный блок преобразования на основе значений для первого набора коэффициентов и значений для второго набора коэффициентов;determine a decoded transform block based on values for the first set of coefficients and values for the second set of coefficients; суммировать декодированный блок преобразования с блоком прогнозирования, чтобы определить восстановленный блок;sum the decoded transform block with the prediction block to determine the reconstructed block; выполнять одну или более операций фильтрации в отношении восстановленного блока, чтобы определить декодированный блок видеоданных; иperform one or more filtering operations on the reconstructed block to determine a decoded block of video data; And выводить декодированный кадр видеоданных, которые включают в себя декодированный блок видеоданных.output a decoded frame of video data that includes the decoded block of video data. 23. Устройство по п.12, при этом устройство содержит устройство беспроводной связи, дополнительно содержащее приемник, выполненный с возможностью принимать кодированные видеоданные.23. The apparatus of claim 12, wherein the apparatus comprises a wireless communications apparatus further comprising a receiver configured to receive encoded video data. 24. Устройство по п.23, при этом устройство беспроводной связи содержит телефонную трубку, причем приемник выполнен с возможностью демодулировать, согласно стандарту беспроводной связи, сигнал, содержащий кодированные видеоданные.24. The apparatus of claim 23, wherein the wireless communications apparatus comprises a handset, wherein the receiver is configured to demodulate, according to a wireless communications standard, a signal comprising encoded video data. 25. Устройство по п.12, дополнительно содержащее дисплей, выполненный с возможностью отображать декодированные видеоданные.25. The apparatus of claim 12, further comprising a display configured to display the decoded video data. 26. Устройство по п.12, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства и абонентской приставки.26. The apparatus of claim 12, wherein the apparatus comprises one or more of a camera, a computer, a mobile device, a broadcast receiver, and a set-top box. 27. Машиночитаемый носитель данных, хранящий инструкции, которые при их исполнении одним или более процессорами предписывают одному или более процессорам:27. A computer-readable storage medium that stores instructions that, when executed by one or more processors, cause one or more processors to: определять пороговое число регулярно-кодированных элементов разрешения для первого прохода декодирования;determine a threshold number of regularly-encoded bins for the first decoding pass; для первого набора коэффициентов, выполнять контекстное декодирование элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, причем каждый из одного или более флагов значимости указывает то, равен ли абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является ли абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, больше ли абсолютный уровень для соответствующего коэффициента двух;for the first set of coefficients, perform context decoding of the syntax element bins of the coefficient group until a threshold number of regular-coded bins is reached, wherein the context-decoded bins of the syntax elements contain one or more significance flags, one or more flags a parity level and one or more first flags, each of the one or more significance flags indicating whether the absolute level for the corresponding coefficient is zero, each of the one or more parity level flags indicating whether the absolute level for the corresponding coefficient is even or odd , and each of the one or more first flags indicates whether the absolute level for the corresponding factor is greater than two; определять значения для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов;determine values for the first set of transformation unit coefficients based on the context-decoded bins of the syntax elements; в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, для второго набора коэффициентов, выполнять обходное декодирование дополнительных синтаксических элементов, при этом для выполнения обходного декодирования дополнительных синтаксических элементов инструкции предписывают одному или более процессорам получать, для коэффициента из второго набора коэффициентов, значение для параметра Райса; иin response to reaching a threshold number of regularly-encoded bins, for the second coefficient set, bypass decoding the additional syntax elements, wherein, to perform the bypass decoding of the additional syntax elements, the instructions cause one or more processors to obtain, for a coefficient from the second coefficient set, a value for Rice parameter; And определять значения для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов инструкции предписывают одному или более процессорам:determine values for the second set of transformation unit coefficients based on the additional syntax elements, wherein to determine values for the second set of transformation unit coefficients based on the additional syntax elements, the instructions cause one or more processors to: определять значение для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль;determine a value for the null parameter based on the Rice parameter, wherein the value for the null parameter identifies an encoded value that corresponds to a coefficient level of zero; принимать первое кодированное значение для первого коэффициента из второго набора коэффициентов;receive a first encoded value for a first coefficient from the second coefficient set; на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента, определять уровень для первого коэффициента.based on the value for the null parameter and the first coded value for the first coefficient, determine the level for the first coefficient. 28. Машиночитаемый носитель данных по п.27, при этом уровень для первого коэффициента содержит оставшийся уровень.28. The computer-readable storage medium of claim 27, wherein the level for the first coefficient contains the remaining level. 29. Машиночитаемый носитель данных по п.27, при этом уровень для первого коэффициента содержит абсолютный уровень.29. The computer-readable storage medium of claim 27, wherein the level for the first coefficient contains the absolute level. 30. Машиночитаемый носитель данных по п.27, в котором для определения значения для нулевого параметра на основе параметра Райса инструкции предписывают одному или более процессорам определять значение для нулевого параметра на основе параметра Райса и на основе текущего состояния машины состояний.30. The computer-readable storage medium of claim 27, wherein in order to determine a value for the null parameter based on the Rice parameter, the instructions cause one or more processors to determine a value for the null parameter based on the Rice parameter and based on the current state of the state machine. 31. Машиночитаемый носитель данных по п.27, в котором инструкции дополнительно предписывают одному или более процессорам: в ответ на то, что значение для нулевого параметра равно первому кодированному значению, определять, что уровень для первого коэффициента равен нулю.31. The computer-readable storage medium of claim 27, wherein the instructions further cause one or more processors: in response to a value for the null parameter being equal to the first encoded value, to determine that the level for the first coefficient is zero. 32. Машиночитаемый носитель данных по п.27, в котором инструкции дополнительно предписывают одному или более процессорам: в ответ на то, что первое кодированное значение больше значения для нулевого параметра, определять, что уровень для первого коэффициента равен первому кодированному значению.32. The computer-readable storage medium of claim 27, wherein the instructions further cause one or more processors: in response to the first encoded value being greater than the value for parameter zero, to determine that the level for the first coefficient is equal to the first encoded value. 33. Машиночитаемый носитель данных по п.27, в котором инструкции дополнительно предписывают одному или более процессорам: в ответ на то, что первое кодированное значение меньше значения для нулевого параметра, определять, что уровень для первого коэффициента равен первому кодированному значению плюс единица.33. The computer-readable storage medium of claim 27, wherein the instructions further cause one or more processors to: in response to the first coded value being less than the value for parameter zero, determine that the level for the first coefficient is equal to the first coded value plus one. 34. Машиночитаемый носитель данных по п.27, в котором инструкции дополнительно предписывают одному или более процессорам определять значение для параметра Райса из таблицы поиска.34. The computer-readable storage medium of claim 27, wherein the instructions further cause one or more processors to determine a value for the Rice parameter from a lookup table. 35. Машиночитаемый носитель данных по п.27, в котором для контекстного декодирования синтаксических элементов группы коэффициентов инструкции предписывают одному или более процессорам выполнять контекстно-адаптивное двоичное арифметическое декодирование, чтобы декодировать синтаксические элементы группы коэффициентов.35. The computer-readable storage medium of claim 27, wherein in order to context-decode the coefficient group syntax elements, the instructions cause one or more processors to perform context-adaptive binary arithmetic decoding to decode the coefficient group syntax elements. 36. Машиночитаемый носитель данных по п.27, в котором для контекстного декодирования синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, инструкции предписывают одному или более процессорам:36. The machine-readable storage medium of claim 27, wherein, in order to contextually decode the coefficient group syntax elements until a threshold number of regular-coded bins is reached, the instructions cause one or more processors to: определять, что пороговое число регулярно-кодированных элементов разрешения достигнуто при кодировании синтаксического элемента для коэффициента из первого набора коэффициентов;determine that a threshold number of regular-encoded bins has been reached when encoding a syntax element for a coefficient of the first coefficient set; выполнять контекстное декодирование одного или более оставшихся синтаксических элементов для коэффициента из первого набора коэффициентов.perform context decoding of one or more remaining syntax elements for the coefficient from the first coefficient set. 37. Машиночитаемый носитель данных по п.27, в котором инструкции дополнительно предписывают одному или более процессорам:37. The computer-readable storage medium of claim 27, wherein the instructions further cause the one or more processors to: определять декодированный блок преобразования на основе значений для первого набора коэффициентов и значений для второго набора коэффициентов;determine a decoded transform block based on values for the first set of coefficients and values for the second set of coefficients; суммировать декодированный блок преобразования с блоком прогнозирования, чтобы определить восстановленный блок;sum the decoded transform block with the prediction block to determine the reconstructed block; выполнять одну или более операций фильтрации в отношении восстановленного блока, чтобы определить декодированный блок видеоданных; иperform one or more filtering operations on the reconstructed block to determine a decoded block of video data; And выводить декодированный кадр видеоданных, которые включают в себя декодированный блок видеоданных.output a decoded frame of video data that includes the decoded block of video data. 38. Устройство для декодирования видеоданных, содержащее:38. A device for decoding video data, comprising: средство для определения порогового числа регулярно-кодированных элементов разрешения для первого прохода декодирования;means for determining a threshold number of regularly-encoded bins for the first decoding pass; средство для контекстного декодирования, для первого набора коэффициентов, элементов разрешения синтаксических элементов группы коэффициентов до тех пор, пока не будет достигнуто пороговое число регулярно-кодированных элементов разрешения, при этом контекстно-декодированные элементы разрешения синтаксических элементов содержат один или более флагов значимости, один или более флагов уровня четности и один или более первых флагов, при этом каждый из одного или более флагов значимости указывает то, равен ли абсолютный уровень для соответствующего коэффициента нулю, каждый из одного или более флагов уровня четности указывает то, является ли абсолютный уровень для соответствующего коэффициента четным или нечетным, и каждый из одного или более первых флагов указывает то, больше ли абсолютный уровень для соответствующего коэффициента двух;means for context decoding, for the first set of coefficients, the syntax element bins of the coefficient group until a threshold number of regular-coded bins is reached, wherein the context-decoded bins of the syntax elements contain one or more significance flags, one or more parity flags and one or more first flags, wherein each of the one or more significance flags indicates whether the absolute level for the corresponding coefficient is zero, each of the one or more parity flags indicates whether the absolute level for the corresponding coefficient is even or odd, and each of the one or more first flags indicates whether the absolute level for the corresponding factor is greater than two; средство для определения значений для первого набора коэффициентов единицы преобразования на основе контекстно-декодированных элементов разрешения синтаксических элементов;means for determining values for the first set of transformation unit coefficients based on the context decoded bins of the syntax elements; средство для обходного декодирования дополнительных синтаксических элементов, для второго набора коэффициентов, в ответ на достижение порогового числа регулярно-кодированных элементов разрешения, при этом средство для обходного декодирования дополнительных синтаксических элементов содержит средство для получения, для коэффициента из второго набора коэффициентов, значения для параметра Райса; иmeans for bypassing decoding additional syntax elements, for the second set of coefficients, in response to reaching a threshold number of regularly-coded bins, wherein the means for bypassing decoding additional syntax elements comprises means for obtaining, for a coefficient from the second coefficient set, a value for the Rice parameter ; And средство для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов, при этом средство для определения значений для второго набора коэффициентов единицы преобразования на основе дополнительных синтаксических элементов содержит:means for determining values for the second set of transformation unit coefficients based on the additional syntax elements, wherein the means for determining values for the second set of transformation unit coefficients based on the additional syntax elements comprises: средство для определения значения для нулевого параметра на основе параметра Райса, при этом значение для нулевого параметра идентифицирует кодированное значение, которое соответствует уровню коэффициентов нуль;means for determining a value for the null parameter based on the Rice parameter, wherein the value for the null parameter identifies an encoded value that corresponds to a coefficient level of zero; средство для приема первого кодированного значения для первого коэффициента из второго набора коэффициентов; иmeans for receiving a first encoded value for a first coefficient from a second set of coefficients; And средство для определения уровня для первого коэффициента на основе значения для нулевого параметра и первого кодированного значения для первого коэффициента.means for determining a level for the first coefficient based on a value for the null parameter and a first encoded value for the first coefficient.
RU2021115788A 2018-12-06 2019-12-06 Reduction of the number of regularly-coded resolution elements for decoding coefficients using threshold value and rice parameter RU2793272C2 (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US62/776,379 2018-12-06
US62/787,681 2019-01-02
US16/704,995 2019-12-05

Publications (2)

Publication Number Publication Date
RU2021115788A RU2021115788A (en) 2023-01-09
RU2793272C2 true RU2793272C2 (en) 2023-03-30

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9106913B2 (en) * 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
WO2016003819A1 (en) * 2014-06-30 2016-01-07 Qualcomm Incorporated Method for motion vector difference (mvd) coding of screen content video data
US9386307B2 (en) * 2012-06-14 2016-07-05 Qualcomm Incorporated Grouping of bypass-coded bins for SAO syntax elements
US9503717B2 (en) * 2012-01-09 2016-11-22 Texas Instruments Incorporated Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency
US20170339413A1 (en) * 2014-11-04 2017-11-23 Samsung Electronics Co., Ltd. Probability update method for binary arithmetic coding/decoding, and entropy coder/decoder using the same
RU2641235C2 (en) * 2012-01-20 2018-01-16 ДжиИ Видео Компрешн, ЭлЭлСи Coding of transformation coefficients

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9106913B2 (en) * 2011-03-08 2015-08-11 Qualcomm Incorporated Coding of transform coefficients for video coding
US9503717B2 (en) * 2012-01-09 2016-11-22 Texas Instruments Incorporated Context adaptive binary arithmetic coding (CABAC) with scalable throughput and coding efficiency
RU2641235C2 (en) * 2012-01-20 2018-01-16 ДжиИ Видео Компрешн, ЭлЭлСи Coding of transformation coefficients
US9386307B2 (en) * 2012-06-14 2016-07-05 Qualcomm Incorporated Grouping of bypass-coded bins for SAO syntax elements
WO2016003819A1 (en) * 2014-06-30 2016-01-07 Qualcomm Incorporated Method for motion vector difference (mvd) coding of screen content video data
US20170339413A1 (en) * 2014-11-04 2017-11-23 Samsung Electronics Co., Ltd. Probability update method for binary arithmetic coding/decoding, and entropy coder/decoder using the same

Similar Documents

Publication Publication Date Title
US11336918B2 (en) Regular coded bin reduction for coefficient coding
US11202100B2 (en) Coefficient coding for transform skip mode
US10904548B2 (en) Coefficient processing for video encoding and decoding
US11134273B2 (en) Regular coded bin reduction for coefficient coding
US11785259B2 (en) Escape coding for coefficient levels
US11632540B2 (en) Reference picture scaling ratios for reference picture resampling in video coding
US11470334B2 (en) Rice parameter derivation for lossless/lossy coding modes for video coding
US20210203934A1 (en) Residual coding to support both lossy and lossless coding
CN116508321A (en) Joint component neural network-based filtering during video coding
US11924471B2 (en) Context-based transform index signaling in video coding
RU2793272C2 (en) Reduction of the number of regularly-coded resolution elements for decoding coefficients using threshold value and rice parameter
RU2813008C2 (en) Coding coefficients for skip conversion mode