RU2809181C2 - Tree-based transformation unit (tu) segmentation for video encoding - Google Patents

Tree-based transformation unit (tu) segmentation for video encoding Download PDF

Info

Publication number
RU2809181C2
RU2809181C2 RU2021117197A RU2021117197A RU2809181C2 RU 2809181 C2 RU2809181 C2 RU 2809181C2 RU 2021117197 A RU2021117197 A RU 2021117197A RU 2021117197 A RU2021117197 A RU 2021117197A RU 2809181 C2 RU2809181 C2 RU 2809181C2
Authority
RU
Russia
Prior art keywords
residual
block
segmentation
tree
residual block
Prior art date
Application number
RU2021117197A
Other languages
Russian (ru)
Other versions
RU2021117197A (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 RU2021117197A publication Critical patent/RU2021117197A/en
Application granted granted Critical
Publication of RU2809181C2 publication Critical patent/RU2809181C2/en

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: residual block for the current video data block is logically output according to the type of segmentation tree into a plurality of residual subblocks. Based on the determined segmentation of the residual block into a plurality of residual subblocks, transform kernel transformation types for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction are determined. A stream of bits is encoded as a coded representation of video data that carries in signaling signals information indicating whether or not a residual block is segmented, and further signaling in signaling signals information indicating the type of segmentation tree for the residual block that is segmented, wherein information indicating the type of the segmentation tree is associated only with the residual block.
EFFECT: increased efficiency of video encoding.
38 cl, 17 dwg

Description

[0001] Данная заявка притязает на приоритет заявки (США) № 16/715274, поданной 16 декабря 2019 года, и предварительной заявки на патент (США) № 62/782292, поданной 19 декабря 2018 года, каждая из которых полностью содержится в данном документе по ссылке.[0001] This application claims the benefit of U.S. Application No. 16/715274, filed Dec. 16, 2019, and U.S. Provisional Patent Application No. 62/782292, filed Dec. 19, 2018, each of which is contained herein in its entirety link.

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

[0002] Данное раскрытие сущности относится к кодированию видео и декодированию видео.[0002] This disclosure relates to video encoding 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), ITU-T H.265/стандарта высокоэффективного кодирования видео (HEVC), и расширений таких стандартов. Видеоустройства могут передавать, принимать, кодировать, декодировать и/или сохранять цифровую видеоинформацию более эффективно посредством реализации таких технологий кодирования видео.[0003] Digital video support may be included in a wide range of devices, including digital television receivers, digital direct broadcast systems, wireless broadcast systems, personal digital devices (PDAs), laptop or desktop computers, tablet computers, e-readers books, digital cameras, digital recorders, digital media players, video game devices, video game consoles, cellular or satellite radio telephones, so-called "smart phones", video conferencing devices, video streaming devices, etc. Digital video devices implement video encoding technologies such as video encoding technologies described in standards defined by MPEG-2, MPEG-4, ITU-T H.263, ITU-T H.264/MPEG-4 Part 10, Enhanced video coding (AVC), ITU-T H.265/High Efficiency Video Coding (HEVC) standard, and extensions to such standards. Video devices can transmit, receive, encode, decode and/or store digital video information more efficiently by implementing such video encoding technologies.

[0004] Технологии кодирования видео включают в себя пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое) прогнозирование для того, чтобы уменьшать или удалять избыточность, внутренне присущую в видеопоследовательностях. Для кодирования видео на основе блоков, видеосрез (например, видеокадр или часть видеокадра) может сегментироваться на видеоблоки, которые также могут называться "единицами дерева кодирования (CTU)", "единицами кодирования (CU)" и/или "узлами кодирования". Видеоблоки во внутреннем (I-) срезе кадра кодируются с использованием пространственного прогнозирования относительно опорных выборок в соседних блоках в идентичном кадре. Видеоблоки во взаимно кодированном (P- или B-) срезе кадра могут использовать пространственное прогнозирование относительно опорных выборок в соседних блоках в идентичном кадре или временное прогнозирование относительно опорных выборок в других опорных кадрах. Кадры могут называться "кадрами", и опорные кадры могут называться "опорными кинокадрами".[0004] Video coding techniques include spatial (intra-frame) prediction and/or temporal (inter-frame) prediction to reduce or remove redundancy inherent in video sequences. For block-based video encoding, 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 (CTUs)", "coding units (CUs)" and/or "encoding nodes". Video blocks in an inner (I-) slice of a frame are encoded using spatial prediction relative to reference samples in adjacent blocks in an identical frame. Video blocks in a mutually coded (P- or B-) slice of a frame may use spatial prediction relative to reference samples in adjacent blocks in an identical frame or temporal prediction relative to reference samples in other reference frames. The frames may be referred to as "frames" and the reference frames may be referred to as "cine reference frames".

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

[0005] В общем, это раскрытие сущности описывает технологии, связанные с кодированием с преобразованием, которое представляет собой элемент современных стандартов сжатия видео. Примерные технологии могут предоставлять более гибкую сегментацию остаточных блоков, таких как единицы преобразования (TU), и могут улучшать усиления при кодировании.[0005] In general, this disclosure describes technologies associated with transform coding, which is an element of modern video compression standards. Exemplary technologies may provide more flexible segmentation of residual blocks, such as transform units (TUs), and may improve encoding gains.

[0006] В одном примере, способ декодирования видеоданных включает в себя прием, в потоке битов, который содержит кодированное представление видеоданных, информации, указывающей то, сегментируется или нет остаточный блок, и информации, указывающей тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования. Способ дополнительно включает в себя определение, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множества остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации. Способ дополнительно включает в себя формирование остаточных данных для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков. Способ дополнительно включает в себя декодирование текущего блока с использованием остаточных данных.[0006] In one example, a method for decoding video data includes receiving, in a bit stream that contains an encoded representation of the video data, information indicating whether or not a residual block is segmented, and information indicating a type of segmentation tree for the residual block, based on the segmentation a residual block, wherein the residual block indicates the difference between the current block and the prediction block. The method further includes determining, based on the received information that a residual block is segmented and a segmentation tree type for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the segmentation tree type. The method further includes generating residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks. The method further includes decoding the current block using the residual data.

[0007] В другом примере, устройство для декодирования видеоданных включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные. Устройство дополнительно включает в себя процессор, реализованный в схеме и выполненный с возможностью: принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования; определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множество остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации; формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков; и декодировать текущий блок с использованием остаточных данных.[0007] In another example, an apparatus for decoding video data includes a storage device configured to store video data. The apparatus further includes a processor implemented in the circuit and configured to: receive, in a bit stream that contains an encoded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, at a residual block segmentation basis, wherein the residual block indicates a difference between the current block and the prediction block; determine, based on the received information that the residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the type of segmentation tree; generating residual data for the current block at least in part based on segmenting the residual block according to the type of segmentation tree into a plurality of residual subblocks; and decode the current block using the residual data.

[0008] В другом примере, машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору: принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования; определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множество остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации; формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков; и декодировать текущий блок с использованием остаточных данных.[0008] In another example, a computer-readable storage medium having stored instructions that, when executed, instruct a processor to: receive, in a bit stream that contains an encoded representation of video data, information indicating whether or not a residual block is segmented, and information indicating the type a segmentation tree for the residual block, based on the segmentation of the residual block, wherein the residual block indicates the difference between the current block and the prediction block; determine, based on the received information that the residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the type of segmentation tree; generating residual data for the current block at least in part based on segmenting the residual block according to the type of segmentation tree into a plurality of residual subblocks; and decode the current block using the residual data.

[0009] В другом примере, устройство для декодирования видеоданных включает в себя средство для приема в потоке битов, который содержит кодированное представление видеоданных, информации, указывающей то, сегментируется или нет остаточный блок, и информации, указывающей тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования. Устройство дополнительно включает в себя средство для определения, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множества остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации. Устройство дополнительно включает в себя средство для формирования остаточных данных для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков. Устройство дополнительно включает в себя средство для декодирования текущего блока с использованием остаточных данных.[0009] In another example, an apparatus for decoding video data includes means for receiving, in a bit stream that contains an encoded representation of the video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, at based on residual block segmentation, wherein the residual block indicates the difference between the current block and the prediction block. The apparatus further includes means for determining, based on the received information that the residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the segmentation tree type. The apparatus further includes means for generating residual data for the current block at least in part based on segmenting the residual block according to a type of segmentation tree into a plurality of residual subblocks. The apparatus further includes means for decoding the current block using the residual data.

[0010] В другом примере, способ кодирования видеоданных включает в себя определение того, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков. Способ дополнительно включает в себя кодирование потока битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется.[0010] In another example, a method for encoding video data includes determining that a residual block for a current block of video data is segmented according to a segmentation tree type into a plurality of residual subblocks. The method further includes encoding a stream of bits as a coded representation of video data that signals information indicating whether or not a residual block is segmented, and further signals information indicating the type of segmentation tree for the residual block that is segmented.

[0011] В другом примере, устройство для кодирования видеоданных включает в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные. Устройство дополнительно включает в себя процессор, реализованный в схеме и выполненный с возможностью: определять то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков; и кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется.[0011] In another example, an apparatus for encoding video data includes a storage device configured to store video data. The apparatus further includes a processor implemented in the circuit and configured to: determine that a residual block for a current video data block is segmented according to a segmentation tree type into a plurality of residual subblocks; and encode a stream of bits as a coded representation of video data that signals information indicating whether or not the residual block is segmented, and further signals information indicating the type of segmentation tree for the residual block that is segmented.

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

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

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

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

[0015] Фиг. 3A и 3B являются концептуальными схемами, иллюстрирующими примерную схему преобразования на основе остаточного дерева квадрантов HEVC.[0015] FIG. 3A and 3B are conceptual diagrams illustrating an exemplary HEVC residual quadtree conversion scheme.

[0016] Фиг. 4 является блок-схемой, иллюстрирующей примерную систему для гибридного кодирования видео с адаптивным выбором преобразования.[0016] FIG. 4 is a block diagram illustrating an exemplary system for hybrid video encoding with adaptive transform selection.

[0017] Фиг. 5A и 5B являются концептуальными схемами, иллюстрирующими горизонтальные и вертикальные преобразования в качестве раздельной реализации преобразований.[0017] FIG. 5A and 5B are conceptual diagrams illustrating horizontal and vertical transformations as separate implementations of transformations.

[0018] Фиг. 6 является концептуальной схемой, иллюстрирующей передачу служебных сигналов преобразования.[0018] FIG. 6 is a conceptual diagram illustrating transmission of conversion signaling.

[0019] Фиг. 7 является концептуальной схемой, иллюстрирующей соответствующую сегментацию на основе дерева для блока.[0019] FIG. 7 is a conceptual diagram illustrating a corresponding tree-based segmentation for a block.

[0020] Фиг. 8 является концептуальной схемой, иллюстрирующей примеры сегментации на основе дерева квадрантов, сегментации на основе двоичного дерева и сегментации на основе троичного дерева.[0020] FIG. 8 is a conceptual diagram illustrating examples of quadtree segmentation, binary tree segmentation, and ternary tree segmentation.

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

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

[0023] Фиг. 11 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока. Фиг. 12 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока видеоданных.[0023] FIG. 11 is a flowchart illustrating an exemplary method for encoding a current block. Fig. 12 is a flowchart illustrating an exemplary method for decoding a current block of video data.

[0024] Фиг. 13 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока данных, имеющих остаточный блок, который сегментируется согласно типу дерева сегментации.[0024] FIG. 13 is a flowchart illustrating an exemplary method for decoding a current block of data having a residual block that is segmented according to a segmentation tree type.

[0025] Фиг. 14 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока данных, имеющих остаточный блок, который сегментируется согласно типу дерева сегментации.[0025] FIG. 14 is a flowchart illustrating an exemplary method for encoding a current block of data having a residual block that is segmented according to a segmentation tree type.

Подробное описание изобретенияDetailed Description of the Invention

[0026] Данное раскрытие сущности относится к кодированию с преобразованием. При кодировании с преобразованием для видеокодера, имеется блок остаточных данных (например, остаток между кодируемым текущим блоком и блоком прогнозирования). Остаточные данные преобразуются из пространственной области в частотную область что приводит к блоку коэффициентов преобразования из коэффициентов преобразования. Видеодекодер принимает блок коэффициентов преобразования (или возможно блок коэффициентов преобразования после квантования) и выполняет обратное квантование (при необходимости) и обратное преобразование, чтобы восстанавливать остаточные данные обратно в пространственную область значений.[0026] This disclosure relates to transform coding. In transform coding for a video encoder, there is a block of residual data (eg, a residual between the current block being coded and the prediction block). The residual data is converted from the spatial domain to the frequency domain, resulting in a block of transform coefficients of transform coefficients. The video decoder takes a block of transform coefficients (or possibly a block of transform coefficients after quantization) and performs inverse quantization (if necessary) and inversion to restore the residual data back to the spatial domain.

[0027] Единица преобразования (TU) включает в себя блок преобразования выборок сигнала яркости и блоки преобразования соответствующих выборок сигнала цветности. Блок преобразования может представлять собой прямоугольный блок MxN выборок, получающийся в результате преобразования в процессе декодирования, и преобразование может составлять часть процесса декодирования, посредством которого блок коэффициентов преобразования преобразуется в блок значений пространственной области. Соответственно, остаточный блок может представлять собой пример TU. Остаточный блок может остаточные данные, преобразованные из выборочной области в частотную область, и включает в себя множество коэффициентов преобразования. Кодирование с преобразованием описывается подробнее в работе автора M. Wien "High Efficiency Video Coding: Coding Tools and Specification", Springer-Verlag, Берлин, 2015 год.[0027] A transform unit (TU) includes a luma sample transform unit and corresponding chrominance sample transform units. The transform block may be a rectangular block of MxN samples resulting from a transform in a decoding process, and the transform may be part of a decoding process whereby a block of transform coefficients is transformed into a block of spatial domain values. Accordingly, the residual block may be an example of a TU. The residual block can residual data converted from a sample domain to a frequency domain, and includes a plurality of conversion coefficients. Transform coding is described in more detail in the work of the author M. Wien "High Efficiency Video Coding: Coding Tools and Specification", Springer-Verlag, Berlin, 2015.

[0028] Как подробнее описано, в одном или более примеров, описанных в этом раскрытии сущности, несколько проектных решений по сегментации на основе дерева могут использоваться для кодирования с преобразованием со схемой преобразования, называемой "адаптивным множественным (или многоядерным) преобразованием (AMT)" или "множественным набором для преобразования (MTS)". AMT и MTS могут означать идентичные инструментальные средства преобразования, поскольку, вследствие изменения названия между стандартами кодирования видео, AMT теперь называется "MTS".[0028] As described in more detail, in one or more of the examples described in this disclosure, several tree-based segmentation designs may be used for transform coding with a transform scheme called "adaptive multiple (or multi-core) transform (AMT)" or "multiple conversion set (MTS)". AMT and MTS may refer to identical conversion tools because, due to a name change between video coding standards, AMT is now called "MTS".

[0029] Примерные схемы преобразования описываются в публикации патента (США) № 2016/0219290 авторов X. Zhao, S. Lee, J. Chen, L. Zhang, X. Li, Y. Chen, M. Karczewicz и H. Liu "Enhanced Multiple Transforms for Prediction Residuals", январь 2015 года, также в публикации патента (США) № 2018/0020218 авторов X. Zhao, V. Seregin, M. Karczewicz и J. Chen "Improved Look-up Table for Enhanced Multiple Transform", июль 2016 года, а также в заявке (США) № 16/426749, поданной 30 мая 2019, авторов H. E. Egilmez, Y.-H. Chao, A. Said, V. Seregin и M. Karczewicz "Adaptive multiple transforms with reduced signaling overhead".[0029] Exemplary conversion circuits are described in US Patent Publication No. 2016/0219290 by X. Zhao, S. Lee, J. Chen, L. Zhang, X. Li, Y. Chen, M. Karczewicz and H. Liu" Enhanced Multiple Transforms for Prediction Residuals", January 2015, also in US Patent Publication No. 2018/0020218 by X. Zhao, V. Seregin, M. Karczewicz and J. Chen "Improved Look-up Table for Enhanced Multiple Transform" , July 2016, and US Application No. 16/426749, filed May 30, 2019, to H. E. Egilmez, Y.-H. Chao, A. Said, V. Seregin and M. Karczewicz "Adaptive multiple transforms with reduced signaling overhead".

[0030] Как подробнее описано, в некоторых примерах, остаточный блок может сегментироваться на множество остаточных субблоков (например, суб-TU). Это раскрытие сущности описывает примерные технологии способов, которыми видеокодер может передавать в служебных сигналах, и видеодекодер может определять то, что остаточный блок сегментируется на остаточные субблоки, и способ, которым сегментируется остаточный блок (например, тип сегментации). Кроме того, может быть предусмотрено множество типов преобразования, которые видеокодер может использовать для того, чтобы преобразовывать остаточные данные в выборочной области в частотную область, и множество типов преобразования, которые видеодекодер может использовать для того, чтобы преобразовывать (например, обратно преобразовывать) данные частотной области обратно в остаточные данные в выборочной области. Это раскрытие сущности описывает примерные способы, которыми следует определять тип преобразования.[0030] As described in more detail, in some examples, a residual block may be segmented into a plurality of residual subunits (eg, sub-TUs). This disclosure describes exemplary techniques for ways in which a video encoder may signal and the video decoder may determine that a residual block is segmented into residual subblocks and the manner in which the residual block is segmented (eg, the type of segmentation). In addition, there may be a plurality of transform types that the video encoder can use to transform residual data in the sample domain into the frequency domain, and a plurality of transform types that the video decoder can use to transform (e.g., deconvert) frequency domain data. areas back to the residual data in the sample area. This disclosure describes exemplary ways in which a transformation type should be determined.

[0031] Фиг. 1 является блок-схемой, иллюстрирующей примерную систему 100 кодирования и декодирования видео, которая может выполнять технологии этого раскрытия сущности. Технологии этого раскрытия сущности, в общем, направлены на кодирование (кодирование и/или декодирование) видеоданных. В общем, видеоданные включают в себя любые данные для обработки видео. Таким образом, видеоданные могут включать в себя необработанное некодированное видео, кодированное видео, декодированное (например, восстановленное) видео и видеометаданные, такие как служебные данные.[0031] FIG. 1 is a block diagram illustrating an exemplary video encoding and decoding system 100 that can implement the technologies of this disclosure. The technologies of this disclosure generally focus on encoding (encoding and/or decoding) video data. In general, video data includes any video processing data. Thus, video data may include raw unencoded video, encoded video, decoded (eg, reconstructed) video, and video metadata such as overhead data.

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

[0033] В примере по фиг. 1, исходное устройство 102 включает в себя видеоисточник 104, запоминающее устройство 106, видеокодер 200 и интерфейс 108 вывода. Целевое устройство 116 включает в себя интерфейс 122 ввода, видеодекодер 300, запоминающее устройство 120 и устройство 118 отображения. В соответствии с этим раскрытием сущности, видеокодер 200 исходного устройства 102 и видеодекодер 300 целевого устройства 116 могут быть выполнены с возможностью применять технологии для сегментации единиц преобразования на основе дерева для кодирования видео. Таким образом, исходное устройство 102 представляет пример устройства кодирования видео, в то время как целевое устройство 116 представляет пример устройства декодирования видео. В других примерах, исходное устройство и целевое устройство могут включать в себя другие компоненты или компоновки. Например, исходное устройство 102 может принимать видеоданные из внешнего видеоисточника, такого как внешняя камера. Аналогично, целевое устройство 116 может взаимодействовать с внешним устройством отображения вместо включения в себя интегрированного устройства отображения.[0033] 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. According to this disclosure, the video encoder 200 of the source device 102 and the video decoder 300 of the target device 116 may be configured to employ technologies for segmenting tree-based transform units for video encoding. Thus, the source device 102 represents an example of a video encoding device, while the target device 116 represents an example of a video decoding device. In other examples, the source device and 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 interface with an external display device instead of including an integrated display device.

[0034] Система 100, как показано на фиг. 1, представляет собой просто один пример. В общем, любое устройство кодирования и/или декодирования цифрового видео может выполнять технологии для сегментации единиц преобразования на основе дерева для кодирования видео. Исходное устройство 102 и целевое устройство 116 представляют собой просто примеры таких устройств кодирования, в которых исходное устройство 102 формирует кодированные видеоданные для передачи в целевое устройство 116. Это раскрытие сущности обозначает устройство "кодирования" в качестве устройства, которое выполняет кодирование (кодирование и/или декодирование) данных. Таким образом, видеокодер 200 и видеодекодер 300 представляют примеры устройств кодирования, в частности, видеокодера и видеодекодера, соответственно. В некоторых примерах, исходное устройство 102 и целевое устройство 116 могут работать практически симметрично таким образом, что каждое из исходного устройства 102 и целевого устройства 116 включает в себя компоненты кодирования и декодирования видео. Следовательно, система 100 может поддерживать одностороннюю и двухстороннюю передачу видео между исходным устройством 102 и целевым устройством 116, к примеру, для потоковой передачи видео, воспроизведения видео, широковещательной передачи видео или видеотелефонии.[0034] System 100, as shown in FIG. 1 is simply one example. In general, any digital video encoding and/or decoding apparatus may implement technologies for segmenting tree-based transform units for video encoding. Source device 102 and target device 116 are simply examples of such encoding devices in which source device 102 generates encoded video data for transmission to target device 116. This disclosure refers to an "encoding" device as a device that performs encoding (encoding and/or decoding) data. Thus, video encoder 200 and video decoder 300 represent examples of encoding devices, in particular, video encoder and 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 may support one-way and two-way video transmission between source device 102 and target device 116, for example, for video streaming, video playback, video broadcast, or video telephony.

[0035] В общем, видеоисточник 104 представляет источник видеоданных (т.е. необработанных некодированных видеоданных) и предоставляет последовательную серию кадров (также называемых "кадрами") видеоданных в видеокодер 200, который кодирует данные для кадров. Видеоисточник 104 исходного устройства 102 может включать в себя устройство видеозахвата, такое как видеокамера, видеоархив, содержащий ранее захваченное необработанное видео, и/или интерфейс прямой видеотрансляции, чтобы принимать видео от поставщика видеосодержимого. В качестве дополнительной альтернативы, видеоисточник 104 может формировать данные компьютерной графики в качестве исходного видео либо комбинацию передаваемого вживую видео, архивного видео и машиногенерируемого видео. В каждом случае, видеокодер 200 кодирует захваченные, предварительно захваченные или машиногенерируемые видеоданные. Видеокодер 200 может перекомпоновывать кадры из порядка приема (иногда называемого "порядком отображения") в порядок кодирования для кодирования. Видеокодер 200 может формировать поток битов, включающий в себя кодированные видеоданные. Исходное устройство 102 затем может выводить кодированные видеоданные через интерфейс 108 вывода на машиночитаемый носитель 110 для приема и/или извлечения, например, посредством интерфейса 122 ввода целевого устройства 116.[0035] In general, video source 104 represents a source of video data (ie, raw, unencoded video data) and provides a sequential series of frames (also referred to as “frames”) of video data to video encoder 200, which encodes the data for the 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 machine-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 reception order (sometimes called "display order") to encoding order for encoding. Video encoder 200 may generate a bit stream including encoded video data. The source device 102 may then output the encoded video data through an output interface 108 to a computer-readable medium 110 for reception and/or retrieval, such as through an input interface 122 of the target device 116.

[0036] Запоминающее устройство 106 исходного устройства 102 и запоминающее устройство 120 целевого устройства 116 представляют запоминающие устройства общего назначения. В некоторых примерах, запоминающие устройства 106, 120 могут сохранять необработанные видеоданные, например, необработанное видео из видеоисточника 104 и необработанные декодированные видеоданные из видеодекодера 300. Дополнительно или альтернативно, запоминающие устройства 106, 120 могут сохранять программные инструкции, выполняемые, например, посредством видеокодера 200 и видеодекодера 300, соответственно. Хотя запоминающее устройство 106 и запоминающее устройство 120 показаны отдельно от видеокодера 200 и видеодекодера 300 в этом примере, следует понимать, что видеокодер 200 и видеодекодер 300 также могут включать в себя внутренние запоминающие устройства для функционально аналогичных или эквивалентных целей. Кроме того, запоминающие устройства 106, 120 могут сохранять кодированные видеоданные, например, выводимые из видеокодера 200 и вводимые в видеодекодер 300. В некоторых примерах, части запоминающих устройств 106, 120 могут выделяться в качестве одного или более видеобуферов, например, чтобы сохранять необработанные, декодированные и/или кодированные видеоданные.[0036] 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, storage devices 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, storage devices 106, 120 may store program instructions executed, for example, by video encoder 200 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. In addition, the storage devices 106, 120 may store encoded video data, such as output from the video encoder 200 and input to the video decoder 300. In some examples, portions of the storage devices 106, 120 may be allocated as one or more video buffers, for example, to store raw, decoded and/or encoded video data.

[0037] Машиночитаемый носитель 110 может представлять любой тип носителя или устройства, допускающего транспортировку кодированных видеоданных из исходного устройства 102 в целевое устройство 116. В одном примере, машиночитаемый носитель 110 представляет среду связи, чтобы обеспечивать возможность исходному устройству 102 передавать кодированные видеоданные непосредственно в целевое устройство 116 в реальном времени, например, через радиочастотную сеть или компьютерную сеть. Интерфейс 108 вывода может модулировать передаваемый сигнал, включающий в себя кодированные видеоданные, и интерфейс 122 ввода может демодулировать принимаемый сигнал передачи, согласно стандарту связи, такому как протокол беспроводной связи. Среда связи может содержать любую беспроводную или проводную среду связи, такую как радиочастотный (RF) спектр либо одна или более физических линий передачи. Среда связи может формировать часть сети с коммутацией пакетов, такой как локальная вычислительная сеть, глобальная вычислительная сеть либо глобальная сеть, такая как Интернет. Среда связи может включать в себя маршрутизаторы, коммутаторы, базовые станции или любое другое оборудование, которое может быть полезным для того, чтобы упрощать передачу из исходного устройства 102 в целевое устройство 116.[0037] Computer readable media 110 may represent any type of media or device capable of transporting encoded video data from a source device 102 to a target device 116. In one example, computer readable media 110 represents a communication medium to enable source device 102 to transmit encoded video data directly to a target device device 116 in real time, for example, via a radio frequency 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 environment may include routers, switches, base stations, or any other equipment that may be useful to facilitate transmission from source device 102 to target device 116.

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

[0039] В некоторых примерах, исходное устройство 102 может выводить кодированные видеоданные на файловый сервер 114 или другое промежуточное устройство хранения данных, которое может сохранять кодированное видео, сформированное посредством исходного устройства 102. Целевое устройство 116 может осуществлять доступ к сохраненным видеоданным из файлового сервера 114 через потоковую передачу или загрузку. Файловый сервер 114 может представлять собой любой тип серверного устройства, допускающего сохранение кодированных видеоданных и передачу этих кодированных видеоданных в целевое устройство 116. Файловый сервер 114 может представлять веб-сервер (например, для веб-узла), сервер по протоколу передачи файлов (FTP), сетевое устройство доставки контента или устройство по протоколу системы хранения данных с подключением по сети (NAS). Целевое устройство 116 может осуществлять доступ к кодированным видеоданным из файлового сервера 114 через любое стандартное соединение для передачи данных, включающее в себя Интернет-соединение. Оно может включать в себя беспроводной канал (например, Wi-Fi-соединение), проводное соединение (например, цифровую абонентскую линию (DSL), кабельный модем и т.д.) либо комбинацию означенного, которая является подходящей для осуществления доступа к кодированным видеоданным, сохраненным на файловом сервере 114. Файловый сервер 114 и интерфейс 122 ввода могут быть выполнены с возможностью работать согласно протоколу потоковой передачи, протоколу передачи на основе загрузки либо комбинации вышеозначенного.[0039] In some examples, source device 102 may output encoded video data to a file server 114 or other intermediate storage device that may store encoded video generated by source device 102. Destination device 116 may access stored video data from file server 114 via streaming or downloading. The file server 114 may be any type of server device capable of storing encoded video data and transmitting the encoded video data to a target device 116. The file server 114 may be a web server (eg, for a web site), a file transfer protocol (FTP) server. , a network-attached content delivery device or network-attached storage (NAS) protocol device. Target device 116 can access encoded video data from file server 114 over any standard data connection, including an Internet connection. This may include a wireless link (eg, Wi-Fi connection), a wired link (eg, digital subscriber line (DSL), cable modem, etc.), or a combination thereof, which is suitable for accessing the 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.

[0040] Интерфейс 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 ввода.[0040] Output interface 108 and input interface 122 may represent wireless transmitters/receivers, modems, wired network components (eg, 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 include 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), improved standard LTE, 5G, etc. In some examples in which the output interface 108 includes a wireless transmitter, the output interface 108 and the input interface 122 may be configured to transmit data, such as encoded video data, in accordance with other wireless communication standards, such as the IEEE 802.11 specification, IEEE 802.15 -specification (for example, ZigBee™), Bluetooth™ standard, etc. In some examples, source device 102 and/or target device 116 may include corresponding on-chip (SoC) devices. For example, source device 102 may include an SoC device to perform functionality attributable to video encoder 200 and/or output interface 108, and target device 116 may include a SoC device to perform functionality attributable to video decoder 300 and/or interface 122 inputs.

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

[0042] Интерфейс 122 ввода целевого устройства 116 принимает кодированный поток видеобитов из машиночитаемого носителя 110 (например, среды связи, устройства 112 хранения данных, файлового сервера 114 и т.п.). Кодированный поток видеобитов может включать в себя служебную информацию, заданную посредством видеокодера 200, которая также используется посредством видеодекодера 300, такую как синтаксические элементы, имеющие значения, которые описывают характеристики и/или обработку видеоблоков либо других кодированных единиц (например, срезов, кадров, групп кадров, последовательностей и т.п.). Устройство 118 отображения отображает декодированные кадры декодированных видеоданных пользователю. Устройство 118 отображения может представлять любое из множества устройств отображения, таких как дисплей на электронно-лучевой трубке (CRT), жидкокристаллический дисплей (LCD), плазменный дисплей, дисплей на органических светодиодах (OLED) или другой тип устройства отображения.[0042] The input interface 122 of the target device 116 receives an encoded video bit stream from a computer-readable medium 110 (eg, communications 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 meanings that describe the 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 be 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.

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

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

[0045] Видеокодер 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"). Более недавний проект VVC-стандарта описывается в работе авторов Bross и др. "Versatile Video Coding (Draft 7)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16 конференция: Женева, CH, 1-11 октября 2019, JVET-P2001-v9 (далее "VVC-проект 7"). Тем не менее, технологии этого раскрытия сущности не ограничены каким-либо конкретным стандартом кодирования.[0045] 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 Group Test Model (JEM) standard or ITU-T H.266, also referred to as “Versatile Video Coding (VVC)”. The draft VVC standard is described in the work of the authors 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 "VVC project 6"). A more recent draft VVC standard is described in Bross et al. "Versatile Video Coding (Draft 7)", Joint Video Experts Team (JVET) of ITU-T SG 16 WP 3 and ISO/IEC JTC 1/SC 29/WG 11, 16 conference: Geneva, CH, October 1-11, 2019, JVET-P2001-v9 (hereinafter "VVC Project 7"). However, the techniques of this disclosure are not limited to any particular coding standard.

[0046] В общем, видеокодер 200 и видеодекодер 300 могут выполнять кодирование кадров на основе блоков. Термин "блок", в общем, означает структуру, включающую в себя данные, которые должны обрабатываться (например, кодироваться, декодироваться или иным образом использоваться в процессе кодирования и/или декодирования). Например, блок может включать в себя двумерную матрицу выборок данных яркости и/или цветности. В общем, видеокодер 200 и видеодекодер 300 могут кодировать видеоданные, представленные в YUV- (например, Y, Cb, Cr) формате. Таким образом, вместо кодирования данных красного цвета, зеленого цвета и синего цвета (RGB) для выборок кадра, видеокодер 200 и видеодекодер 300 могут кодировать компоненты яркости и цветности, при этом компоненты цветности могут включать в себя компоненты цветности оттенков красного цвета и оттенков синего цвета. В некоторых примерах, видеокодер 200 преобразует принимаемые RGB-отформатированные данные в YUV-представление до кодирования, и видеодекодер 300 преобразует YUV-представление в RGB-формат. Альтернативно, модули предварительной и постобработки (не показаны) могут выполнять эти преобразования.[0046] In general, video encoder 200 and video decoder 300 may perform frame encoding on a block basis. The term "block" generally means a structure including data to be processed (eg, encoded, decoded, or otherwise used in the encoding and/or decoding process). For example, the block may include a two-dimensional matrix of luma and/or chrominance data samples. In general, video encoder 200 and video decoder 300 can encode video data represented in YUV (eg, Y, Cb, Cr) format. Thus, instead of encoding red, green, and blue (RGB) data for frame samples, video encoder 200 and video decoder 300 may encode luma and chrominance components, wherein the chrominance components may include red-hue and blue-hue chrominance components. . In some examples, video encoder 200 converts received RGB-formatted data to a YUV representation prior to encoding, and video decoder 300 converts the YUV representation to an RGB format. Alternatively, pre- and post-processing modules (not shown) can perform these transformations.

[0047] Это раскрытие сущности, в общем, может означать кодирование (например, кодирование и декодирование) кадров, которое включает в себя процесс кодирования или декодирования данных кадра. Аналогично, это раскрытие сущности может означать кодирование блоков кадра, которое включает в себя процесс кодирования или декодирования данных для блоков, например, прогнозное кодирование и/или остаточное кодирование. Кодированный поток видеобитов, в общем, включает в себя последовательность значений для синтаксических элементов, представляющих решения по кодированию (например, режимы кодирования) и сегментацию кадров на блоки. Таким образом, ссылки на кодирование кадра или блока, в общем, должны пониматься как кодирование значений для синтаксических элементов, формирующих кадр или блок.[0047] This disclosure may generally refer to encoding (eg, encoding and decoding) of frames, which includes the process of encoding or decoding frame data. Likewise, this disclosure may refer to frame block coding, which includes a process for encoding or decoding data for blocks, such as predictive coding and/or residual coding. A coded 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 frame or block encoding are generally to be understood as meaning encodings for the syntactic elements forming the frame or block.

[0048] HEVC задает различные блоки, включающие в себя единицы кодирования (CU), единицы прогнозирования (PU) и единицы преобразования (TU). Согласно HEVC, видеокодер (к примеру, видеокодер 200) сегментирует единицу дерева кодирования (CTU) на CU согласно структуре в виде дерева квадрантов. Таким образом, видеокодер сегментирует CTU и CU на четыре равных неперекрывающихся квадрата, и каждый узел дерева квадрантов имеет либо нуль, либо четыре дочерних узла. Узлы без дочерних узлов могут называться "узлами-листьями", и CU таких узлов-листьев могут включать в себя одну или более PU и/или одну или более TU. Видеокодер дополнительно может сегментировать PU и TU. Например, в HEVC, остаточное дерево квадрантов (RQT) представляет сегментацию TU. В HEVC, PU представляют данные взаимного прогнозирования, в то время как TU представляют остаточные данные. CU, которые внутренне прогнозируются, включают в себя информацию внутреннего прогнозирования, такую как индикатор внутреннего режима.[0048] HEVC defines various blocks including coding units (CU), prediction units (PU), and transformation 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 quadrants, 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 can further segment PUs and TUs. For example, in HEVC, a residual quadtree (RQT) represents the TU segmentation. In HEVC, PUs represent inter-prediction data while TUs represent residual data. CUs that are internally predicted include internal prediction information such as an internal mode indicator.

[0049] В качестве другого примера, видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью работать согласно JEM или VVC. Согласно JEM или VVC, видеокодер (к примеру, видеокодер 200) сегментирует кинокадр на множество единиц дерева кодирования (CTU). Видеокодер 200 может сегментировать CTU согласно древовидной структуре, такой как структура в виде дерева квадрантов и двоичного дерева (QTBT) или структура в виде многотипного дерева (MTT). QTBT-структура удаляет понятия нескольких типов сегментации, такие как разделение между CU, PU и TU HEVC. Тем не менее, в некоторых примерах, TU и CU могут сегментироваться по-разному. Таким образом, TU может включать в себя множество суб-TU, имеющих форму и размер, отличающиеся от формы и размера CU. QTBT-структура включает в себя два уровня: первый уровень, сегментированный согласно сегментации на основе дерева квадрантов, и второй уровень, сегментированный согласно сегментации на основе двоичного дерева. Корневой узел QTBT-структуры соответствует CTU. Узлы-листья двоичных деревьев соответствуют единицам кодирования (CU).[0049] 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 movie frame into a plurality of coding tree units (CTUs). Video encoder 200 may segment CTUs according to a tree structure, such as a quadrant-binary tree (QTBT) structure or a multi-type tree (MTT) structure. The QTBT structure removes the concepts of several types of segmentation, such as the division between CUs, PUs and HEVC TUs. However, in some examples, TU and CU may be segmented differently. Thus, a TU may include multiple sub-TUs having a different shape and size from the CU. The QTBT structure includes two layers: a first layer segmented according to a quadtree-based segmentation and a second level segmented according to a binary tree-based segmentation. The root node of the QTBT structure corresponds to the CTU. The leaf nodes of binary trees correspond to coding units (CUs).

[0050] В MTT-структуре сегментации, блоки могут сегментироваться с использованием сегмента дерева квадрантов (QT), сегмента двоичного дерева (BT) и одного или более типов сегментов троичного дерева (TT) (также называемого "третичным деревом (TT)). Сегмент троичного или третичного дерева представляет собой сегмент, в котором блок разбивается на три субблока. В некоторых примерах, сегмент троичного или третичного дерева разделяет блок на три субблока без разделения исходного блока по центру. Типы сегментации в MTT (например, QT, BT и TT) могут быть симметричными или асимметричными.[0050] 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 called "tertiary tree (TT)"). A ternary or tertiary tree is a segment that splits a block into three subblocks. In some examples, a ternary or tertiary tree segment splits a block into three subblocks without splitting the original block down the center. Types of segmentation in MTT (for example, QT, BT, and TT) can be symmetrical or asymmetrical.

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

[0052] Видеокодер 200 и видеодекодер 300 могут быть выполнены с возможностью использовать сегментацию на основе дерева квадрантов согласно HEVC, QTBT-сегментацию, MTT-сегментацию либо другие структуры сегментации. Для целей пояснения, описание технологий этого раскрытия сущности представляется относительно QTBT-сегментации. Тем не менее, следует понимать, что технологии этого раскрытия сущности также могут применяться к видеокодерам, выполненным с возможностью использовать также сегментацию на основе дерева квадрантов или другие типы сегментации.[0052] 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, a description of the techniques of this disclosure is presented with respect 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.

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

[0054] В некоторых примерах, плитка может сегментироваться на несколько кирпичей, каждый из которых может включать в себя одну или более CTU-строк внутри плитки. Плитка, которая не сегментируется на несколько кирпичей, также может называться "кирпичом". Тем не менее, кирпич, который представляет собой истинный поднабор плитки, может не называться "плиткой".[0054] 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 is not segmented into multiple bricks may also be called a "brick". However, brick, which is a true subset of tile, may not be called "tile".

[0055] Кирпичи в кадре также могут размещаться в срезе. Срез может представлять собой целое число кирпичей кадра, которые могут содержаться исключительно в одной единице слоя абстрагирования от сети (NAL). В некоторых примерах, срез включает в себя либо определенное число полных плиток, либо только жесткую последовательность полных кирпичей одной плитки.[0055] 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, the slice includes either a specified number of full tiles or only a rigid sequence of full bricks of a single tile.

[0056] Это раскрытие сущности может использовать "NxN" и "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.[0056] This disclosure may use "NxN" and "N by N" interchangeably to refer to dimensions within samples of a block (eg, a CU or other video block) in terms of vertical and horizontal dimensions, e.g., 16× samples 16 or 16 by 16 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). Likewise, 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. Selections in CU can be arranged in rows and columns. In addition, CUs do not necessarily have the same number of samples in the horizontal direction and in the vertical direction. For example, CUs may contain NxM samples, where M is not necessarily equal to N.

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

[0058] Чтобы прогнозировать CU, видеокодер 200, в общем, может формировать прогнозный блок для CU через взаимное прогнозирование или внутреннее прогнозирование. Взаимное прогнозирование, в общем, означает прогнозирование CU из данных ранее кодированного кадра, тогда как внутреннее прогнозирование, в общем, означает прогнозирование CU из ранее кодированных данных идентичного кадра. Чтобы выполнять взаимное прогнозирование, видеокодер 200 может формировать прогнозный блок с использованием одного или более векторов движения. Видеокодер 200, в общем, может выполнять поиск движения для того, чтобы идентифицировать опорный блок, который тесно совпадает с CU, например, с точки зрения разностей между CU и опорным блоком. Видеокодер 200 может вычислять разностный показатель с использованием суммы абсолютных разностей (SAD), суммы квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратических разностей (MSD) или других таких вычислений разности, чтобы определять то, совпадает или нет опорный блок тесно с текущей CU. В некоторых примерах, видеокодер 200 может прогнозировать текущую CU с использованием однонаправленного прогнозирования или двунаправленного прогнозирования.[0058] To predict a CU, video encoder 200 may generally generate a prediction block for the CU through inter prediction or intra prediction. Inter prediction generally means predicting CUs from previously encoded frame data, while intra prediction generally means predicting CUs from previously encoded data of an identical frame. 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 to identify a reference block that closely matches a CU, for example, in terms of differences between the CU and the reference block. Video encoder 200 may calculate a difference metric using sum of absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), 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.

[0059] Некоторые примеры JEM и VVC также предоставляют аффинный режим компенсации движения, который может считаться режимом взаимного прогнозирования. В аффинном режиме компенсации движения, видеокодер 200 может определять два или более векторов движения, которые представляют непоступательное движение в пространстве, такое как увеличение или уменьшение масштаба, вращение, перспективное движение или другие типы нерегулярного движения.[0059] Some examples of JEM and VVC also provide an affine motion compensation mode, which can be considered a mutual 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 zooming in or out, rotation, perspective motion, or other types of irregular motion.

[0060] Чтобы выполнять внутреннее прогнозирование, видеокодер 200 может выбирать режим внутреннего прогнозирования для того, чтобы формировать прогнозный блок. Некоторые примеры JEM и VVC предоставляют шестьдесят семь режимов внутреннего прогнозирования, включающих в себя различные направленные режимы, а также планарный режим и DC-режим. В общем, видеокодер 200 выбирает режим внутреннего прогнозирования, который описывает соседние выборки относительно текущего блока (например, блока CU), из которых можно прогнозировать выборки текущего блока. Такие выборки, в общем, могут находиться выше, выше и слева или слева от текущего блока в идентичном кадре с текущим блоком, при условии, что видеокодер 200 кодирует CTU и CU в порядке растрового сканирования (слева направо, сверху вниз).[0060] To perform intra prediction, video encoder 200 may select an intra prediction mode to generate a prediction block. Some JEM and VVC examples provide sixty-seven intraprediction 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, a CU block) from which samples of the current block can be predicted. Such samples may generally be above, above and to the left or left of the current block in an identical frame to the current block, provided that video encoder 200 encodes the CTUs and CUs in raster scan order (left to right, top to bottom).

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

[0062] После прогнозирования, такого как внутреннее прогнозирование или взаимное прогнозирование блока, видеокодер 200 может вычислять остаточные данные для блока. Остаточные данные, такие как остаточный блок, представляют выборку посредством выборочных разностей между блоком и прогнозным блоком для блока, сформированных с использованием соответствующего режима прогнозирования. Видеокодер 200 может применять одно или более преобразований к остаточному блоку для того, чтобы формировать преобразованные данные в области преобразования вместо выборочной области. Результат преобразования для остаточного блока может представлять собой остаточный блок в области преобразования (также называемой "частотной областью"). Остаточный блок представляет собой пример TU, и в одном или более примеров, TU дополнительно может сегментироваться на множество суб-TU (например, остаточных субблоков).[0062] After prediction, such as intra prediction or inter prediction of a block, video encoder 200 may calculate residual data for the block. Residual data, such as a residual block, represents a sample by sample differences between a block and a prediction block for a 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. The transform result for the residual block may be a residual block in a transform domain (also called a "frequency domain"). A residual unit is an example of a TU, and in one or more examples, the TU may further be segmented into a plurality of sub-TUs (eg, residual subunits).

[0063] В качестве одного примера, видеокодер 200 может применять дискретное косинусное преобразование (DCT), целочисленное преобразование, вейвлет-преобразование или концептуально аналогичное преобразование к остаточным видеоданным. Дополнительно, видеокодер 200 может применять вторичное преобразование после первого преобразования, такое как зависимое от режима неразделимое вторичное преобразование (MDNSST), зависимое от сигнала преобразование, преобразование Карунена-Лоэва (KLT) и т.п. Видеокодер 200 формирует коэффициенты преобразования после применения одного или более преобразований. Использование DCT предоставляется в качестве одного примера и не должно считаться ограничением. Могут быть предусмотрены другие типы преобразования, и примеры, описанные в этом раскрытии сущности, могут использовать один или более типов преобразования. Например, видеокодер 200 может быть выполнен с возможностью выбирать тип преобразования, который следует использовать для преобразования из выборочной области в область преобразования (например, частотную), и видеодекодер 300 может быть выполнен с возможностью выбирать тип преобразования, который следует использовать для преобразования (например, обратного преобразования) из области преобразования обратно в выборочную область. В некоторых примерах, видеокодер 200 может быть выполнен с возможностью выбирать, и видеодекодер 300 может быть выполнен с возможностью логически выводить тип преобразования, который следует использовать, на основе различных критериев таким образом, что видеокодер 200 и видеодекодер 300 выбирают идентичный тип преобразования. Посредством логического вывода типа преобразования, видеокодер 200, возможно, не должен явно передавать в служебных сигналах информацию, указывающую тип преобразования, и видеодекодер 300, возможно, не должен принимать информацию, указывающую тип преобразования.[0063] As one example, video encoder 200 may apply a discrete cosine transform (DCT), an integer transform, a wavelet transform, or a conceptually similar transform to the residual video data. Additionally, video encoder 200 may apply a secondary transform after the first transform, such as a mode dependent inseparable secondary transform (MDNSST), a signal dependent transform, a Karhunen-Loeve transform (KLT), and the like. Video encoder 200 generates transform coefficients after applying one or more transforms. The use of DCT is provided as one example and should not be considered a limitation. Other types of transformation may be provided, and the examples described in this disclosure may use one or more types of transformation. For example, video encoder 200 may be configured to select a transform type to use for transforming from a sample domain to a transform domain (e.g., frequency), and video decoder 300 may be configured to select a transform type to use for transforming (e.g., inverse transform) from the transform domain back to the sample domain. In some examples, video encoder 200 may be configured to select, and video decoder 300 may be configured to infer the type of transform to use based on different criteria such that video encoder 200 and video decoder 300 select an identical transform type. By inferring the transform type, video encoder 200 may not need to explicitly signal information indicating the transform type, and video decoder 300 may not need to receive information indicating the transform type.

[0064] Как отмечено выше, после преобразований для того, чтобы формировать коэффициенты преобразования, видеокодер 200 может выполнять квантование коэффициентов преобразования. Квантование, в общем, означает процесс, в котором коэффициенты преобразования квантуются, чтобы, возможно, уменьшать объем данных, используемых для того, чтобы представлять коэффициенты преобразования, обеспечивая дополнительное сжатие. Посредством выполнения процесса квантования, видеокодер 200 может уменьшать битовую глубину, ассоциированную с некоторыми или всеми коэффициентами преобразования. Например, видеокодер 200 может округлять n-битовое значение в меньшую сторону до m-битового значения во время квантования, где n превышает m. В некоторых примерах, чтобы выполнять квантование, видеокодер 200 может выполнять побитовый сдвиг вправо значения, которое должно квантоваться.[0064] As noted above, after transformations to generate transform coefficients, video encoder 200 may perform quantization of the transform coefficients. Quantization, in general, 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 a 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 an n-bit value down to an m-bit value during quantization where n is greater than m. In some examples, to perform quantization, video encoder 200 may perform a bitwise right shift of the value to be quantized.

[0065] После квантования, видеокодер 200 может сканировать коэффициенты преобразования, формирующие одномерный вектор, из двумерной матрицы, включающей в себя квантованные коэффициенты преобразования. Сканирование может проектироваться с возможностью размещать коэффициенты преобразования с более высокой энергией (и в силу этого с более низкой частотой) в начале вектора и размещать коэффициенты преобразования с более низкой энергией (и в силу этого с более высокой частотой) в конце вектора. В некоторых примерах, видеокодер 200 может использовать предварительно заданный порядок сканирования для того, чтобы сканировать квантованные коэффициенты преобразования, чтобы формировать преобразованный в последовательную форму вектор, и затем энтропийно кодировать квантованные коэффициенты преобразования вектора. В других примерах, видеокодер 200 может выполнять адаптивное сканирование. После сканирования квантованных коэффициентов преобразования, чтобы формировать одномерный вектор, видеокодер 200 может энтропийно кодировать одномерный вектор, например, согласно контекстно-адаптивному двоичному арифметическому кодированию (CABAC). Видеокодер 200 также может энтропийно кодировать другие синтаксические элементы, описывающие метаданные, ассоциированные с кодированными видеоданными, для использования посредством видеодекодера 300 при декодировании видеоданных.[0065] After quantization, video encoder 200 may scan 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 vector transform coefficients. In other examples, video encoder 200 may perform adaptive scanning. After scanning the quantized transform coefficients to form a one-dimensional vector, video encoder 200 may entropy encode the one-dimensional vector, for example, 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 in decoding the video data.

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

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

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

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

[0070] Остаточная информация может представляться, например, посредством квантованных коэффициентов преобразования. Видеодекодер 300 может обратно квантовать и обратно преобразовывать квантованные коэффициенты преобразования блока, чтобы воспроизводить остаточный блок для блока. Видеодекодер 300 использует передаваемый в служебных сигналах режим прогнозирования (внутреннее или взаимное прогнозирование) и связанную информацию прогнозирования (например, информацию движения для взаимного прогнозирования) для того, чтобы формировать прогнозный блок для блока. Видеодекодер 300 затем может комбинировать прогнозный блок и остаточный блок (на основе каждой выборки), чтобы воспроизводить исходный блок. Видеодекодер 300 может выполнять дополнительную обработку, такую как выполнение процесса удаления блочности, чтобы уменьшать визуальные артефакты вдоль границ блока.[0070] The residual information may be represented, for example, by quantized transform coefficients. Video decoder 300 may dequantize and deconvert the quantized transform coefficients of the block to reproduce a residual block for the block. Video decoder 300 uses the signaled prediction mode (intra or inter prediction) and associated prediction information (eg, motion information for inter prediction) to generate a prediction block for the block. Video decoder 300 may then combine the prediction block and the residual block (on a sample-by-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.

[0071] В соответствии с технологиями этого раскрытия сущности, остаточный блок (например, TU) может сегментироваться для того, чтобы формировать множество остаточных субблоков (например, суб-TU). Например, TU может сегментироваться на одну из: четырех квадратных суб-TU (к примеру, сегментация на основе дерева квадрантов), двух прямоугольных суб-TU (к примеру, двоичная сегментация) или трех прямоугольных суб-TU (к примеру, троичная сегментация). Другой пример может представлять собой TU, сегментированную на четыре прямоугольных суб-TU. Кроме того, может быть предусмотрено множество различных типов преобразования (например, различные типы дискретных косинусных преобразований (DCT) и дискретных синусных преобразований (DST)).[0071] In accordance with the techniques of this disclosure, a residual unit (eg, a TU) may be segmented to form a plurality of residual subunits (eg, sub-TUs). For example, a TU may be segmented into one of: four square sub-TUs (for example, quadtree segmentation), two rectangular sub-TUs (for example, binary segmentation), or three rectangular sub-TUs (for example, ternary segmentation). . Another example could be a TU segmented into four rectangular sub-TUs. In addition, many different types of transformation may be provided (eg, various types of discrete cosine transforms (DCT) and discrete sine transforms (DST)).

[0072] Это раскрытие сущности описывает примерные способы, которыми видеокодер 200 может передавать в служебных сигналах, и видеодекодер 300 может определять то, сегментируется или нет остаточный блок (например, TU), и способ, которым сегментируется остаточный блок (например, определять тип дерева сегментации). Кроме того, это раскрытие сущности описывает примерные способы, которыми следует определять тип преобразования (также называемый "ядром преобразования"), который следует использовать.[0072] This disclosure describes exemplary ways in which video encoder 200 may signal and video decoder 300 may determine whether or not a residual block (e.g., a TU) is segmented, and the manner in which the residual block is segmented (e.g., determine a tree type segmentation). In addition, this disclosure describes exemplary ways in which to determine the type of transformation (also referred to as a "transformation kernel") to use.

[0073] Например, видеодекодер 300 может принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования. Видеодекодер 300 может определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множество остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации. Видеодекодер 300 может формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков. Видеодекодер 300 может декодировать текущий блок с использованием остаточных данных.[0073] For example, video decoder 300 may receive, in a bit stream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the residual block indicates the difference between the current block and the prediction block. The video decoder 300 may determine, based on the received information that a residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the type of segmentation tree. Video decoder 300 may generate residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks. Video decoder 300 may decode the current block using the residual data.

[0074] В другом примере, видеокодер 200 может определять то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков. Видеокодер 200 может кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется.[0074] In another example, video encoder 200 may determine that a residual block for a current block of video data is segmented according to a segmentation tree type into a plurality of residual subblocks. Video encoder 200 may encode a stream of bits as a coded representation of video data that signals information indicating whether or not a residual block is segmented, and further signals information indicating the type of segmentation tree for the residual block that is segmented.

[0075] Это раскрытие сущности, в общем, может относиться к "передаче в служебных сигналах" определенной информации, такой как синтаксические элементы. Термин "передача служебных сигналов", в общем, может означать передачу значений для синтаксических элементов и/или других данных, используемых для того, чтобы декодировать кодированных видеоданные. Таким образом, видеокодер 200 может передавать в служебных сигналах значения для синтаксических элементов в потоке битов. В общем, передача служебных сигналов означает формирование значения в потоке битов. Как отмечено выше, исходное устройство 102 может транспортировать поток битов в целевое устройство 116 практически в реальном времени или не в реальном времени, к примеру, что может происходить при сохранении синтаксических элементов в устройство 112 хранения данных для последующего извлечения посредством целевого устройства 116.[0075] This disclosure may generally relate to "signalling" certain information, such as syntactic elements. The term "signalling" may generally mean transmitting 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 stream of bits. As noted above, source device 102 may transport a stream of bits to target device 116 in near real time or non-real time, for example, which may occur when syntax elements are stored in data storage device 112 for later retrieval by target 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 are conceptual diagrams illustrating an example quadtree and binary tree (QTBT) structure 130 and a corresponding coding tree unit (CTU) 132. Solid lines represent quadtree partitioning, and dotted lines indicate binary tree partitioning. At each split (i.e., non-leaf) node in the binary tree, one flag is signaled to indicate which type of split (i.e., horizontal or vertical) is used, where 0 indicates horizontal split and 1 indicates vertical split in this example. For quadtree partitioning, there is no need to specify a partition type because the quadtree nodes split the block horizontally and vertically into 4 subblocks of equal size. Accordingly, video encoder 200 may encode and video decoder 300 may decode syntactic elements (eg, splitting information) for the tree level of the region of QTBT structure 130 (i.e., solid lines) and syntactic elements (eg, splitting information) for the tree level predicting QTBT structure 130 (i.e., 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 terminal leaf nodes of the 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 the sizes of blocks corresponding to 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 binary tree depth (MaxBTDepth, representing the maximum allowed depth of a binary tree), and the minimum binary tree size (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 a QTBT structure corresponding to a CTU may have four child nodes at the first level of the QTBT structure, each of which may be segmented according to quadtree-based segmentation. Thus, the first level nodes are either leaf nodes (having child nodes) or have four child nodes. Example QTBT structure 130 represents such nodes as including a parent node and child nodes having solid lines for branches. If the first-level nodes do not exceed the maximum allowed size of the root nodes of a binary tree (MaxBTSize), then the nodes can additionally be segmented through corresponding binary trees. A single node binary tree split can be processed iteratively until the nodes resulting from the split reach the minimum allowed binary tree leaf node size (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- or inter-frame prediction) and transformation, without further segmentation. As explained above, CUs may also be referred to as "video units" 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 128×128 (luma samples and two corresponding 64×64 chrominance samples), MinQTSize is set to 16×16, MaxBTSize is set to 64×64, MinBTSize ( for width and height) is set to 4, and MaxBTDepth is set to 4. Quadtree-based segmentation is applied to the CTU first to form quadtree leaf nodes. Quadtree leaf nodes can have sizes from 16x16 (i.e., MinQTSize) to 128x128 (i.e., up to CTU size). If the quadtree leaf node is 128x128, then the quadtree leaf node should not be further split by a binary tree because the size exceeds MaxBTSize (ie, 64x64, in this example). Otherwise, the quadtree leaf node is further segmented by a binary tree. Therefore, the quadtree leaf node 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 additional horizontal splitting is not allowed. Likewise, a binary tree node having a height equal to MinBTSize implies that additional vertical splitting is not permitted for that binary tree node. As noted above, the leaf nodes of a binary tree are called "CU" and are further processed according to prediction and transformation without additional segmentation.

[0080] Как описано выше, видеокодер 200 может применять одно или более преобразований к остаточному блоку для того, чтобы формировать преобразованные данные в области преобразования вместо выборочной области (например, чтобы формировать остаточный блок в области преобразования). Далее описываются примеры преобразований, такие как дискретное синусное преобразование (DST) и дискретное косинусное преобразование (DCT). Также описывается схема преобразования, используемая в HEVC.[0080] As described above, video encoder 200 may apply one or more transforms to a residual block to generate transformed data in a transform region instead of a sample region (eg, to generate a residual block in a transform region). The following describes examples of transforms such as discrete sine transform (DST) and discrete cosine transform (DCT). The conversion circuit used in HEVC is also described.

[0081] Преобразование указывает процесс извлечения альтернативного представления входного сигнала. С учетом N-точечного вектора x=[x0, x1, …, xN-1]T и набора данных векторов {ϕ0, ϕ1, …, ϕM-1}, x может аппроксимироваться или точно представляться с использованием линейного комбинирования ϕ0, ϕ1, …, ϕM-1, что может формулироваться следующим образом:[0081] Transformation indicates the process of extracting an alternative representation of an input signal. Given an N-point vector x=[x 0 , x 1 , …, x N-1 ] T and a data set of vectors {ϕ 0 , ϕ 1 , …, ϕ M-1 }, x can be approximated or accurately represented using linear combination of ϕ 0 , ϕ 1 , …, ϕ M-1 , which can be formulated as follows:

[0082] Выше, может быть аппроксимацией или эквивалентом x. Вектор f=[fi, f2, …, fM-1] называется "вектором коэффициентов преобразования", и {ϕ0, ϕ1, …, ϕM-1} являются базисными векторами преобразования.[0082] Above, may be an approximation or equivalent of x. The vector f=[f i , f 2 , …, f M-1 ] is called the “transform coefficient vector”, and {ϕ 0 , ϕ 1 , …, ϕ M-1 } are the basis vectors of the transformation.

[0083] В сценарии кодирования видео, коэффициенты преобразования приблизительно являются некоррелированными и разреженными. Например, энергия входного вектора x уплотняется только для нескольких коэффициентов преобразования, и большинство оставшихся коэффициентов преобразования типично составляют близко 0.[0083] In a video encoding scenario, the transform coefficients are approximately uncorrelated and sparse. For example, the energy of the input vector x is compressed for only a few transform coefficients, and most of the remaining transform coefficients are typically close to 0.

[0084] Входные данные для преобразования, используемого посредством видеокодера 200 и видеодекодера 300, могут отличаться. Например, для видеокодера 200, входные данные, которые преобразуются, представляют собой остаточные данные для того, чтобы формировать блок коэффициентов преобразования посредством преобразования значений пространственной области остатка в значения в частотной области (например, значения коэффициентов) блока коэффициентов преобразования. Для видеодекодера 300, входные данные, который преобразуется, представляют собой блок коэффициентов преобразования (например, возможно после деквантования) для того, чтобы формировать остаточные данные посредством преобразования значений в частотной области блока коэффициентов преобразования в значения пространственной области остатка. Поскольку видеодекодер 300 выполняет инверсию процесса видеокодера 200, преобразование, выполняемое посредством видеодекодера 300, может рассматриваться как обратное преобразование. Для простоты, раскрытие сущности описывает преобразования входных данных с пониманием того, что входные данные отличаются для видеокодера 200 и видеодекодера 300, и того, что преобразование посредством видеодекодера 300 может представлять собой инверсию преобразования видеокодера 200.[0084] The input data for the transformation used by video encoder 200 and video decoder 300 may be different. For example, for video encoder 200, the input data that is transformed is residual data to generate a block of transform coefficients by transforming the spatial domain values of the residual into frequency domain values (eg, coefficient values) of the block of transform coefficients. For video decoder 300, the input data that is transformed is a block of transform coefficients (eg, possibly after dequantization) to generate residual data by converting the frequency domain values of the block of transform coefficients into spatial domain values of the residual. Since the video decoder 300 performs an inversion of the process of the video encoder 200, the conversion performed by the video decoder 300 can be considered as an inverse transform. For simplicity, the disclosure describes transformations of input data with the understanding that the input data is different for video encoder 200 and video decoder 300, and that the transformation by video decoder 300 may be the inverse of the transformation of video encoder 200.

[0085] С учетом конкретных входных данных, оптимальное преобразование с точки зрения энергетического уплотнения представляет собой так называемое преобразование Карунена-Лоэва (KLT), которое использует собственные векторы ковариационной матрицы входных данных в качестве базисных векторов преобразования. Следовательно, KLT представляет собой зависимое от данных преобразование и не имеет общей математической формулировки. Тем не менее, при определенных допущениях (например, если входные данные формируют стационарные марковские процессы первого порядка), соответствующее KLT фактически представляет собой члена синусоидального семейства унитарных преобразований, которое вводится в заявке (США) № 16/426749, поданной 30 мая 2019 года, авторов H. E. Egilmez, Y.-H. Chao, A. Said, V. Seregin и M. Karczewicz "Adaptive multiple transforms with reduced signaling overhead". Синусоидальное семейство унитарных преобразований указывает преобразования с использованием базисных векторов преобразования, формулируемых следующим образом:[0085] Given a particular input data, the optimal transform from an energy compaction point of view is the so-called Karhunen-Loeve transform (KLT), which uses the eigenvectors of the covariance matrix of the input data as the basis vectors of the transform. Therefore, KLT is a data-dependent transformation and does not have a general mathematical formulation. However, under certain assumptions (for example, if the input data forms stationary first-order Markov processes), the corresponding KLT is actually a member of the sinusoidal family of unitary transforms, which is introduced in US application No. 16/426749, filed May 30, 2019. by H. E. Egilmez, Y.-H. Chao, A. Said, V. Seregin and M. Karczewicz "Adaptive multiple transforms with reduced signaling overhead". The sine family of unitary transforms specifies transformations using transform basis vectors formulated as follows:

ϕm(k)=A*eikθ+B*e-ikθ ϕ m (k)=A*e ikθ +B*e -ikθ

[0086] Выше, e является основанием натурального логарифма, приблизительно равным 2,71828, A, B и θ являются комплексными, в общем, и зависят от значения m.[0086] Above, e is the base of the natural logarithm, approximately equal to 2.71828, A, B and θ are complex, in general, and depend on the value of m.

[0087] Несколько известных преобразований, включающих в себя дискретное преобразование Фурье, косинусоидальное преобразование, синусоидальное преобразование и KLT-преобразование (для стационарных марковских процессов первого порядка), представляют собой членов этого синусоидального семейства унитарных преобразований. Согласно работе Jain A.K. "A sinusoidal family of unitary transforms", IEEE Trans. on Pattern Analysis and Machine Intelligence, 1, 356, 1979 год, полный набор семейств дискретного косинусного преобразования (DCT) и дискретного синусного преобразования (DST) включает в себя всего 16 преобразований на основе различных типов (т.е. различных значений A, B и θ), и полное определение различных типов DCT и DST приводится ниже.[0087] Several well-known transforms, including the discrete Fourier transform, the cosine transform, the sine transform, and the KLT transform (for stationary first-order Markov processes), are members of this sine family of unitary transforms. According to the work of Jain A.K. "A sinusoidal family of unitary transforms", IEEE Trans. on Pattern Analysis and Machine Intelligence, 1, 356, 1979, the complete set of discrete cosine transform (DCT) and discrete sine transform (DST) families includes a total of 16 transforms based on different types (i.e., different values of A, B and θ), and a complete definition of the different types of DCT and DST is given below.

[0088] Допустим, что входной N-точечный вектор обозначается как x=[x0, x1, …, xN-1]T, и он преобразуется в другой N-точечный вектор коэффициентов преобразования, обозначаемый как y=[y0, y1, …, yN-1]T, посредством умножения матрицы, процесс чего дополнительно может иллюстрироваться согласно одному из следующих формулирований преобразования, при этом k находится в диапазоне от 0 до N-1, включительно:[0088] Let us assume that the input N-point vector is denoted as x=[x 0 , x 1 , ..., x N-1 ] T , and it is transformed into another N-point vector of transform coefficients, denoted as y=[y 0 , y 1 , …, y N-1 ] T , by means of matrix multiplication, the process of which may further be illustrated according to one of the following transformation formulations, with k being in the range from 0 to N-1, inclusive:

DCT-тип I (DCT-1):DCT type I (DCT-1):

, ,

где .Where .

DCT-тип II (DCT-2):DCT type II (DCT-2):

, ,

где Where

[0089] DCT-тип III (DCT-3):[0089] DCT Type III (DCT-3):

, ,

где Where

DCT-тип IV (DCT-4):DCT-type IV (DCT-4):

, ,

DCT-тип V (DCT-5):DCT-type V (DCT-5):

, ,

где .Where .

DCT-тип VI (DCT-6):DCT-type VI (DCT-6):

, ,

где .Where .

DCT-тип VII (DCT-7):DCT-type VII (DCT-7):

, ,

где .Where .

DCT-тип VIII (DCT-8):DCT type VIII (DCT-8):

, ,

DST-тип I (DST-1):DST-type I (DST-1):

, ,

DST-тип II (DST-2):DST-type II (DST-2):

, ,

где Where

DST-тип III (DST-3):DST-type III (DST-3):

, ,

где Where

DST-тип IV (DST-4):DST-type IV (DST-4):

, ,

DST-тип V (DST-5):DST-type V (DST-5):

, ,

DST-тип VI (DST-6):DST-type VI (DST-6):

, ,

DST-тип VII (DST-7):DST-type VII (DST-7):

, ,

DST-тип VIII (DST-8):DST-type VIII (DST-8):

, ,

где Where

[0090] Тип преобразования указывается посредством математической формулировки базисной функции преобразования, например, 4-точечное DST-VII и 8-точечное DST-VII имеют идентичный тип преобразования, независимо от значения N.[0090] The type of transformation is indicated by a mathematical formulation of the basis function of the transformation, for example, 4-point DST-VII and 8-point DST-VII have identical transformation type, regardless of the value of N.

[0091] Без потери общности, все вышеуказанные типы преобразования могут представляться с использованием нижеприведенного обобщенного формулирования:[0091] Without loss of generality, all of the above types of transformation can be represented using the following general formulation:

, ,

[0092] В вышеприведенном уравнении, T является матрицей преобразования, указываемой посредством определения одного определенного преобразования, например, DCT-тип I ~ DCT-тип VIII или DST-тип I ~ DST-тип VIII, и векторы-строки T, например, [Ti,0, Ti,1, Ti,2, …, Ti, N-1] являются i-ми базисными векторами преобразования. Преобразование, применяемое к N-точечному входному вектору, называется "N-точечным преобразованием".[0092] In the above equation, T is a transformation matrix specified by defining one specific transformation, for example, DCT-type I ~ DCT-type VIII or DST-type I ~ DST-type VIII, and row vectors T, for example, [ T i,0 , T i,1 , T i,2 , …, T i, N-1 ] are the i-th basis vectors of the transformation. The transformation applied to an N-point input vector is called the "N-point transform".

[0093] Также следует отметить, что вышеприведенные формулирования преобразования, которые применяются к одномерным входным данным x, могут представляться в форме матричного умножения, как пояснено ниже:[0093] It should also be noted that the above transformation formulations, which apply to one-dimensional input data x, can be represented in the form of matrix multiplication, as explained below:

[0094] В вышеприведенном уравнении, T указывает матрицу преобразования, x указывает вектор входных данных, и y указывает выходной вектор коэффициентов преобразования.[0094] In the above equation, T indicates the transformation matrix, x indicates the input data vector, and y indicates the output vector of transformation coefficients.

[0095] Далее описывается преобразование для двумерных входных данных. Преобразования, описанные выше, может применяться к одномерным входным данным, и преобразования также могут расширяться на источники двумерных входных данных. Например, предположим, что X является входным массивом данных MxN. Некоторые способы применения преобразования для двумерных входных данных включают в себя разделимые и неразделимые двумерные преобразования.[0095] The following describes the transformation for two-dimensional input data. The transformations described above can be applied to one-dimensional input data, and the transformations can also be extended to two-dimensional input data sources. For example, suppose X is an MxN input data array. Some ways to apply a transform to two-dimensional input data include separable and non-separable two-dimensional transforms.

[0096] Разделимое двумерное преобразование применяет одномерные преобразования для горизонтальных и вертикальных векторов X последовательно, что формулируется так, как указано ниже:[0096] The separable two-dimensional transform applies one-dimensional transforms to the horizontal and vertical vectors X sequentially, which is formulated as follows:

[0097] В вышеприведенном уравнении, C и R обозначают данные матрицы преобразования MxM и NxN, соответственно. Из формулирования, C применяет одномерные преобразования для векторов-столбцов X, в то время как R применяет одномерные преобразования для векторов-строк X. В этом раскрытии сущности, для простоты C и R обозначаются в качестве левого (вертикального) и правого (горизонтального) преобразований, и они формируют пару преобразований. Возникают случаи, когда C равно R и является ортогональной матрицей. В таком случае, разделимое двумерное преобразование определяется посредством всего одной матрицы преобразования.[0097] In the above equation, C and R denote MxM and NxN transformation matrix data, respectively. From the formulation, C applies one-dimensional transformations to column vectors X, while R applies one-dimensional transformations to row vectors X. In this summary, for simplicity, C and R are denoted as left (vertical) and right (horizontal) transformations , and they form a pair of transformations. Cases arise when C is equal to R and is an orthogonal matrix. In such a case, the separable two-dimensional transformation is defined by just one transformation matrix.

[0098] Неразделимое двумерное преобразование сначала реорганизует все элементы X в один вектор, а именно, X', посредством выполнения следующего математического преобразования в качестве примера:[0098] An inseparable two-dimensional transformation first reorganizes all elements of X into a single vector, namely, X', by performing the following mathematical transformation as an example:

[0099] Затем одномерное преобразование T' применяется для X', как указано ниже:[0099] The one-dimensional transformation T' is then applied to X' as follows:

[0100] В вышеприведенном уравнении, T' является матрицей преобразования (M*N)x(M*N).[0100] In the above equation, T' is the transformation matrix (M*N)x(M*N).

[0101] При кодировании видео, всегда применяются разделимые двумерные преобразования, поскольку двумерные преобразования требуют гораздо меньшего количества чисел операций (суммирования, умножения) по сравнению с одномерным преобразованием.[0101] When encoding video, separable two-dimensional transforms are always used, since two-dimensional transforms require much fewer numbers of operations (sum, multiply) compared to one-dimensional transform.

[0102] Далее описывается типы преобразования, применяемые в HEVC. В некоторых видеокодеках, к примеру, H.264/AVC, целочисленная аппроксимация 4-точечного и 8-точечного дискретного косинусного преобразования (DCT) тип II всегда применяется для остатка внутреннего и взаимного прогнозирования. Чтобы лучше приспосабливать различную статистику остаточных выборок, более гибкие типы преобразований, отличные от DCT-типа II, используются в видеокодеке последующего поколения. Например, в HEVC, целочисленная аппроксимация 4-точечного дискретного синусного преобразования (DST) типа-VII используется для остатка внутреннего прогнозирования, при этом в работе S.A. Martucci "Symmetric convolution and the discrete sine and cosine transforms", IEEE Trans. Sig. Processing, 1038-1051 (1994 год) теоретически доказывается и экспериментально проверяется то, что DST-тип VII является более эффективным, чем DCT-тип II для остаточных векторов, сформированных вдоль направлений внутреннего прогнозирования (например, DST-тип VII является более эффективным, чем DCT-тип II для остаточных векторов-строк, сформированных посредством направления горизонтального внутреннего прогнозирования). В HEVC, целочисленная аппроксимация 4-точечного DST-типа VII применяется только для остаточных блоков внутреннего прогнозирования сигналов яркости 4×4. 4-точечное DST-VII, используемое в HEVC, показывается ниже:[0102] The following describes the types of conversion used in HEVC. In some video codecs, such as H.264/AVC, the 4-point and 8-point discrete cosine transform (DCT) Type II integer approximation is always used for the intra-prediction and inter-prediction residuals. To better accommodate different residual sample statistics, more flexible transform types other than DCT Type II are used in the next generation video codec. For example, in HEVC, a 4-point discrete sine transform (DST) type-VII integer approximation is used for the intra-prediction residual, while the work of S.A. Martucci "Symmetric convolution and the discrete sine and cosine transforms", IEEE Trans. Sig. Processing, 1038-1051 (1994) theoretically proves and experimentally verifies that DST Type VII is more efficient than DCT Type II for residual vectors formed along the internal prediction directions (e.g., DST Type VII is more efficient than DCT type II for residual row vectors generated by horizontal intraprediction direction). In HEVC, the 4-point DST-type VII integer approximation is applied only to the residual 4x4 luminance signal prediction blocks. The 4-point DST-VII used in HEVC is shown below:

DST-VII 4×4:DST-VII 4x4:

{29, 55, 74, 84}{29, 55, 74, 84}

{74, 74, 0, -74}{74, 74, 0, -74}

{84, -29, -74, 55}{84, -29, -74, 55}

{55, -84, 74, -29}{55, -84, 74, -29}

[0103] В HEVC, для остаточных блоков, которые не представляют собой остаточные блоки внутреннего прогнозирования сигналов яркости 4×4, целочисленные аппроксимации 4-точечного, 8-точечного, 16-точечного и 32-точечного DCT-типа II также применяются, как показано ниже:[0103] In HEVC, for residual blocks that are not 4x4 intra-luminance signal prediction residual blocks, 4-point, 8-point, 16-point, and 32-point Type II DCT integer approximations are also applied as shown below:

4-точечное DCT-II:4-point DCT-II:

{64, 64, 64, 64}{64, 64, 64, 64}

{83, 36,-36,-83}{83, 36,-36,-83}

{64,-64,-64, 64}{64,-64,-64, 64}

{36,-83, 83,-36}{36,-83, 83,-36}

8-точечное DCT-II:8-point DCT-II:

{64, 64, 64, 64, 64, 64, 64, 64}{64, 64, 64, 64, 64, 64, 64, 64}

{89, 75, 50, 18,-18,-50,-75,-89}{89, 75, 50, 18,-18,-50,-75,-89}

{83, 36,-36,-83,-83,-36, 36, 83}{83, 36,-36,-83,-83,-36, 36, 83}

{75,-18,-89,-50, 50, 89, 18,-75}{75,-18,-89,-50, 50, 89, 18,-75}

{64,-64,-64, 64, 64,-64,-64, 64}{64,-64,-64, 64, 64,-64,-64, 64}

{50,-89, 18, 75,-75,-18, 89,-50}{50,-89, 18, 75,-75,-18, 89,-50}

{36,-83, 83,-36,-36, 83,-83, 36}{36,-83, 83,-36,-36, 83,-83, 36}

{18,-50, 75,-89, 89,-75, 50,-18}{18,-50, 75,-89, 89,-75, 50,-18}

16-точечное DCT-II:16-point DCT-II:

{64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}{64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64}

{90, 87, 80, 70, 57, 43, 25, 9, -9,-25,-43,-57,-70,-80,-87,-90}{90, 87, 80, 70, 57, 43, 25, 9, -9,-25,-43,-57,-70,-80,-87,-90}

{89, 75, 50, 18,-18,-50,-75,-89,-89,-75,-50,-18, 18, 50, 75, 89}{89, 75, 50, 18,-18,-50,-75,-89,-89,-75,-50,-18, 18, 50, 75, 89}

{87, 57, 9,-43,-80,-90,-70,-25, 25, 70, 90, 80, 43, -9,-57,-87}{87, 57, 9,-43,-80,-90,-70,-25, 25, 70, 90, 80, 43, -9,-57,-87}

{83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83}{83, 36,-36,-83,-83,-36, 36, 83, 83, 36,-36,-83,-83,-36, 36, 83}

{80, 9,-70,-87,-25, 57, 90, 43,-43,-90,-57, 25, 87, 70, -9,-80}{80, 9,-70,-87,-25, 57, 90, 43,-43,-90,-57, 25, 87, 70, -9,-80}

{75,-18,-89,-50, 50, 89, 18,-75,-75, 18, 89, 50,-50,-89,-18, 75}{75,-18,-89,-50, 50, 89, 18,-75,-75, 18, 89, 50,-50,-89,-18, 75}

{70,-43,-87, 9, 90, 25,-80,-57, 57, 80,-25,-90, -9, 87, 43,-70}{70,-43,-87, 9, 90, 25,-80,-57, 57, 80,-25,-90, -9, 87, 43,-70}

{64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64}{64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64, 64,-64,-64, 64}

{57,-80,-25, 90, -9,-87, 43, 70,-70,-43, 87, 9,-90, 25, 80,-57}{57,-80,-25, 90, -9,-87, 43, 70,-70,-43, 87, 9,-90, 25, 80,-57}

{50,-89, 18, 75,-75,-18, 89,-50,-50, 89,-18,-75, 75, 18,-89, 50}{50,-89, 18, 75,-75,-18, 89,-50,-50, 89,-18,-75, 75, 18,-89, 50}

{43,-90, 57, 25,-87, 70, 9,-80, 80, -9,-70, 87,-25,-57, 90,-43}{43,-90, 57, 25,-87, 70, 9,-80, 80, -9,-70, 87,-25,-57, 90,-43}

{36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36}{36,-83, 83,-36,-36, 83,-83, 36, 36,-83, 83,-36,-36, 83,-83, 36}

{25,-70, 90,-80, 43, 9,-57, 87,-87, 57, -9,-43, 80,-90, 70,-25}{25,-70, 90,-80, 43, 9,-57, 87,-87, 57, -9,-43, 80,-90, 70,-25}

{18,-50, 75,-89, 89,-75, 50,-18,-18, 50,-75, 89,-89, 75,-50, 18}{18,-50, 75,-89, 89,-75, 50,-18,-18, 50,-75, 89,-89, 75,-50, 18}

{9, -25, 43,-57, 70,-80, 87,-90, 90,-87, 80,-70, 57,-43, 25, -9}{9, -25, 43,-57, 70,-80, 87,-90, 90,-87, 80,-70, 57,-43, 25, -9}

32-точечное DCT-II:32-point DCT-II:

{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,6,64,64,64,64}{64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64,64 ,64,64,6,64,64,64,64}

{90,90,88,85,82,78,73,67,61,54,46,38,31,22,13,4,-4,-13,-22,-31,-38,-46,-54,-61,-67,-73,-78,-82,-85,-88,-90,-90}{90,90,88,85,82,78,73,67,61,54,46,38,31,22,13,4,-4,-13,-22,-31,-38,-46 ,-54,-61,-67,-73,-78,-82,-85,-88,-90,-90}

{90,87,80,70,57,43,25,9,-9,-25,-43,-57,-70,-80,-87,-90,-90,-87,-80,-70,-57,-43,-25,-9,9,25,43,57,70,80,87,90}{90,87,80,70,57,43,25,9,-9,-25,-43,-57,-70,-80,-87,-90,-90,-87,-80, -70,-57,-43,-25,-9,9,25,43,57,70,80,87,90}

{90,82,67,46,22,-4,-31,-54,-73,-85,-90,-88,-78,-61,-38,-13,13,38,61,78,88,90,85,73,54,31,4,-22,-46,-67,-82,-90}{90,82,67,46,22,-4,-31,-54,-73,-85,-90,-88,-78,-61,-38,-13,13,38,61, 78,88,90,85,73,54,31,4,-22,-46,-67,-82,-90}

{89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89,89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89}{89,75,50,18,-18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89,89,75,50,18,- 18,-50,-75,-89,-89,-75,-50,-18,18,50,75,89}

{88,67,31,-13,-54,-82,-90,-78,-46,-4,38,73,90,85,61,22,-22,-61,-85,-90,-73,-38,4,46,78,90,82,54,13,-31,-67,-88}{88,67,31,-13,-54,-82,-90,-78,-46,-4,38,73,90,85,61,22,-22,-61,-85,- 90,-73,-38,4,46,78,90,82,54,13,-31,-67,-88}

{87,57,9,-43,-80,-90,-70,-25,25,70,90,80,43,-9,-57,-87,-87,-57,-9,43,80,90,70,25,-25,-70,-90,-80,-43,9,57,87}{87,57,9,-43,-80,-90,-70,-25,25,70,90,80,43,-9,-57,-87,-87,-57,-9, 43,80,90,70,25,-25,-70,-90,-80,-43,9,57,87}

{85,46,-13,-67,-90,-73,-22,38,82,88,54,-4,-61,-90,-78,-31,31,78,90,61,4,-54,-88,-82,-38,22,73,90,67,13,-46,-85}{85,46,-13,-67,-90,-73,-22,38,82,88,54,-4,-61,-90,-78,-31,31,78,90,61 ,4,-54,-88,-82,-38,22,73,90,67,13,-46,-85}

{83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83}{83,36,-36,-83,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83,83,36,-36,-83 ,-83,-36,36,83,83,36,-36,-83,-83,-36,36,83}

{82,22,-54,-90,-61,13,78,85,31,-46,-90,-67,4,73,88,38,-38,-88,-73,-4,67,90,46,-31,-85,-78,-13,61,90,54,-22,-82}{82,22,-54,-90,-61,13,78,85,31,-46,-90,-67,4,73,88,38,-38,-88,-73,-4 ,67,90,46,-31,-85,-78,-13,61,90,54,-22,-82}

{80,9,-70,-87,-25,57,90,43,-43,-90,-57,25,87,70,-9,-80,-80,-9,70,87,25,-57,-90,-43,43,90,57,-25,-87,-70,9,80}{80,9,-70,-87,-25,57,90,43,-43,-90,-57,25,87,70,-9,-80,-80,-9,70,87 ,25,-57,-90,-43,43,90,57,-25,-87,-70,9,80}

{78,-4,-82,-73,13,85,67,-22,-88,-61,31,90,54,-38,-90,-46,46,90,38,-54,-90,-31,61,88,22,-67,-85,-13,73,82,4,-78}{78,-4,-82,-73,13,85,67,-22,-88,-61,31,90,54,-38,-90,-46,46,90,38,-54 ,-90,-31,61,88,22,-67,-85,-13,73,82,4,-78}

{75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75,75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75}{75,-18,-89,-50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75,75,-18,-89,- 50,50,89,18,-75,-75,18,89,50,-50,-89,-18,75}

{73,-31,-90,-22,78,67,-38,-90,-13,82,61,-46,-88,-4,85,54,-54,-85,4,88,46,-61,-82,13,90,38,-67,-78,22,90,31,-73}{73,-31,-90,-22,78,67,-38,-90,-13,82,61,-46,-88,-4,85,54,-54,-85,4, 88,46,-61,-82,13,90,38,-67,-78,22,90,31,-73}

{70,-43,-87,9,90,25,-80,-57,57,80,-25,-90,-9,87,43,-70,-70,43,87,-9,-90,-25,80,57,-57,-80,25,90,9,-87,-43,70}{70,-43,-87,9,90,25,-80,-57,57,80,-25,-90,-9,87,43,-70,-70,43,87,-9 ,-90,-25,80,57,-57,-80,25,90,9,-87,-43,70}

{67,-54,-78,38,85,-22,-90,4,90,13,-88,-31,82,46,-73,-61,61,73,-46,-82,31,88,-13,-90,-4,90,22,-85,-38,78,54,-67}{67,-54,-78,38,85,-22,-90,4,90,13,-88,-31,82,46,-73,-61,61,73,-46,-82 ,31,88,-13,-90,-4,90,22,-85,-38,78,54,-67}

{64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64}{64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64 ,64,-64,-64,64,64,-64,-64,64,64,-64,-64,64}

{61,-73,-46,82,31,-88,-13,90,-4,-90,22,85,-38,-78,54,67,-67,-54,78,38,-85,-22,90,4,-90,13,88,-31,-82,46,73,-61}{61,-73,-46,82,31,-88,-13,90,-4,-90,22,85,-38,-78,54,67,-67,-54,78,38 ,-85,-22,90,4,-90,13,88,-31,-82,46,73,-61}

{57,-80,-25,90,-9,-87,43,70,-70,-43,87,9,-90,25,80,-57,-57,80,25,-90,9,87,-43,-70,70,43,-87,-9,90,-25,-80,57}{57,-80,-25,90,-9,-87,43,70,-70,-43,87,9,-90,25,80,-57,-57,80,25,-90 ,9.87,-43,-70,70.43,-87,-9.90,-25,-80.57}

{54,-85,-4,88,-46,-61,82,13,-90,38,67,-78,-22,90,-31,-73,73,31,-90,22,78,-67,-38,90,-13,-82,61,46,-88,4,85,-54}{54,-85,-4.88,-46,-61,82,13,-90,38,67,-78,-22,90,-31,-73,73,31,-90,22 ,78,-67,-38,90,-13,-82,61,46,-88,4,85,-54}

{50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50,50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50}{50,-89,18,75,-75,-18,89,-50,-50,89,-18,-75,75,18,-89,50,50,-89,18,75, -75,-18.89,-50,-50.89,-18,-75.75,18,-89.50}

{46,-90,38,54,-90,31,61,-88,22,67,-85,13,73,-82,4,78,-78,-4,82,-73,-13,85,-67,-22,88,-61,-31,90,-54,-38,90,-46}{46,-90,38,54,-90,31,61,-88,22,67,-85,13,73,-82,4,78,-78,-4,82,-73,- 13.85,-67,-22.88,-61,-31.90,-54,-38.90,-46}

{43,-90,57,25,-87,70,9,-80,80,-9,-70,87,-25,-57,90,-43,-43,90,-57,-25,87,-70,-9,80,-80,9,70,-87,25,57,-90,43}{43,-90,57,25,-87,70,9,-80,80,-9,-70,87,-25,-57,90,-43,-43,90,-57,- 25.87,-70,-9.80,-80.9.70,-87.25.57,-90.43}

{38,-88,73,-4,-67,90,-46,-31,85,-78,13,61,-90,54,22,-82,82,-22,-54,90,-61,-13,78,-85,31,46,-90,67,4,-73,88,-38}{38,-88,73,-4,-67,90,-46,-31,85,-78,13,61,-90,54,22,-82,82,-22,-54,90 ,-61,-13.78,-85.31.46,-90.67.4,-73.88,-38}

{36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36}{36,-83,83,-36,-36,83,-83,36,36,-83,83,-36,-36,83,-83,36,36,-83,83,-36 ,-36.83,-83.36.36,-83.83,-36,-36.83,-83.36}

{31,-78,90,-61,4,54,-88,82,-38,-22,73,-90,67,-13,-46,85,-85,46,13,-67,90,-73,22,38,-82,88,-54,-4,61,-90,78,-31}{31,-78.90,-61.4.54,-88.82,-38,-22.73,-90.67,-13,-46.85,-85.46,13,-67 ,90,-73,22,38,-82,88,-54,-4,61,-90,78,-31}

{25,-70,90,-80,43,9,-57,87,-87,57,-9,-43,80,-90,70,-25,-25,70,-90,80,-43,-9,57,-87,87,-57,9,43,-80,90,-70,25}{25,-70.90,-80.43.9,-57.87,-87.57,-9,-43.80,-90.70,-25,-25.70,-90.80 ,-43,-9.57,-87.87,-57.9.43,-80.90,-70.25}

{22,-61,85,-90,73,-38,-4,46,-78,90,-82,54,-13,-31,67,-88,88,-67,31,13,-54,82,-90,78,-46,4,38,-73,90,-85,61,-22}{22,-61.85,-90.73,-38,-4.46,-78.90,-82.54,-13,-31.67,-88.88,-67.31,13 ,-54.82,-90.78,-46.4.38,-73.90,-85.61,-22}

{18,-50,75,-89,89,-75,50,-18,-18,50,-75,89,-89,75,-50,18,18,-50,75,-89,89,-75,50,-18,-18,50,-75,89,-89,75,-50,18}{18,-50.75,-89.89,-75.50,-18,-18.50,-75.89,-89.75,-50,18.18,-50.75,-89 ,89,-75.50,-18,-18.50,-75.89,-89.75,-50.18}

{13,-38,61,-78,88,-90,85,-73,54,-31,4,22,-46,67,-82,90,-90,82,-67,46,-22,-4,31,-54,73,-85,90,-88,78,-61,38,-13}{13,-38.61,-78.88,-90.85,-73.54,-31.4.22,-46.67,-82.90,-90.82,-67.46, -22,-4.31,-54.73,-85.90,-88.78,-61.38,-13}

{9,-25,43,-57,70,-80,87,-90,90,-87,80,-70,57,-43,25,-9,-9,25,-43,57,-70,80,-87,90,-90,87,-80,70,-57,43,-25,9}{9,-25.43,-57.70,-80.87,-90.90,-87.80,-70.57,-43.25,-9,-9.25,-43.57 ,-70.80,-87.90,-90.87,-80.70,-57.43,-25.9}

{4,-13,22,-31,38,-46,54,-61,67,-73,78,-82,85,-88,90,-90,90,-90,88,-85,82,-78,73,-67,61,-54,46,-38,31,-22,13,-4}{4,-13.22,-31.38,-46.54,-61.67,-73.78,-82.85,-88.90,-90.90,-90.88,-85 ,82,-78.73,-67.61,-54.46,-38.31,-22.13,-4}

[0104] Фиг. 3A и 3B являются концептуальными схемами, иллюстрирующими примерную схему преобразования на основе остаточного дерева квадрантов HEVC. В HEVC, структура кодирования с преобразованием с использованием остаточного дерева квадрантов (RQT) применяется, чтобы адаптировать различные характеристики остаточных блоков, что вкратце описывается в работе авторов J. Han, A. Saxena и K. Rose "Towards jointly optimal spatial prediction and adaptive transform in video/image coding", IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), март 2010 года, стр. 726-729. Дополнительная информация относительно RQT доступна по адресу: http://www.hhi.fraunhofer.de/fields-of-competence/image-processing/research-groups/image-video-coding/hevc-high-efficiency-video-coding/transform-coding-using-the-residual-quadtree-rqt.html. [0104] FIG. 3A and 3B are conceptual diagrams illustrating an exemplary HEVC residual quadtree conversion scheme. In HEVC, a residual quadtree transform (RQT) coding framework is used to adapt various characteristics of residual blocks, as summarized in J. Han, A. Saxena, and K. Rose, "Towards jointly optimal spatial prediction and adaptive transform" in video/image coding,” IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), March 2010, pp. 726–729. Further information regarding RQT is available at: http://www.hhi.fraunhofer.de/fields-of-competence/image-processing/research-groups/image-video-coding/hevc-high-efficiency-video-coding/ transform-coding-using-the-residual-quadtree-rqt.html.

[0105] В RQT каждый кадр разделяется на единицы дерева кодирования (CTU), которые кодируются в порядке растрового сканирования для конкретной плитки или среза. CTU представляет собой квадратный блок и представляет корень дерева квадрантов, т.е. дерева кодирования. CTU-размер может варьироваться от 8×8 до 64×64 выборок сигнала яркости, но типично используется 64×64. Каждая CTU дополнительно может разбиваться на меньшие квадратные блоки, называемые "единицами кодирования (CU)". После того, как CTU разбивается рекурсивно на CU, каждая CU дополнительно разделяется на единицы прогнозирования (PU) и единицы преобразования (TU). Сегментация CU на TU выполняется рекурсивно на основе подхода на основе дерева квадрантов, в силу чего остаточный сигнал каждой CU кодируется посредством древовидной структуры, а именно, остаточного дерева квадрантов (RQT). RQT обеспечивает возможность TU-размеров от 4×4 вплоть до 32×32 выборок сигнала яркости.[0105] In RQT, each frame is divided into coding tree units (CTUs), which are encoded in raster scan order for a particular tile or slice. CTU is a square block and represents the root of the quadtree, i.e. coding tree. The CTU size can vary from 8x8 to 64x64 luminance samples, but 64x64 is typically used. Each CTU can further be broken down into smaller square blocks called "coding units (CUs)". After the CTU is partitioned recursively into CUs, each CU is further partitioned into prediction units (PUs) and translation units (TUs). The segmentation of CUs into TUs is performed recursively based on a quadtree approach, whereby the residual signal of each CU is encoded through a tree structure, namely, a residual quadtree (RQT). RQT provides TU sizes from 4x4 up to 32x32 luminance samples.

[0106] Фиг. 3A иллюстрирует пример, в котором CU 134 включает в себя 10 TU, помеченных буквами a-j, и соответствующую сегментацию на блоки. Каждый узел RQT 136, показанного на фиг. 3B, фактически представляет собой единицу преобразования (TU), соответствующую фиг. 3A. Отдельные TU обрабатываются в порядке прохождения по дереву в глубину, который проиллюстрирован на фиг. 3A, в качестве алфавитного порядка, который соответствует рекурсивному Z-сканированию с прохождением в глубину. Подход на основе дерева квадрантов обеспечивает адаптацию преобразования к варьирующимся пространственно-частотным характеристикам остаточного сигнала.[0106] FIG. 3A illustrates an example in which CU 134 includes 10 TUs labeled a-j and corresponding block segmentation. Each node of the RQT 136 shown in FIG. 3B is actually a conversion unit (TU) corresponding to FIG. 3A. Individual TUs are processed in a depth-first order through the tree, which is illustrated in FIG. 3A, as an alphabetical order that corresponds to a depth-first recursive Z-scan. The quadtree approach adapts the transform to varying spatial frequency characteristics of the residual signal.

[0107] Типично, большие размеры блоков преобразования, которые имеют большую пространственную поддержку, предоставляют лучшее частотное разрешение. Тем не менее, меньшие размеры блоков преобразования, которые имеют меньшую пространственную поддержку, предоставляют лучшее пространственное разрешение. Компромисс между этими ними, пространственным и частотным разрешениями, выбирается посредством решения по выбору режима для кодера, например, на основе технологии оптимизации искажения в зависимости от скорости передачи. Технология оптимизации искажения в зависимости от скорости передачи вычисляет взвешенную сумму битов кодирования и искажения при восстановлении, т.е. функции затрат на искажение в зависимости от скорости передачи, для каждого режима кодирования (например, конкретной структуры RQT-разбиения), и выбирает режим кодирования с наименьшим функцией затрат на искажение в зависимости от скорости передачи в качестве оптимального режима.[0107] Typically, larger transform block sizes that have greater spatial support provide better frequency resolution. However, smaller transform block sizes, which have less spatial support, provide better spatial resolution. The trade-off between these spatial and frequency resolutions is made through a mode selection decision for the encoder, for example based on bit-rate distortion optimization techniques. Rate-based distortion optimization technology calculates the weighted sum of encoding bits and reconstruction distortion, i.e. a distortion cost function as a function of bit rate, for each encoding mode (eg, a particular RQT partitioning structure), and selects the encoding mode with the smallest distortion cost function as a function of bit rate as the optimal mode.

[0108] Три параметра задаются в RQT: максимальная глубина дерева, минимальный разрешенный размер преобразования и максимальный разрешенный размер преобразования. Минимальны и максимальный размеры преобразования могут варьироваться в диапазоне от 4×4 до 32×32 выборок, которые соответствуют поддерживаемым блочным преобразованиям, упомянутым в предыдущем параграфе. Максимальная разрешенная глубина RQT ограничивает число TU. Максимальная глубина, равная нулю, означает то, что блок кодирования (CB) не может разбиваться дальше, если каждая включенная TB достигает максимального разрешенного размера преобразования, например, 32×32.[0108] Three parameters are specified in the RQT: maximum tree depth, minimum allowed transform size, and maximum allowed transform size. The minimum and maximum transform sizes can range from 4x4 to 32x32 samples, which correspond to the supported block transforms mentioned in the previous paragraph. The maximum allowed RQT depth limits the number of TUs. A maximum depth of zero means that the coding block (CB) cannot be split further if each included TB reaches the maximum allowed transform size, for example 32x32.

[0109] Все эти параметры взаимодействуют и оказывают влияние на RQT-структуру. Рассмотрим случай, в котором корневой CB-размер составляет 64×64, максимальная глубина равна нулю, и максимальный размер преобразования равен 32×32. В этом случае, CB должен сегментироваться, по меньшей мере, один раз, поскольку в противном случае это должно приводить к TB 64×64, что не разрешается. RQT-параметры, т.е. максимальная RQT-глубина, минимальный и максимальный размер преобразования, передаются в потоке битов на уровне наборов параметров последовательности. Относительно RQT-глубины, различные значения могут указываться и передаваться в служебных сигналах для внутренних и взаимно кодированных CU.[0109] All of these parameters interact and influence the RQT structure. Consider the case where the root CB size is 64x64, the maximum depth is zero, and the maximum transform size is 32x32. In this case, the CB must be segmented at least once, since otherwise it would result in a 64x64 TB, which is not allowed. RQT parameters, i.e. The maximum RQT depth, the minimum and maximum transformation size, are transmitted in the bitstream at the sequence parameter set level. Regarding the RQT depth, different values may be indicated and signaled for internal and inter-encoded CUs.

[0110] Преобразование на основе дерева квадрантов применяется для внутренних и взаимных остаточных блоков. Типично, DCT-II-преобразование идентичного размера текущего сегмента остаточного дерева квадрантов применяется для остаточного блока. Тем не менее, если текущий блок остаточного дерева квадрантов составляет 4×4 и формируется посредством внутреннего прогнозирования, применяется вышеуказанное DST-VII-преобразование 4×4.[0110] Quadtree-based transformation is applied to internal and mutual residual blocks. Typically, a DCT-II transformation of identical size to the current segment of the residual quadtree is applied to the residual block. However, if the current block of the residual quadtree is 4x4 and is generated by intraprediction, the above 4x4 DST-VII transform is applied.

[0111] В HEVC, преобразования большего размера, например, преобразование 64×64, не приспосабливаются главным образом вследствие фактора своего ограниченного преимущества и относительно высокой сложности для видео относительно меньшего разрешения.[0111] In HEVC, larger transforms, such as 64x64 transforms, are not accommodated primarily due to their limited benefit and relatively high complexity for relatively lower resolution video.

[0112] Фиг. 4 является блок-схемой, иллюстрирующей примерную систему 140 для гибридного кодирования видео с адаптивным выбором преобразования. Примерные технологии, описанные в этом раскрытии сущности, являются применимыми к типичной схеме кодирования адаптивного преобразования, показанной на фиг. 4, в которой для каждого блока остатков прогнозирования, различные преобразования могут выбираться посредством кодера, и выбор преобразования кодируется как вспомогательная информация для передачи служебных сигналов.[0112] FIG. 4 is a block diagram illustrating an exemplary system 140 for hybrid video encoding with adaptive transform selection. The exemplary technologies described in this disclosure are applicable to the typical adaptive transform coding scheme shown in FIG. 4, in which, for each block of prediction residuals, various transforms can be selected by the encoder, and the transform selection is encoded as auxiliary information for signaling.

[0113] В этом примере, система 140 включает в себя модуль 142 разделения на блоки, модуль 144 блочного преобразования, модуль 146 квантования, модуль 148 блочного прогнозирования, гребенку 150 преобразований, модуль 152 энтропийного кодирования, буфер 154 кинокадров, модуль 156 обратного преобразования, модуль 158 обратного квантования, модуль 160 формирования остатков и модуль 162 блочного воспроизведения.[0113] In this example, system 140 includes a block division module 142, a block transform module 144, a quantization module 146, a block prediction module 148, a transform comb 150, an entropy encoding module 152, a movie frame buffer 154, an inverse transform module 156, an inverse quantization module 158, a residual generation module 160, and a block reproduction module 162.

[0114] В общем, модуль 142 разделения на блоки формирует блоки из кадра (т.е. кинокадра) видеоданных. Модуль 148 блочного прогнозирования формирует блок (p) прогнозирования для текущего блока, и модуль 160 формирования остатков формирует остаточный блок (r) из текущего (некодированного) блока и блока (p) прогнозирования. Буфер 154 кинокадров (также называется "буфером декодированных кадров (DPB)") сохраняет декодированные данные текущего кадра и ранее декодированных кинокадров, если таковые имеются. Модуль 148 блочного прогнозирования может формировать блок прогнозирования из ранее декодированных данных одного или более кадров, сохраненных в буфере 154 кинокадров.[0114] In general, the block division unit 142 generates blocks from a frame (ie, movie frame) of video data. The block prediction module 148 generates a prediction block (p) for the current block, and the residual generation module 160 generates a residual block (r) from the current (uncoded) block and the prediction block (p). A movie frame buffer 154 (also called a “decoded frame buffer (DPB)”) stores decoded data of the current frame and previously decoded movie frames, if any. Block prediction module 148 may generate a prediction block from previously decoded data of one or more frames stored in movie frame buffer 154 .

[0115] Модуль 144 блочного преобразования применяет одно или более преобразований (T(t)) к остаточному блоку, включающему в себя остаточные данные в пространственной области, чтобы формировать блок преобразования (T(t)r), который представляет остаточные данные в частотной области. Преобразование (T(t)), например, может представлять собой дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST), горизонтальные и/или вертикальные преобразования, преобразования Карунена-Лоэва (KLT) либо любое другое такое преобразование. Модуль 144 блочного преобразования предоставляет блок преобразования (T(t)r) в модуль 146 квантования и индикатор (t) преобразования в гребенку 150 преобразований и модуль 152 энтропийного кодирования. Гребенка 150 преобразований предоставляет одну или более матриц преобразования в модуль 144 блочного преобразования и модуль 156 обратного преобразования.[0115] Block transform unit 144 applies one or more transforms (T (t) ) to a residual block including spatial domain residual data to generate a transform block (T (t) r) that represents frequency domain residual data. . The transform (T (t) ), for example, may be a discrete cosine transform (DCT), a discrete sine transform (DST), horizontal and/or vertical transforms, Karhunen-Loeve transforms (KLT), or any other such transform. Block transform unit 144 provides a transform block (T (t) r) to quantization unit 146 and a transform indicator (t) to transform comb 150 and entropy encoding unit 152. Transform comb 150 provides one or more transformation matrices to block transform module 144 and inverse transform module 156.

[0116] В соответствии с технологиями этого раскрытия сущности, модуль 144 блочного преобразования может сегментировать остаточный блок текущего блока согласно типу дерева сегментации, к примеру, согласно одному из следующего: сегментация на основе дерева квадрантов, сегментация на основе двоичного дерева, сегментация на основе троичного дерева или сегментация на 4 TU, как пояснено ниже, на множество остаточных субблоков, и модуль блочного преобразования может предоставлять индикатор сегментации остаточного блока в модуль 152 энтропийного кодирования.[0116] In accordance with the techniques of this disclosure, block transform module 144 may segment the residual block of the current block according to a segmentation tree type, for example, according to one of the following: quadtree-based segmentation, binary-tree-based segmentation, ternary-based segmentation tree or 4-TU segmentation, as explained below, into a plurality of residual sub-blocks, and the block transform module may provide a segmentation indicator of the residual block to the entropy encoding module 152.

[0117] Модуль 146 квантования квантует коэффициенты преобразования блока преобразования и предоставляет квантованный блок преобразования в модуль 152 энтропийного кодирования и модуль 158 обратного квантования. Модуль 152 энтропийного кодирования кодирует представление синтаксических элементов, например, индикатор (t) преобразования, квантованные коэффициенты преобразования, информацию прогнозирования (например, режим прогнозирования и соответствующую информацию, такую как местоположение опорных данных, которые должны использоваться в режиме прогнозирования, например, информацию движения для взаимного прогнозирования).[0117] Quantization module 146 quantizes the transform coefficients of the transform block and provides the quantized transform block to entropy encoding module 152 and inverse quantization module 158 . The entropy encoding unit 152 encodes a representation of syntactic elements, for example, a transform indicator (t), quantized transform coefficients, prediction information (for example, a prediction mode, and related information such as the location of reference data to be used in the prediction mode, for example, motion information for mutual forecasting).

[0118] Модуль 152 энтропийного кодирования может использовать технологии этого раскрытия сущности, чтобы энтропийно кодировать синтаксические элементы, представляющие, для остаточного блока то, сегментируется или нет остаточный блок, и если остаточный блок сегментируется, то, как остаточный блок сегментируется. Модуль 152 энтропийного кодирования может кодировать для остаточного блока флаг, который передает в служебных сигналах то, сегментируется или нет остаточный блок. Когда остаточный блок сегментируется на множество субблоков, модуль 152 энтропийного кодирования также может кодировать значение индекса, которое указывает тип сегментации для остаточного блока. Например, модуль 144 блочного преобразования может быть выполнен с возможностью конструировать список, который включает в себя информацию для набора типов деревьев. Набор типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева. Набор типов деревьев также может включать в себя сегментацию на основе троичного дерева и сегментацию на 4 TU. Ниже подробнее описывается пример другого типа деревьев. Модуль 144 блочного преобразования может определять значение индекса, которое идентифицирует тип сегментации из набора типов деревьев, и модуль энтропийного кодирования 152 может кодировать значение индекса. Модуль 152 энтропийного кодирования также может кодировать любую другую информацию сегментации для остаточного блока, такую как то, остаточный блок горизонтально или вертикально сегментируется, то, является сегмент симметричным или асимметричным, и т.п.[0118] Entropy encoding module 152 may use the techniques of this disclosure to entropy encode syntax elements representing, for a residual block, whether or not the residual block is segmented, and if the residual block is segmented, how the residual block is segmented. Entropy encoding module 152 may encode a flag for the residual block that signals whether or not the residual block is segmented. When a residual block is segmented into a plurality of sub-blocks, the entropy encoding unit 152 may also encode an index value that indicates the segmentation type for the residual block. For example, block transform module 144 may be configured to construct a list that includes information for a set of tree types. The set of tree types includes one or more of quadtree segmentation and binary tree segmentation. The set of tree types may also include ternary tree segmentation and 4 TU segmentation. An example of another type of tree is described in more detail below. Block transform module 144 may determine an index value that identifies a segmentation type from a set of tree types, and entropy encoding module 152 may encode the index value. Entropy encoding unit 152 may also encode any other segmentation information for the residual block, such as whether the residual block is horizontally or vertically segmented, whether the segment is symmetrical or asymmetrical, and the like.

[0119] Модуль 158 обратного квантования может обратно квантовать (т.е. деквантовать) квантованные коэффициенты преобразования, принимаемые из модуля 146 квантования. Модуль 156 обратного преобразования может определять сегментацию остаточных блоков на основе энтропийно кодированных синтаксических элементов, которые указывают то, сегментируется или нет блок сегментов, и то, как он сегментируется, чтобы определять сегментацию остаточного блока, и может применять схему обратного преобразования к коэффициентам преобразования, принимаемым из модуля 158 обратного квантования для того, чтобы воспроизводить остаточный блок (r') для текущего блока. Модуль 162 блочного воспроизведения дополнительно комбинирует блок (p) прогнозирования из модуля 148 блочного прогнозирования с воспроизведенным остаточным блоком (r') для того, чтобы формировать декодированный блок, который сохраняется в буфере 154 кинокадров.[0119] The inverse quantization module 158 may inversely quantize (ie, dequantize) the quantized transform coefficients received from the quantization module 146. The inverse transform module 156 may determine the segmentation of residual blocks based on entropy encoded syntax elements that indicate whether or not a block of segments is segmented and how it is segmented to determine the segmentation of the residual block, and may apply an inverse transform scheme to the transform coefficients received from the inverse quantization unit 158 to reproduce a residual block (r') for the current block. The block reproduction unit 162 further combines the prediction block (p) from the block prediction unit 148 with the reproduced residual block (r') to generate a decoded block, which is stored in the movie frame buffer 154.

[0120] Технологии этого раскрытия сущности могут выполняться посредством системы 140 или соответствующей системы декодирования. В общем, технологии этого раскрытия сущности являются применимыми к схеме кодирования адаптивного преобразования, в которой, для каждого блока остатков прогнозирования, различные преобразования могут выбираться посредством видеокодера 200, передаваться в служебных сигналах в качестве вспомогательной информации и определяться посредством видеодекодера 300 с использованием вспомогательной информации. Вспомогательная информация представляет собой один пример и не должна считаться ограничением.[0120] The techniques for this disclosure may be performed by system 140 or a corresponding decoding system. In general, the techniques of this disclosure are applicable to an adaptive transform coding scheme in which, for each block of prediction residuals, various transforms may be selected by video encoder 200, signaled as auxiliary information, and determined by video decoder 300 using the auxiliary information. The Supporting Information provides one example only and should not be construed as limitation.

[0121] На практике, чтобы уменьшать вычислительную сложность, блочные преобразования обычно вычисляются разделимым способом, т.е. горизонтальные и вертикальные линии преобразуются независимо, как показано на фиг. 5A и 5B. Фиг. 5A и 5B являются концептуальными схемами, иллюстрирующими горизонтальные и вертикальные преобразования в качестве раздельной реализации преобразований. Фиг. 5A представляет набор из H горизонтальных преобразований 170, в то время как фиг. 5B представляет набор из W вертикальных преобразований 172. В частности, горизонтальные и вертикальные линии остаточных значений могут преобразовываться независимо с использованием горизонтальных преобразований 170 и вертикальных преобразований 172, соответственно.[0121] In practice, to reduce computational complexity, block transforms are typically computed in a separable manner, i.e. horizontal and vertical lines are converted independently, as shown in FIG. 5A and 5B. Fig. 5A and 5B are conceptual diagrams illustrating horizontal and vertical transformations as separate implementations of transformations. Fig. 5A represents a set of H horizontal transforms 170, while FIG. 5B represents a set of W vertical transforms 172. In particular, the horizontal and vertical lines of the residuals may be transformed independently using horizontal transforms 170 and vertical transforms 172, respectively.

[0122] В стандартах кодирования видео до HEVC, используется только фиксированное разделимое преобразование, при котором DCT-2 используется как вертикально, так и горизонтально. В HEVC, в дополнение к DCT-2, DST-7 также используется для блоков 4×4 в качестве фиксированного разделимого преобразования. Публикация патента (США) № 2016/0219290 и публикация патента (США) № 2018/0020218 относятся к адаптивным расширениям этих фиксированных преобразований, и пример AMT в публикации патента (США) № 2016/0219290 приспособлен в объединенной экспериментальной модели (JEM) Объединенной экспертной группы по видеостандартам (JVET) из работы авторов X. Zhao, J. Chen, M. Karczewicz, L. Zhang, X. Li and W.-J. Chien "Enhanced multiple transform for video coding", Proc. Data Compression Conference, стр. 73-82, март 2016 года.[0122] In video encoding standards prior to HEVC, only a fixed separable transform is used, in which DCT-2 is used both vertically and horizontally. In HEVC, in addition to DCT-2, DST-7 is also used for 4x4 blocks as a fixed separable transform. US Patent Publication No. 2016/0219290 and US Patent Publication No. 2018/0020218 refer to adaptive extensions of these fixed transformations, and the AMT example in US Patent Publication No. 2016/0219290 is fitted in the Joint Expert's Joint Experimental Model (JEM). Video Standards Team (JVET) from the work of authors X. Zhao, J. Chen, M. Karczewicz, L. Zhang, X. Li and W.-J. Chien "Enhanced multiple transform for video coding", Proc. Data Compression Conference, pp. 73-82, March 2016.

[0123] Проектные AMT-решения, описанные в публикации патента (США) № 2016/0219290 и в публикации патента (США) № 2018/0020218, предлагают 5 вариантов преобразования для видеокодера 200 для выбора в расчете на блок (этот выбор, в общем, проводится на основе показателя искажения в зависимости от скорости передачи). Затем индекс выбранного преобразования передается в служебных сигналах в видеодекодер 300.[0123] The AMT designs described in US Patent Publication No. 2016/0219290 and US Patent Publication No. 2018/0020218 offer 5 transform options for video encoder 200 to select per block (this selection is generally , is carried out on the basis of the distortion indicator depending on the transmission rate). The index of the selected transform is then signaled to video decoder 300.

[0124] Фиг. 6 является концептуальной схемой, иллюстрирующей передачу служебных сигналов преобразования. Например, фиг. 6 иллюстрирует передачу служебных сигналов, предложенную в публикации патента (США) № 2016/0219290 и в публикации патента (США) № 2018/0020218, при которой 1 бит используется для того, чтобы передавать в служебных сигналах преобразование по умолчанию, и 2 дополнительных бита (т.е. 3 бита всего) используются для того, чтобы передавать в служебных сигналах 4 преобразования. Например, одно из пяти преобразований (преобразований по умолчанию) передается в служебных сигналах с использованием 0 (т.е. 1 бита), и другие четыре преобразования передаются в служебных сигналах с использованием 3 битов (т.е. 100, 101, 110 и 111).[0124] FIG. 6 is a conceptual diagram illustrating transmission of conversion signaling. For example, FIG. 6 illustrates the signaling proposed in US Patent Publication No. 2016/0219290 and US Patent Publication No. 2018/0020218, in which 1 bit is used to carry the default mapping in the signaling signals, and 2 additional bits (i.e. 3 bits in total) are used to transmit 4 transformations in the service signals. For example, one of the five transforms (the default transforms) is signaled using 0 (i.e., 1 bit), and the other four transforms are signaled using 3 bits (i.e., 100, 101, 110, and 111).

[0125] В публикации патента (США) № 2016/0219290 и в публикации патента (США) № 2018/0020218, преобразование по умолчанию выбирается в качестве разделимого двумерного DCT, которое применяет DCT-2 как вертикально, так и горизонтально. Остальная часть AMT задается на основе информации внутреннего режима в публикации патента (США) № 2016/0219290. Публикация патента (США) № 2018/0020218 предлагает расширение публикации патента (США) № 2016/0219290 посредством задания набора этих 4 преобразований и на основе режима прогнозирования и на основе информации размера блока.[0125] In US Patent Publication No. 2016/0219290 and US Patent Publication No. 2018/0020218, the default transform is selected as a separable 2D DCT that applies DCT-2 both vertically and horizontally. The rest of the AMT is set based on the internal mode information in US Patent Publication No. 2016/0219290. US Patent Publication No. 2018/0020218 proposes an extension of US Patent Publication No. 2016/0219290 by specifying a set of these 4 transformations based on both prediction mode and block size information.

[0126] В версии опорного программного обеспечения VVC, VTM 3.0, используется схема передачи служебных сигналов, проиллюстрированная на фиг. 6. В частности, для каждой единицы кодирования (CU), (i) один бит (флаг) используется для того, чтобы определять то, используется или нет DCT2 в горизонтальном и вертикальном направлениях, либо (ii) два дополнительных бита (называются "AMT/MTS-индексами") используются для того, чтобы указывать одномерные преобразования, применяемые горизонтально или вертикально. Эти 4 преобразования задаются посредством назначения DST-7/DCT-8, которые должны применяться к строкам/столбцам данного блока. Например, MTS-индекс=0 соответствует разделимому преобразованию, которое применяет DST-7 как горизонтально, так и вертикально, и MTS-индекс=1 соответствует применению DCT-8 горизонтально и DST-7 вертикально.[0126] The VVC reference software version, VTM 3.0, uses the signaling scheme illustrated in FIG. 6. Specifically, for each coding unit (CU), (i) one bit (flag) is used to determine whether or not DCT2 is used in the horizontal and vertical directions, or (ii) two additional bits (called "AMT" /MTS indexes") are used to specify one-dimensional transformations to be applied horizontally or vertically. These 4 transformations are specified by assigning DST-7/DCT-8 to be applied to the rows/columns of a given block. For example, MTS-index=0 corresponds to a separable transform that applies DST-7 both horizontally and vertically, and MTS-index=1 corresponds to applying DCT-8 horizontally and DST-7 vertically.

[0127] В данный момент в VVC (и в опорном программном обеспечении VTM-3.0), схема преобразования может не иметь гибкого способа сегментации для единиц преобразования (TU), в котором размеры блоков преобразования являются идентичными размерам единиц кодирования (CU). На практике, лучшая производительность сжатия может достигаться с использованием технологий сегментации на TU, таких как RQT (описана выше), поскольку сегментация позволяет преобразованиям захватывать энергию, локализованную в другой области, через более гибкую сегментацию. Это раскрытие сущности раскрывает различные проектные решения по сегментации на основе дерева, приспосабливающие AMT/MTS-схему, в данный момент приспосабливаемую в VVC (VTM-3.0).[0127] Currently in VVC (and in the VTM-3.0 supporting software), the transform scheme may not have a flexible segmentation method for transform units (TUs), in which the sizes of transform blocks are identical to the sizes of coding units (CUs). In practice, better compression performance can be achieved using per-TU segmentation technologies such as RQT (described above), since segmentation allows transforms to capture energy localized in a different region through more flexible segmentation. This disclosure reveals various tree-based partitioning design solutions to accommodate the AMT/MTS scheme currently being adopted in VVC (VTM-3.0).

[0128] Аспекты настоящего раскрытия сущности описывают более гибкую схему сегментации для единиц преобразования (TU), которая обеспечивает возможность достижения большей производительности сжатия, и описывают то, как преобразования могут выбираться для таких сегментов. Примерные технологии могут выполняться посредством видеокодера 200 и/или видеодекодера 300. Для простоты, примеры описываются с помощью фиг. 7 и фиг. 8. Например, фиг. 7 является концептуальной схемой, иллюстрирующей соответствующую сегментацию на основе дерева для блока. Между тем, фиг. 8 является концептуальной схемой, иллюстрирующей примеры сегментации на основе дерева квадрантов, сегментации на основе двоичного дерева и сегментации на основе троичного дерева. Как показано на фиг. 8, при сегментации на основе троичного дерева, единица преобразования (TU), такая как блок 192A или блок 192B, сегментируется на три суб-TU (например, P0, P1 и P2). При сегментации на основе дерева квадрантов, TU, такая как блок 192C, сегментируется на четыре суб-TU (например, P0, P1, P2 и P3), которые являются квадратными. При сегментации на основе двоичного дерева, TU, такая как блок 192D, блок 192E, блок 192F и или блок 192D, сегментируется на две суб-TU (например, P0 и P1).[0128] Aspects of the present disclosure describe a more flexible segmentation scheme for transform units (TUs) that allows greater compression performance to be achieved, and describe how transforms can be selected for such segments. Exemplary technologies may be implemented by video encoder 200 and/or video decoder 300. For simplicity, examples are described using FIGS. 7 and fig. 8. For example, FIG. 7 is a conceptual diagram illustrating a corresponding tree-based segmentation for a block. Meanwhile, FIG. 8 is a conceptual diagram illustrating examples of quadtree segmentation, binary tree segmentation, and ternary tree segmentation. As shown in FIG. 8, in ternary tree-based segmentation, a transformation unit (TU) such as block 192A or block 192B is segmented into three sub-TUs (eg, P0, P1, and P2). In quadtree-based segmentation, a TU such as block 192C is segmented into four sub-TUs (eg, P0, P1, P2, and P3) that are square. In binary tree-based segmentation, a TU such as block 192D, block 192E, block 192F, and or block 192D is segmented into two sub-TUs (eg, P0 and P1).

[0129] TU может сегментироваться на одном уровне или на нескольких уровнях (глубины>0). Таким образом, TU может сегментироваться на множество суб-TU, и одна или более из множества суб-TU непосредственно могут дополнительно сегментироваться, и т.д. Альтернативно, TU может не сегментироваться, и размер блока для TU может быть идентичным размеру блока для CU (глубина=0). В ходе этого раскрытия сущности, используется термин "остаточный блок" и "остаточные субблоки". Следует понимать, что TU представляет собой пример остаточного блока, и множество суб-TU представляют собой пример множества остаточных субблоков, и что технологии, поясненные в данном документе относительно остаточного блока, являются в равной степени применимыми к TU. Аналогично, технологии, поясненные в данном документе относительно TU, также являются в равной степени применимыми к остаточному блоку.[0129] The TU may be segmented at one level or at multiple levels (depths > 0). Thus, a TU may be segmented into a plurality of sub-TUs, and one or more of the plurality of sub-TUs itself may be further segmented, and so on. Alternatively, the TU may not be segmented, and the block size for the TU may be identical to the block size for the CU (depth=0). Throughout this disclosure, the term "residual block" and "residual subblocks" are used. It should be understood that a TU is an example of a residual unit, and a plurality of sub-TUs are an example of a plurality of residual subunits, and that the technologies explained herein with respect to a residual unit are equally applicable to the TU. Likewise, the technologies explained herein regarding the TU are also equally applicable to the residual block.

[0130] TU на определенном уровне сегмента может сегментироваться на основе дерева. Примеры деревьев и соответствующих сегментов включают в себя примеры, проиллюстрированные на фиг. 7. Например, сегментация 181A на основе дерева квадрантов представляет собой сегментацию блока на основе дерева 182 квадрантов, при которой квадратная или неквадратная TU сегментируется на четыре суб-TU посредством сегментации TU как горизонтально, так и вертикально. Например, блок 190A сегментируется согласно сегментации 181A на основе дерева квадрантов на четыре квадратных блока одинакового размера. Сегментация 181B на 4 TU представляет собой сегментацию блока на основе дерева 184 квадрантов, при которой квадратная или неквадратная TU сегментируется на четыре суб-TU посредством только горизонтальной сегментации TU или посредством только вертикальной сегментации TU. Например, блок 190B вертикально сегментируется согласно сегментации на 4 TU на четыре вертикальных прямоугольных сегмента, и блок 190C горизонтально сегментируется согласно сегментации на 4 TU на четыре горизонтальных прямоугольных сегмента. В связи с этим, остаточный блок, такой как TU, может сегментироваться согласно, по меньшей мере, одному из следующего: сегментация 181A на основе дерева квадрантов, сегментация 181B на 4 TU.[0130] TUs at a particular segment level may be segmented on a tree basis. Examples of trees and corresponding segments include those illustrated in FIG. 7. For example, quadtree-based segmentation 181A is a quadtree-based block segmentation 182 in which a square or non-square TU is segmented into four sub-TUs by segmenting the TUs both horizontally and vertically. For example, block 190A is segmented according to quadtree-based segmentation 181A into four square blocks of equal size. The 4-TU segmentation 181B is a 184-quadrant tree-based block segmentation in which a square or non-square TU is segmented into four sub-TUs through horizontal TU segmentation only or through vertical TU segmentation only. For example, block 190B is vertically segmented according to 4-TU segmentation into four vertical rectangular segments, and block 190C is horizontally segmented according to 4-TU segmentation into four horizontal rectangular segments. In this regard, a residual block such as a TU may be segmented according to at least one of the following: quadtree-based segmentation 181A, 4-TU segmentation 181B.

[0131] Сегментация 181C на основе двоичного дерева представляет собой сегментацию блока на основе двоичного дерева 186, при которой квадратная или неквадратная TU сегментируется на две суб-TU, которые получаются посредством сегментации TU горизонтально или вертикально. Блоки 190D и 190G вертикально сегментируются согласно сегментации 181C на основе двоичного дерева на два вертикальных прямоугольных сегмента, тогда как блоки 190E и 190F горизонтально сегментируются согласно сегментации 181C на основе двоичного дерева на два горизонтальных прямоугольных сегмента. Блоки 190D и 190E симметрично сегментируются, чтобы приводить к блокам 190D и 190E, имеющим два сегмента идентичного размера. Между тем, блоки 190F и 190G асимметрично сегментируются, чтобы приводить к блокам 190F и 190G, имеющим два сегмента различных размеров. В связи с этим, остаточный блок, такой как TU, может сегментироваться согласно сегментации на основе 181C двоичного дерева. Сегментация 181D на основе троичного дерева (также называется "сегментацией на основе третичного дерева") представляет собой сегментацию блока на основе троичного дерева 188 (также известного как третичное дерево), при которой квадратная или неквадратная TU сегментируется на три суб-TU, которые получаются посредством сегментации TU или горизонтально или вертикально в двух отдельных местоположениях. Например, блок 190H горизонтально сегментируется согласно сегментации на основе троичного дерева на три горизонтальных прямоугольных сегмента, в то время как блок 190I вертикально сегментируется согласно сегментации на основе троичного дерева на три вертикальных прямоугольных сегмента. В связи с этим, остаточный блок, такой как TU, может сегментироваться согласно сегментации 181D на основе троичного дерева.[0131] Binary tree segmentation 181C is a block segmentation based on binary tree 186 in which a square or non-square TU is segmented into two sub-TUs that are obtained by segmenting the TU horizontally or vertically. Blocks 190D and 190G are vertically segmented according to binary tree segmentation 181C into two vertical rectangular segments, while blocks 190E and 190F are horizontally segmented according to binary tree segmentation 181C into two horizontal rectangular segments. Blocks 190D and 190E are symmetrically segmented to result in blocks 190D and 190E having two segments of identical size. Meanwhile, blocks 190F and 190G are asymmetrically segmented to result in blocks 190F and 190G having two segments of different sizes. In this regard, a residual block such as a TU may be segmented according to the binary tree-based segmentation 181C. Ternary tree-based segmentation 181D (also referred to as “tertiary tree-based segmentation”) is a block segmentation based on ternary tree 188 (also known as tertiary tree) in which a square or non-square TU is segmented into three sub-TUs that are obtained by TU segmentation either horizontally or vertically in two separate locations. For example, block 190H is horizontally segmented according to ternary tree segmentation into three horizontal rectangular segments, while block 190I is vertically segmented according to ternary tree segmentation into three vertical rectangular segments. In this regard, a residual block such as a TU may be segmented according to the ternary tree-based segmentation 181D.

[0132] Сегментация на TU может применяться к квадратным или неквадратным TU-блокам. Фиг. 7 иллюстрирует примерную сегментацию квадратных блоков, но технологии также являются применимыми к неквадратным блокам, так что прямоугольная и в силу этого неквадратная TU может одинаково сегментироваться согласно деревьям сегментации, описанным в ходе этого раскрытия сущности. Например, если квадратная TU сегментируется согласно двоичному дереву на две прямоугольных TU, одна или обе из прямоугольных TU также могут сегментироваться согласно одному из деревьев сегментации. В связи с этим, остаточный блок, такой как TU, может быть квадратным или неквадратным, и квадратные и неквадратные остаточные блоки могут одинаково сегментироваться согласно технологиям, раскрытым в данном документе.[0132] Per-TU segmentation can be applied to square or non-square TUs. Fig. 7 illustrates an exemplary segmentation of square blocks, but the techniques are also applicable to non-square blocks such that a rectangular and thereby a non-square TU can equally be segmented according to the segmentation trees described throughout this disclosure. For example, if a square TU is segmented according to a binary tree into two rectangular TUs, one or both of the rectangular TUs may also be segmented according to one of the segmentation trees. In this regard, a residual block such as a TU may be square or non-square, and square and non-square residual blocks can be equally segmented according to the techniques disclosed herein.

[0133] Для передачи в служебных сигналах информации сегментов, флаг (например, флаг разбиения) может передаваться в служебных сигналах в потоке битов, чтобы определять то, предусмотрено или нет разбиение на TU. Если TU сегментируется (т.е. если флаг разбиения активируется), дополнительная сегментация/информация разбиения может передаваться в служебных сигналах для того, чтобы указывать тип сегментации. Такая дополнительная информация индекса может представлять собой тип дерева (например, разбиение на основе дерева квадрантов, на основе двоичного дерева, на основе троичного дерева и/или на 4 TU).[0133] To signal segment information, a flag (eg, a split flag) may be signaled in a bitstream to determine whether or not splitting is provided on the TU. If the TU is segmented (ie, if the partition flag is activated), additional segmentation/partition information may be signaled to indicate the type of segmentation. Such additional index information may be a tree type (eg, quadtree-based, binary-tree-based, ternary-tree-based, and/or 4-TU partitioning).

[0134] Например, видеокодер 200 может определять то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков, и может кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется. Аналогично, видеодекодер может принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования.[0134] For example, video encoder 200 may determine that a residual block for a current block of video data is segmented according to a segmentation tree type into a plurality of residual subblocks, and may encode a stream of bits as an encoded representation of video data that signals information indicating whether it is segmented whether there is a residual block, and further signal information indicating the type of segmentation tree for the residual block that is segmented. Likewise, a video decoder may receive, in a bit stream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the residual block indicates a difference between the current block and the prediction block.

[0135] Для данного/передаваемого в служебных сигналах типа дерева, тип сегментации дополнительно может передаваться в служебных сигналах. Например, для случая троичного дерева (например, для сегментации 181D на основе троичного дерева), один бит может использоваться для того, чтобы указывать то, TU горизонтально разбивается, к примеру, в блоке 190H, или вертикально разбивается, к примеру, в блоке 190I. Для случаев двоичного дерева (например, для сегментации 181C на основе двоичного дерева), передача служебных сигналов может указывать то, TU горизонтально разбивается, к примеру, в блоках 190E и 190F, или вертикально разбивается, к примеру, в блоках 190D и 190G, а также то, TU симметрично разбивается, к примеру, в блоках 190D и 190E, или асимметрично разбивается, к примеру, в блоках 190F и 190G.[0135] For a given/signaled tree type, the segmentation type may further be signaled. For example, for a ternary tree case (eg, ternary tree-based segmentation 181D), one bit may be used to indicate whether the TU is horizontally split, for example, in block 190H, or vertically split, for example, in block 190I . For binary tree cases (eg, for binary tree segmentation 181C), the signaling may indicate whether the TU is horizontally split, for example, in blocks 190E and 190F, or vertically split, for example, in blocks 190D and 190G, and also, the TU is symmetrically split, for example, in blocks 190D and 190E, or asymmetrically split, for example, in blocks 190F and 190G.

Например, поток битов, который передает в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, может включать в себя информацию индекса в наборе типов деревьев, и информация набора типов деревьев может включать в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева. Дополнительно, когда информация, указывающая тип дерева сегментации для остаточного блока, указывает то, что тип дерева сегментации представляет собой одно из сегментации на основе двоичного дерева, поток битов дополнительно может передавать в служебных сигналах информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.For example, the bit stream that signals information indicating a segmentation tree type for a residual block may include index information in a tree type set, and the tree type set information may include one or more of quadtree-based segmentation and binary tree segmentation. Additionally, when the information indicating the segmentation tree type of the residual block indicates that the segmentation tree type is one of binary tree-based segmentation, the bit stream may further signal information indicating whether the residual block is horizontally split or vertically split .

[0136] В некоторых примерах, с учетом совокупности суб-TU, полученных после сегментации TU, флаги кодированных блоков (называются "cbfs" в VVC) могут логически выводиться и/или ограничиваться в зависимости от режима прогнозирования, типа дерева сегментации, типа сегментации или любой другой вспомогательной информации, которая кодируется в потоке битов. Например, суб-TU, обозначаемая как P1 в блоках 192A и 192B по фиг. 8 может ограничиваться таким образом, что она всегда имеет деактивированный CBF-флаг (флаг=0), так что передача в служебных сигналах cbf не требуется для P1. Аналогичная схема также может использоваться для того, чтобы логически выводить или ограничивать флаги пропуска преобразования для каждой суб-TU.[0136] In some examples, given the population of sub-TUs obtained after TU segmentation, coded block flags (called "cbfs" in VVC) may be inferred and/or constrained depending on the prediction mode, segmentation tree type, segmentation type, or any other ancillary information that is encoded in the bit stream. For example, the sub-TU referred to as P1 in blocks 192A and 192B of FIG. 8 may be constrained such that it always has the CBF flag disabled (flag=0), so that cbf signaling is not required for P1. A similar circuit can also be used to logically output or constrain conversion skip flags for each sub-TU.

[0137] В некоторых примерах, с учетом совокупности суб-TU, полученных после сегментации, AMT/MTS-индекс может передаваться в служебных сигналах для каждой суб-TU с тем, чтобы указывать разделимое преобразование, применяемое для этой суб-TU. Таким образом, несколько преобразований могут применяться к каждой суб-TU.[0137] In some examples, given the population of sub-TUs obtained after segmentation, an AMT/MTS index may be signaled for each sub-TU to indicate a separable mapping applied to that sub-TU. Thus, multiple transformations can be applied to each sub-TU.

[0138] В некоторых примерах, выбор преобразования, такой как AMT/MTS-индексы и/или флаг, по-прежнему может передаваться в служебных сигналах на TU-уровне, даже если TU разбивается на суб-TU. В этих примерах, каждая суб-TU может использовать выбор передаваемого в служебных сигналах преобразования. В этом случае, служебная информация может сохраняться для каждой суб-TU, и преимущества более точно детализированного преобразования по-прежнему могут использоваться.[0138] In some examples, mapping selections such as AMT/MTS indexes and/or flag may still be signaled at the TU layer even if the TU is broken down into sub-TUs. In these examples, each sub-TU may use a choice of signaled transformation. In this case, overhead information can be stored for each sub-TU, and the benefits of more finely detailed mapping can still be taken advantage of.

[0139] В некоторых примерах, с учетом совокупности суб-TU, полученных после сегментации, ядра преобразования для суб-TU могут ограничиваться или логически выводиться в горизонтальном направлении, в вертикальном направлении или в обоих направлениях. Один пример ограничения или логического вывода задается на основе режима прогнозирования, типа дерева сегментации, типа сегментации либо любой другой вспомогательной информации. В этом случае, AMT/MTS-индекс (или определение преобразования) может ограничиваться или логически выводиться на основе режима прогнозирования, типа дерева сегментации, типа сегментации или любой другой вспомогательной информации.[0139] In some examples, given the population of sub-TUs obtained after segmentation, the transformation kernels for the sub-TUs may be constrained or inferred in the horizontal direction, in the vertical direction, or in both directions. One example of a constraint or inference is specified based on the prediction mode, the segmentation tree type, the segmentation type, or any other supporting information. In this case, the AMT/MTS index (or transform definition) may be constrained or inferred based on the prediction mode, segmentation tree type, segmentation type, or any other supporting information.

[0140] В некоторых примерах, вместо ограничения или логического вывода определенного базиса преобразования, контекстное моделирование может применяться на основе правил ограничения/логического вывода. В одном примере, контекст назначается для случаев, когда ограничительное правило применяется, в таком случае, выбор преобразования по-прежнему является возможным (в отличие от того, когда этот выбор преобразования является невозможным вследствие ограничения), но контекст назначается, чтобы передавать в служебных сигналах такой выбор преобразования, поскольку результирующая служебная информация преобразования может более эффективно кодироваться, и все варианты выбора преобразования доступны. Назначенный контекст может представлять собой отличающийся отдельный контекст относительно уже существующего контекста в передаче служебных сигналов выбора преобразования.[0140] In some examples, instead of constraining or inferring a specific transformation basis, context modeling may be applied based on constraint/inference rules. In one example, a context is assigned for cases where a restrictive rule applies, in which case the transformation selection is still possible (as opposed to when that transformation selection is not possible due to the constraint), but the context is assigned to signal such a transform selection because the resulting transform overhead can be more efficiently encoded and all transform selection options are available. The assigned context may be a different separate context relative to a pre-existing context in transform selection signaling.

[0141] В нижеприведенных примерах ограничения, идентичные правила могут использоваться для контекстного назначения в объеме передачи служебных сигналов выбора преобразования. Примеры таких проектных решений включают в себя следующее.[0141] In the following constraint examples, identical rules may be used for context assignment within the scope of transform selection signaling. Examples of such design decisions include the following.

[0142] С учетом сегментированной на основе дерева квадрантов TU (как проиллюстрировано на фиг. 7 в качестве блока 190A и на фиг. 8 в качестве блока 192C), преобразование суб-TU P0 может ограничиваться таким образом, что DCT-8 используется как вертикально, так и горизонтально, преобразование Суб-TU P1 может ограничиваться таким образом, что DST-7 применяется горизонтально, и DST-8 используется вертикально, преобразование суб-TU P2 может ограничиваться таким образом, что DCT-8 применяется горизонтально, и DST-7 используется оба вертикально, преобразование P3 суб-TU может ограничиваться таким образом, что DST-7 используется как вертикально, так и горизонтально.[0142] Given a quadtree-segmented TU (as illustrated in FIG. 7 as block 190A and in FIG. 8 as block 192C), the P0 sub-TU mapping may be limited such that DCT-8 is used both vertically , and horizontally, Sub-TU P1 conversion may be limited such that DST-7 is applied horizontally and DST-8 is used vertically, Sub-TU P2 conversion may be limited such that DCT-8 is applied horizontally and DST-7 both are used vertically, the P3 sub-TU conversion can be limited so that DST-7 is used both vertically and horizontally.

[0143] С учетом сегментированной на основе дерева квадрантов TU (как проиллюстрировано на фиг. 7 в качестве блока 190A и на фиг. 8 в качестве блока 192C), все суб-TU (P0, P1, P2 и P3) могут ограничиваться таким образом, что DST-7 используется как вертикально, так и горизонтально. В другом примере, DCT-2 может использоваться вместо DST-7 или DCT-8.[0143] Given a quadtree-segmented TU (as illustrated in FIG. 7 as block 190A and in FIG. 8 as block 192C), all sub-TUs (P0, P1, P2, and P3) can be limited in this manner that DST-7 is used both vertically and horizontally. In another example, DCT-2 may be used instead of DST-7 or DCT-8.

[0144] С учетом сегментированной на основе двоичного дерева TU (как проиллюстрировано на фиг. 7 в качестве блоков 190D-190G и на фиг. 8 в качестве блоков 192D-192G), преобразование суб-TU может логически выводиться/ограничиваться следующим образом. Для горизонтальных разбиений, таких как блок 190E и 190F на фиг. 7 и блоки 192E и 192F на фиг. 8, DCT-2 может использоваться горизонтально, и DCT-8 может использоваться вертикально, чтобы преобразовывать суб-TU P0, и DCT-2 может использоваться горизонтально, и DST-7 может использоваться вертикально, чтобы преобразовывать Суб-TU P1. Для вертикальных разбиений, к примеру, проиллюстрированных на фиг. 7 в качестве блоков 190D и 190G и на фиг. 8 в качестве блоков 192D и 192G, DCT-8 может использоваться горизонтально, и DCT-2 может использоваться вертикально, чтобы преобразовывать суб-TU P0, и DST-7 может использоваться горизонтально, и DCT-2 может использоваться вертикально, чтобы преобразовывать Суб-TU P1. Вместо DCT-2, DST-7 или DCT-8 также могут использоваться в качестве преобразований для вышеуказанных двух случаев.[0144] Given a binary tree-segmented TU (as illustrated in FIG. 7 as blocks 190D-190G and in FIG. 8 as blocks 192D-192G), the sub-TU mapping can be inferred/constrained as follows. For horizontal splits such as block 190E and 190F in FIG. 7 and blocks 192E and 192F in FIG. 8, DCT-2 can be used horizontally and DCT-8 can be used vertically to convert P0 sub-TU, and DCT-2 can be used horizontally and DST-7 can be used vertically to convert P1 sub-TU. For vertical partitions, such as those illustrated in FIG. 7 as blocks 190D and 190G and in FIG. 8 as 192D and 192G units, DCT-8 can be used horizontally and DCT-2 can be used vertically to convert sub-TU P0, and DST-7 can be used horizontally and DCT-2 can be used vertically to convert sub-TU TU P1. Instead of DCT-2, DST-7 or DCT-8 can also be used as conversions for the above two cases.

[0145] Один либо комбинации вышеописанных способов могут использоваться только для внутренне прогнозированных CU. Один либо комбинации вышеописанных способов могут использоваться только для взаимно прогнозированных CU. Один либо комбинации вышеописанных способов могут использоваться как для внутренних, так и для взаимно прогнозированных CU. Один либо комбинации вышеописанных способов могут использоваться для каналов сигнала яркости или сигнала цветности либо для обоих каналов. Сегментация на TU и ассоциированная схема преобразования могут задаваться на основе одного либо комбинаций вышеописанных способов.[0145] One or combinations of the above methods can only be used for internally predicted CUs. One or combinations of the above methods can only be used for mutually predicted CUs. One or combinations of the above methods can be used for both internal and mutually predicted CUs. One or combinations of the above methods may be used for the luma or chrominance channels, or both. The TU segmentation and associated mapping scheme may be specified based on one or combinations of the methods described above.

[0146] Фиг. 9 является блок-схемой, иллюстрирующей примерный видеокодер 200, который может выполнять технологии этого раскрытия сущности. Фиг. 9 предоставляется для целей пояснения и не должен считаться ограничением технологий, проиллюстрированных и описанных в общих чертах в этом раскрытии сущности. Для целей пояснения, это раскрытие сущности описывает видеокодер 200 в контексте стандартов кодирования видео, таких как стандарт HEVC-кодирования видео и разрабатываемый стандарт кодирования видео H.266. Тем не менее, технологии этого раскрытия сущности не ограничены этими стандартами кодирования видео и являются, в общем, применимыми к кодированию и декодированию видео.[0146] FIG. 9 is a block diagram illustrating an example video encoder 200 that may implement the techniques of this disclosure. Fig. 9 is provided for explanatory purposes and should not be construed as limiting the technologies illustrated and described generally in this disclosure. For purposes of explanation, this disclosure describes video encoder 200 in the context of video encoding standards, such as the HEVC video encoding standard and the upcoming H.266 video encoding standard. However, the techniques of this disclosure are not limited to these video coding standards and are generally applicable to video encoding and decoding.

[0147] В примере по фиг. 9, видеокодер 200 включает в себя запоминающее устройство 230 видеоданных, модуль 202 выбора режима, модуль 204 формирования остатков, модуль 206 обработки преобразования, модуль 208 квантования, модуль 210 обратного квантования, модуль 212 обработки обратного преобразования, модуль 214 восстановления, модуль 216 фильтрации, буфер 218 декодированных кадров (DPB) и модуль 220 энтропийного кодирования. Любое из запоминающего устройства 230 видеоданных, модуля 202 выбора режима, модуля 204 формирования остатков, модуля 206 обработки преобразования, модуля 208 квантования, модуля 210 обратного квантования, модуля 212 обработки обратного преобразования, модуля 214 восстановления, модуля 216 фильтрации, DPB 218 и модуля 220 энтропийного кодирования может реализовываться в одном или более процессоров либо в схеме обработки. Например, модули видеокодера 200 могут реализовываться как одна или более схем или логических элементов в качестве части аппаратной схемы или в качестве части процессора, ASIC, FPGA. Кроме того, видеокодер 200 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.[0147] In the example of FIG. 9, the video encoder 200 includes a video data memory 230, a mode selection unit 202, a residual generation unit 204, a transform processing unit 206, a quantization unit 208, an inverse quantization unit 210, an inverse transform processing unit 212, a restoration unit 214, a filtering unit 216, a decoded frame buffer (DPB) 218 and an entropy encoding module 220. Any of the video data storage device 230, the mode selection unit 202, the residual generation unit 204, the transform processing unit 206, the quantization unit 208, the inverse quantization unit 210, the inverse transform processing unit 212, the restoration unit 214, the filtering unit 216, the DPB 218, and the unit 220 entropy encoding may be implemented in one or more processors or processing circuitry. For example, video encoder modules 200 may be implemented as one or more circuits or logic elements, as part of a hardware circuit, or as part of a processor, ASIC, FPGA. In addition, video encoder 200 may include additional or alternative processors or processing circuitry to perform these and other functions.

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

[0149] В этом раскрытии сущности, ссылка на запоминающее устройство 230 видеоданных не должна интерпретироваться как ограниченная запоминающим устройством, внутренним для видеокодера 200, если не описывается конкретно в таком качестве, или запоминающим устройством, внешним для видеокодера 200, если не описывается конкретно в таком качестве. Наоборот, ссылка на запоминающее устройство 230 видеоданных должна пониматься как опорное запоминающее устройство, которое сохраняет видеоданные, которые видеокодер 200 принимает для кодирования (например, видеоданные для текущего блока, который должен кодироваться). Запоминающее устройство 106 по фиг. 1 также может предоставлять временное хранение выводов из различных модулей видеокодера 200.[0149] In this disclosure, reference to video data storage device 230 should not be interpreted as limited to storage device internal to video encoder 200 unless specifically described as such, or storage device external to video encoder 200 unless specifically described as such. quality. Conversely, reference to video data storage device 230 is to be understood as a reference storage device 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.

[0150] Различные модули по фиг. 9 проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеокодера 200. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0150] Various modules of FIG. 9 are illustrated to assist in understanding the operations performed by the video encoder 200. The modules may be implemented as fixed function circuits, programmable circuits, or a combination of the above. Fixed function diagrams mean diagrams that provide specific functionality and are pre-established regarding the operations that can be performed. Programmable circuits mean circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that instructs the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed function diagrams can execute program instructions (for example, to accept parameters or output parameters), but the types of operations that fixed function diagrams 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.

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

[0152] Запоминающее устройство 230 видеоданных выполнено с возможностью сохранять принимаемые видеоданные. Видеокодер 200 может извлекать кадр видеоданных из запоминающего устройства 230 видеоданных и предоставлять видеоданные в модуль 204 формирования остатков и модуль 202 выбора режима. Видеоданные в запоминающем устройстве 230 видеоданных могут представлять собой необработанные видеоданные, которые должны кодироваться.[0152] The video data 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 generating unit 204 and the mode selecting unit 202 . The video data in the video data storage device 230 may be raw video data to be encoded.

[0153] Модуль 202 выбора режима включает в себя модуль 222 оценки движения, модуль 224 компенсации движения и модуль 226 внутреннего прогнозирования. Модуль 202 выбора режима может включать в себя дополнительные функциональные модули, чтобы выполнять прогнозирование видео в соответствии с другими режимами прогнозирования. В качестве примера, модуль 202 выбора режима может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может представлять собой часть модуля 222 оценки движения и/или модуля 224 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п.[0153] The mode selection unit 202 includes a motion estimation unit 222, a motion compensation unit 224, and an internal prediction unit 226. The mode selection module 202 may include additional functional modules to perform video prediction in accordance with other prediction modes. As an 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), an affine processing module, a linear model (LM) processing module ) and so on.

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

[0155] Видеокодер 200 может сегментировать кадр, извлеченный из запоминающего устройства 230 видеоданных, на последовательность CTU и инкапсулировать одну или более CTU в срезе. Модуль 202 выбора режима может сегментировать CTU кадра в соответствии с древовидной структурой, такой как QTBT-структура или структура в виде дерева квадрантов HEVC, описанного выше. Как описано выше, видеокодер 200 может формировать одну или более CU из сегментации CTU согласно древовидной структуре. Такая CU также, в общем, может называться "видеоблоком" или "блоком".[0155] Video encoder 200 may segment a frame retrieved from video data storage device 230 into a sequence of CTUs and encapsulate one or more CTUs in a slice. The mode selector 202 may segment the CTU of a frame according to a tree structure, such as a QTBT structure or the HEVC quadtree structure described above. As described above, video encoder 200 may generate one or more CUs from a CTU segmentation according to a tree structure. Such a CU may also generally be referred to as a "video unit" or "unit".

[0156] В общем, модуль 202 выбора режима также управляет своими компонентами (например, модулем 222 оценки движения, модулем 224 компенсации движения и модулем 226 внутреннего прогнозирования) таким образом, чтобы формировать прогнозный блок для текущего блока (например, текущей CU либо, в HEVC, перекрывающейся части PU и TU). Для взаимного прогнозирования текущего блока, модуль 222 оценки движения может выполнять поиск движения для того, чтобы идентифицировать один или более тесно совпадающих опорных блоков в одном или более опорных кадров (например, в одном или более ранее кодированных кадров, сохраненных в DPB 218). В частности, модуль 222 оценки движения может вычислять значение, представляющее то, насколько аналогичным является потенциальный опорный блок относительно текущего блока, например, согласно сумме абсолютных разностей (SAD), сумме квадратов разности (SSD), средней абсолютной разности (MAD), среднеквадратическим разностям (MSD) и т.п. Модуль 222 оценки движения, в общем, может выполнять эти вычисления с использованием последовательных выборочных разностей между текущим блоком и рассматриваемым опорным блоком. Модуль 222 оценки движения может идентифицировать опорный блок, имеющий наименьшее значение, получающееся в результате этих вычислений, указывающее опорный блок, который наиболее тесно совпадает с текущим блоком.[0156] In general, mode selection module 202 also controls its components (e.g., motion estimation module 222, motion compensation module 224, and internal prediction module 226) so as to generate a predictive block for the current block (e.g., the current CU or, in HEVC, overlapping part PU and TU). To mutually predict 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, in one or more previously encoded frames stored in DPB 218). In particular, motion estimation module 222 may calculate a value representing how similar a potential reference block is to a current block, for example, according to sum absolute differences (SAD), sum of squared differences (SSD), mean absolute difference (MAD), root mean square differences (MSD), etc. Motion estimation module 222 may generally perform these calculations using successive sample differences between the current block and the reference block in question. 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.

[0157] Модуль 222 оценки движения может формировать один или более векторов движения (MV), которые задают позиции опорных блоков в опорных кадрах относительно позиции текущего блока в текущем кадре. Модуль 222 оценки движения затем может предоставлять векторы движения в модуль 224 компенсации движения. Например, для однонаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять один вектор движения, тогда как для двунаправленного взаимного прогнозирования, модуль 222 оценки движения может предоставлять два вектора движения. Модуль 224 компенсации движения затем может формировать прогнозный блок с использованием векторов движения. Например, модуль 224 компенсации движения может извлекать данные опорного блока с использованием вектора движения. В качестве другого примера, если вектор движения имеет точность в дробную часть выборки, модуль 224 компенсации движения может интерполировать значения для прогнозного блока согласно одному или более интерполяционных фильтров. Кроме того, для двунаправленного взаимного прогнозирования, модуль 224 компенсации движения может извлекать данные для двух опорных блоков, идентифицированных посредством соответствующих векторов движения, и комбинировать извлеченные данные, например, посредством последовательного выборочного усреднения или усреднения со взвешиванием.[0157] 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 estimator 222 may provide one motion vector, whereas for bi-directional inter-prediction, motion estimator 222 may provide two motion vectors. Motion compensation module 224 can then generate a prediction block using the motion vectors. For example, motion compensation module 224 may extract reference block data using a motion vector. As another example, if the motion vector has fractional subsample precision, motion compensation module 224 may interpolate values for the prediction 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 corresponding motion vectors and combine the extracted data, for example, through sequential sample averaging or weighted averaging.

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

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

[0160] В примерах, в которых модуль 202 выбора режима сегментирует CU на PU, каждая PU может быть ассоциирована с единицей прогнозирования сигналов яркости и соответствующими единицами прогнозирования сигналов цветности. Видеокодер 200 и видеодекодер 300 могут поддерживать PU, имеющие различные размеры. Как указано выше, размер CU может означать размер блока кодирования сигналов яркости CU, и размер PU может означать размер единицы прогнозирования сигналов яркости PU. При условии, что размер конкретной CU составляет 2Nx2N, видеокодер 200 может поддерживать PU-размеры в 2Nx2N или NxN для внутреннего прогнозирования и симметричные PU-размеры в 2Nx2N, 2NxN, Nx2N, NxN или аналогичные для взаимного прогнозирования. Видеокодер 200 и видеодекодер 300 также могут поддерживать асимметричное сегментирование для PU-размеров в 2NxnU, 2NxnD, nLx2N и nRx2N для взаимного прогнозирования.[0160] In examples in which mode selection module 202 segments CUs into PUs, each PU may be associated with a luma prediction unit and corresponding chrominance prediction units. Video encoder 200 and video decoder 300 may support PUs having different sizes. As stated above, the CU size may refer to the size of a luminance signal coding unit of the CU, and the PU size may refer to the size of a luminance signal prediction unit of the PU. Assuming that the size of a particular CU 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 200 and video decoder 300 may also support asymmetric segmentation for PU sizes of 2NxnU, 2NxnD, nLx2N, and nRx2N for inter-prediction.

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

[0162] Для других технологий кодирования видео, таких как кодирование в режиме внутриблочного копирования, кодирование в аффинном режиме и кодирование в режиме на основе линейной модели (LM), в качестве нескольких примеров, модуль 202 выбора режима, через соответствующие модули, ассоциированные с технологиями кодирования, формирует прогнозный блок для кодируемого текущего блока. В некоторых примерах, таких как кодирование в палитровом режиме, модуль 202 выбора режима может не формировать прогнозный блок и вместо этого формировать синтаксические элементы, которые указывают способ, которым следует восстанавливать блок на основе выбранной палитры. В таких режимах, модуль 202 выбора режима может предоставлять эти синтаксические элементы в модуль 220 энтропийного кодирования для кодирования.[0162] For other video encoding technologies, such as intra-block copy mode encoding, affine mode encoding, and linear model (LM) mode encoding, as a few examples, mode selection module 202, through corresponding modules associated with the technologies encoding, generates a prediction block for the current block being encoded. In some examples, such as palette mode encoding, mode selection module 202 may not generate a predictive block and instead generate syntactic elements that indicate the manner in which the block should be reconstructed based on the selected palette. In such modes, mode selection module 202 may provide these syntactic elements to entropy encoding module 220 for encoding.

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

[0164] В соответствии с технологиями этого раскрытия сущности, в качестве части формирования остаточного блока (т.е. единицы преобразования) для текущего блока, модуль 204 формирования остатков может сегментировать остаточный блок для текущего блока на множество остаточных субблоков (т.е. единиц преобразования) согласно типу дерева сегментации. Модуль 204 формирования остатков может выполнять такую сегментацию для квадратных остаточных блоков, а также неквадратных остаточных блоков (например, прямоугольных остаточных блоков) для того, чтобы формировать квадратные, а также неквадратные остаточные субблоки, и модуль 204 формирования остатков также может сегментировать один или более остаточных субблоков.[0164] In accordance with the techniques of this disclosure, as part of generating a residual block (i.e., transformation unit) for the current block, residual generation module 204 may segment the residual block for the current block into a plurality of residual subblocks (i.e., units) transformations) according to the type of segmentation tree. The residual generation module 204 may perform such segmentation for square residual blocks as well as non-square residual blocks (eg, rectangular residual blocks) to generate square as well as non-square residual sub-blocks, and the residual generation module 204 may also segment one or more residual blocks. subblocks.

[0165] Как пояснено выше, блок сегментов может сегментироваться на остаточные субблоки согласно родному или более из следующего: сегментация на основе дерева квадрантов, сегментация на основе двоичного дерева, сегментация на основе троичного дерева или сегментация на 4 TU, к примеру, как показано на фиг. 7 и 8. В некоторых примерах, блок сегментов может сегментироваться на остаточные субблоки согласно одному или более из следующего: сегментация на основе дерева квадрантов или сегментация на основе двоичного дерева.[0165] As explained above, a block of segments may be segmented into residual subblocks according to native or more of the following: quadtree-based segmentation, binary-tree-based segmentation, ternary-tree-based segmentation, or 4-TU segmentation, for example, as shown in fig. 7 and 8. In some examples, a block of segments may be segmented into residual subblocks according to one or more of the following: quadtree segmentation or binary tree segmentation.

[0166] Когда модуль 204 формирования остатков сегментирует остаточный блок согласно сегментации на основе двоичного дерева, сегментации на основе троичного дерева или сегментации на 4 TU, модуль 204 формирования остатков может горизонтально разбивать остаточный блок или вертикально разбивать остаточный блок. Например, блоки 190C, 190E, 190F и 190H по фиг. 7 иллюстрируют примеры горизонтального разбиения, в то время как блоки 190B, 190D, 190G и 190I по фиг. 7 иллюстрируют примеры вертикального разбиения.[0166] When the residual generation unit 204 segments a residual block according to a binary tree-based segmentation, a ternary tree-based segmentation, or a 4-TU segmentation, the residual generation unit 204 may horizontally split the residual block or vertically split the residual block. For example, blocks 190C, 190E, 190F, and 190H of FIG. 7 illustrate examples of horizontal partitioning, while blocks 190B, 190D, 190G and 190I of FIG. 7 illustrate examples of vertical partitioning.

[0167] Когда модуль 204 формирования остатков сегментирует остаточный блок согласно сегментации на основе двоичного дерева или сегментации на основе троичного дерева, чтобы горизонтально разбивать или вертикально разбивать остаточный блок, модуль 204 формирования остатков может симметрично разбивать остаточный блок или может асимметрично разбивать остаточный блок. Например, блоки 190D и 190E по фиг. 7 иллюстрируют примеры симметричного разбиения, в то время как блоки 190F и 190G по фиг. 7 иллюстрируют примеры асимметричного разбиения.[0167] When the residual generation unit 204 segments the residual block according to the binary tree-based segmentation or the ternary tree-based segmentation to horizontally split or vertically split the residual block, the residual generation unit 204 may split the residual block symmetrically or may split the residual block asymmetrically. For example, blocks 190D and 190E of FIG. 7 illustrate examples of symmetric partitioning, while blocks 190F and 190G of FIG. 7 illustrate examples of asymmetric partitioning.

[0168] Модуль 206 обработки преобразования применяет одно или более преобразований к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования (называется в данном документе "блоком коэффициентов преобразования"). Модуль 206 обработки преобразования может применять различные преобразования к остаточному блоку для того, чтобы формировать блок коэффициентов преобразования. Например, модуль 206 обработки преобразования может применять дискретное косинусное преобразование (DCT), направленное преобразование, преобразование Карунена-Лоэва (KLT) или концептуально аналогичное преобразование к остаточному блоку. В некоторых примерах, модуль 206 обработки преобразования может выполнять несколько преобразований для остаточного блока, например, первичное преобразование и вторичное преобразование, такое как вращательное преобразование. В некоторых примерах, модуль 206 обработки преобразования не применяет преобразования к остаточному блоку.[0168] Transform processing unit 206 applies one or more transforms to the residual block to generate a block of transform coefficients (referred to herein as a “transform coefficient block”). The transform processing unit 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 directed transform, a Karhunen-Loeve transform (KLT), or a conceptually similar transform to the residual block. In some examples, transform processing module 206 may perform multiple transforms on a residual block, for example, a primary transform and a secondary transform, such as a rotational transform. In some examples, transformation processing module 206 does not apply transformations to the remainder block.

[0169] В некоторых примерах, модуль 206 обработки преобразования может применять несколько преобразований из схемы множественного преобразования (MT) к остаточному блоку для текущего блока, что включает в себя применение множества преобразований MT-схемы к каждому из множества остаточных субблоков, получающихся в результате сегментации остаточного блока. MT-схема может задавать, например, первичное преобразование и вторичное преобразование, которые должны применяться к остаточному блоку. Дополнительно или альтернативно, MT-схема может задавать горизонтальное преобразование и вертикальное преобразование, к примеру, как показано на фиг. 5A и 5B, как пояснено выше. В любом случае, модуль 206 обработки преобразования может применять каждое преобразование MT-схемы к остаточному блоку для того, чтобы формировать коэффициенты преобразования из блока коэффициентов преобразования.[0169] In some examples, transformation processing module 206 may apply multiple transforms from a multiple transform (MT) circuit to a residual block for a current block, which includes applying multiple MT circuit transformations to each of the plurality of residual subblocks resulting from the segmentation residual block. The MT scheme may specify, for example, a primary transform and a secondary transform to be applied to the residual block. Additionally or alternatively, the MT circuit may define a horizontal transform and a vertical transform, for example, as shown in FIG. 5A and 5B, as explained above. In any case, the transform processing unit 206 may apply each transform of the MT circuit to the residual block in order to generate transform coefficients from the transform coefficient block.

[0170] Например, модуль 206 обработки преобразования может выбирать преобразование для каждого из множества остаточных субблоков, причем выбор преобразования для соответствующего остаточного блока множества остаточных субблоков представляет собой индекс множественного выбора преобразования (MTS) для соответствующего остаточного блока. Таким образом, множественное преобразование может выбираться для каждого остаточного субблока.[0170] For example, the transform processing unit 206 may select a transform for each of a plurality of residual subblocks, wherein the transform selection for a corresponding residual block of the plurality of residual subblocks is a multiple transform selection (MTS) index for the corresponding residual block. Thus, a multiple transform can be selected for each residual subblock.

[0171] В другом примере, модуль 206 обработки преобразования может выбирать преобразование для остаточного блока, которое применяется к каждому из множества остаточных субблоков, получающихся в результате сегментации остаточного блока. Например, множественное преобразование может выбираться для остаточного блока, которое применяется к каждому остаточному субблоку, получающемуся в результате сегментации остаточного блока. В примере блока 192C на фиг. 8, выбранное множественное преобразование для блока 192C может применяться к каждому из остаточных субблоков P0, P1, P2 и P3.[0171] In another example, transformation processing module 206 may select a transformation for a residual block that is applied to each of a plurality of residual subblocks resulting from segmentation of the residual block. For example, a multiple transform may be selected for a residual block that is applied to each residual subblock resulting from segmentation of the residual block. In the example block 192C of FIG. 8, the selected multiple transform for block 192C may be applied to each of the residual subblocks P0, P1, P2 and P3.

[0172] В соответствии с технологиями настоящего раскрытия сущности, модуль 206 обработки преобразования может определять флаг кодированного блока (cbf) и/или флаг пропуска преобразования для каждого из множества остаточных субблоков. Флаг кодированного блока может передавать в служебных сигналах информацию относительно того, передается или нет, по меньшей мере, один уровень преобразования ненулевых коэффициентов для остаточного субблока. Флаг пропуска преобразования может передавать в служебных сигналах информацию относительно того, пропускается или нет преобразование для остаточного субблока.[0172] In accordance with the techniques of the present disclosure, transform processing module 206 may determine a coded block flag (cbf) and/or transform skip flag for each of a plurality of residual subblocks. The coded block flag may signal information regarding whether or not at least one level of non-zero coefficient mapping for the residual subblock is transmitted. The conversion skip flag may signal information regarding whether or not conversion is skipped for the residual subblock.

[0173] В соответствии с технологиями настоящего раскрытия сущности, модуль 206 обработки преобразования может определять ядра преобразования для множества остаточных субблоков, получающихся в результате сегментации остаточного блока, по меньшей мере, частично на основе одного из следующего: тип дерева сегментации для остаточного блока или тип сегментации для остаточного блока.[0173] In accordance with the techniques of the present disclosure, transformation processing module 206 may determine transformation kernels for a plurality of residual subblocks resulting from segmentation of the residual block based at least in part on one of the following: the type of segmentation tree for the residual block or the type segmentation for the residual block.

[0174] В соответствии с технологиями настоящего раскрытия сущности, модуль 206 обработки преобразования может определять контекстные назначения для множества остаточных субблоков, по меньшей мере, частично на основе одного из следующего: тип дерева сегментации для остаточного блока или тип сегментации для остаточного блока. В некоторых примерах, модуль 206 обработки преобразования может определять контекстные назначения для множества остаточных субблоков для компонентов сигнала яркости текущего блока и/или компонентов сигнала цветности текущего блока.[0174] In accordance with the techniques of the present disclosure, transformation processing module 206 may determine context assignments for a plurality of residual subblocks based at least in part on one of the following: a segmentation tree type for a residual block or a segmentation type for a residual block. In some examples, transform processing module 206 may determine context assignments for a plurality of residual subblocks for the luma components of the current block and/or the chrominance components of the current block.

[0175] В одном примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 206 обработки преобразования может определять то, что DCT-8 используется в качестве как горизонтального преобразования, так и вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, то, что DST-7 используется в горизонтальном преобразовании, и DST-8 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков, то, что DCT-8 используется в горизонтальном преобразовании, и DST-7 используется в качестве вертикального преобразования для третьего остаточного субблока из множества остаточных субблоков, и то, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для четвертого остаточного субблока из множества остаточных субблоков.[0175] In one example, when the transformation processing module 206 determines that the residual block is segmented according to the quadtree-based segmentation into four residual subblocks, the transformation processing module 206 may determine that the DCT-8 is used as both a horizontal transform and and a vertical transform for the first residual subblock of the plurality of residual subblocks, that DST-7 is used in the horizontal transform, and DST-8 is used as a vertical transform for the second residual subblock of the plurality of residual subblocks, that DCT-8 is used in the horizontal transformation, and that DST-7 is used as a vertical transform for a third residual subblock of the plurality of residual subblocks, and that DST-7 is used as both a horizontal transform and a vertical transform for a fourth residual subblock of the plurality of residual subblocks.

[0176] В другом примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 206 обработки преобразования может определять то, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для каждого из множества остаточных субблоков.[0176] In another example, when the transformation processing module 206 determines that the residual block is segmented according to the quadtree-based segmentation into four residual sub-blocks, the transformation processing module 206 may determine that DST-7 is used as both a horizontal transform and and a vertical transformation for each of the plurality of residual subblocks.

[0177] В другом примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 206 обработки преобразования может определять то, что DCT-2 используется в качестве, по меньшей мере, одного из: горизонтального преобразования или вертикального преобразования для одного или более из множества остаточных субблоков. Таким образом, например, DCT-2 может использоваться в качестве горизонтального преобразования, и DST-7 или DCT-8 может использоваться в качестве вертикального преобразования для одного или более из множества остаточных субблоков, и DCT-2 может использоваться в качестве вертикального преобразования, и DST-7 или DCT-8 может использоваться в качестве горизонтального преобразования для одного или более из множества остаточных субблоков.[0177] In another example, when the transformation processing module 206 determines that the residual block is segmented according to the quadtree-based segmentation into four residual subblocks, the transformation processing module 206 may determine that the DCT-2 is used as at least one of: a horizontal transform or a vertical transform for one or more of a plurality of residual subblocks. Thus, for example, DCT-2 may be used as a horizontal transform, and DST-7 or DCT-8 may be used as a vertical transform for one or more of a plurality of residual subblocks, and DCT-2 may be used as a vertical transform, and DST-7 or DCT-8 may be used as a horizontal transform for one or more of a plurality of residual subblocks.

[0178] В другом примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, и то, что тип сегментации для остаточного блока представляет собой горизонтальное разбиение, модуль 206 обработки преобразования может определять то, что DCT-2 используется в качестве горизонтального преобразования, и DCT-8 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и то, что DCT-2 используется в качестве горизонтального преобразования, и DST-7 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков.[0178] In another example, when the transformation processing module 206 determines that the residual block is segmented according to a binary tree-based segmentation into two residual subblocks, and that the segmentation type for the residual block is a horizontal partition, the transformation processing module 206 may determine that DCT-2 is used as a horizontal transform and DCT-8 is used as a vertical transform for the first residual subblock of a plurality of residual subblocks, and that DCT-2 is used as a horizontal transform and DST-7 is used as vertical transformation for the second residual subblock of the plurality of residual subblocks.

[0179] В другом примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, и то, что тип сегментации для остаточного блока представляет собой вертикальное разбиение, модуль 206 обработки преобразования может определять то, что DCT-8 используется в качестве горизонтального преобразования, и DCT-2 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и то, что DST-7 используется в качестве горизонтального преобразования, и DCT-2 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков.[0179] In another example, when the transformation processing module 206 determines that the residual block is segmented according to a binary tree segmentation into two residual subblocks, and that the segmentation type for the residual block is a vertical partition, the transformation processing module 206 may determine that DCT-8 is used as a horizontal transform and DCT-2 is used as a vertical transform for the first residual subblock of a plurality of residual subblocks, and that DST-7 is used as a horizontal transform and DCT-2 is used as vertical transformation for the second residual subblock of the plurality of residual subblocks.

[0180] В другом примере, когда модуль 206 обработки преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, модуль 206 обработки преобразования может определять то, что одно из: DST-7 или DCT-8 используется в качестве, по меньшей мере, одного из: горизонтального преобразования или вертикального преобразования для одного или более из множества остаточных субблоков. Использование DST-7 или DCT-8 может осуществляться вместо DCT-2 в примерах сегментации на основе двоичного дерева, описанных выше.[0180] In another example, when the transformation processing module 206 determines that a residual block is segmented according to a binary tree-based segmentation into two residual subblocks, the transformation processing module 206 may determine that one of DST-7 or DCT-8 is used as at least one of a horizontal transform or a vertical transform for one or more of a plurality of residual subblocks. The use of DST-7 or DCT-8 may be used instead of DCT-2 in the binary tree segmentation examples described above.

[0181] В некоторых примерах, модуль 206 обработки обратного преобразования может определять контекстные назначения для остаточного блока, по меньшей мере, частично на основе размера остаточного блока. Например, когда остаточный блок имеет небольшой размер, к примеру, меньший или равный 16 выборкам (например, блок 4×4, который имеет размер 16 выборок), и когда остаточный блок сегментируется согласно сегментации на основе двоичного дерева, модуль 206 обработки обратного преобразования может определять контекстные назначения для множества остаточных субблоков таким образом, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для каждого из множества остаточных субблоков.[0181] In some examples, inverse transform processing module 206 may determine context assignments for a residual block based at least in part on the size of the residual block. For example, when the residual block has a small size, for example, less than or equal to 16 samples (for example, a 4x4 block that has a size of 16 samples), and when the residual block is segmented according to a binary tree-based segmentation, the inverse transform processing unit 206 may determine context assignments for the plurality of residual subblocks such that DST-7 is used as both a horizontal transform and a vertical transform for each of the plurality of residual subblocks.

[0182] В другом примере, когда остаточный блок имеет большой размер, к примеру, больший или равный 16 выборкам (например, блок 4×8, который имеет размер 32 выборок), и когда остаточный блок сегментируется согласно сегментации на основе двоичного дерева, модуль 206 обработки преобразования может определять контекстные назначения для множества остаточных субблоков таким образом, что DCT-2 используется в качестве горизонтального преобразования, и DST-7 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и таким образом, что DCT-2 используется в качестве вертикального преобразования, и DST-7 используется в качестве горизонтального преобразования для второго остаточного субблока из множества остаточных субблоков.[0182] In another example, when the residual block has a large size, for example, greater than or equal to 16 samples (for example, a 4x8 block that has a size of 32 samples), and when the residual block is segmented according to a binary tree-based segmentation, the module Transform processing 206 may determine context assignments for a plurality of residual subblocks such that DCT-2 is used as a horizontal transform and DST-7 is used as a vertical transform for the first residual subblock of the plurality of residual subblocks, and such that DCT-2 is used as a vertical transform, and DST-7 is used as a horizontal transform for the second residual subblock of the plurality of residual subblocks.

[0183] В другом примере, когда остаточный блок имеет размер по горизонтали или размер по вертикали, который меньше или равен 2 выборкам (например, блок 2×8), модуль 206 обработки преобразования может определять то, что преобразование не должно применяться ко множеству остаточных субблоков.[0183] In another example, when the residual block has a horizontal size or a vertical size that is less than or equal to 2 samples (for example, a 2x8 block), the transformation processing module 206 may determine that the transformation should not be applied to the plurality of residuals. subblocks.

[0184] В некоторых примерах, модуль 206 обработки преобразования может определять контекстные назначения для множества остаточных субблоков на основе того, что текущий блок представляет собой внутренне прогнозированный блок. В некоторых примерах, модуль 206 обработки преобразования может определять контекстные назначения для множества остаточных субблоков на основе того, что текущий блок представляет собой взаимно прогнозированный блок.[0184] In some examples, transformation processing module 206 may determine context assignments for a plurality of residual subblocks based on the fact that the current block is an internally predicted block. In some examples, transformation processing module 206 may determine context assignments for a plurality of residual subblocks based on the fact that the current block is a mutually predicted block.

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

[0186] Модуль 210 обратного квантования и модуль 212 обработки обратного преобразования могут применять обратное квантование и обратные преобразования к блоку квантованных коэффициентов преобразования, соответственно, для того чтобы восстанавливать остаточный блок из блока коэффициентов преобразования. Модуль 214 восстановления может формировать восстановленный блок, соответствующий текущему блоку (хотя потенциально с определенной степенью искажения) на основе восстановленного остаточного блока и прогнозного блока, сформированного посредством модуля 202 выбора режима. Например, модуль 214 восстановления может суммировать выборки восстановленного остаточного блока с соответствующими выборками из прогнозного блока, сформированного посредством модуля 202 выбора режима, чтобы формировать восстановленный блок.[0186] The inverse quantization unit 210 and the inverse transform processing unit 212 may apply the inverse quantization and inverse transforms to the block of quantized transform coefficients, respectively, to recover a residual block from the block of transform coefficients. The reconstruction 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 prediction block generated by the mode selection module 202 . For example, recovery module 214 may add samples of the reconstructed residual block with corresponding samples from the prediction block generated by mode selection module 202 to generate a reconstructed block.

[0187] Модуль 216 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 216 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев CU. Операции модуля 216 фильтрации могут пропускаться в некоторых примерах.[0187] Filtering module 216 may perform one or more filtering operations on the reconstructed blocks. For example, filtering module 216 may perform deblocking operations to reduce blocking artifacts along the edges of the CU. The operations of filtering module 216 may be skipped in some examples.

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

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

[0190] В соответствии с технологиями этого раскрытия сущности, модуль 220 энтропийного кодирования, для остаточного блока, может энтропийно кодировать информацию сегментации, ассоциированную с остаточным блоком. Такая информация сегментации, ассоциированная с остаточным блоком, может указывать то, сегментируется или нет остаточный блок. Если остаточный блок сегментируется, энтропийно кодированная информация сегментации дополнительно может указывать тип дерева сегментации для остаточного блока. Тип дерева сегментации может представлять собой одно из следующего: сегментация на основе дерева квадрантов, сегментация на основе двоичного дерева, сегментация на основе троичного дерева или сегментация на 4 TU. Чтобы указывать тип дерева сегментации, энтропийно кодированная информация сегментации может включать в себя индекс в списке возможных типов сегментации. Если тип дерева сегментации представляет собой одно из следующего: сегментация на основе двоичного дерева, сегментация на основе троичного дерева или сегментация на 4 TU, энтропийно кодированная информация сегментации дополнительно может передавать в служебных сигналах информацию, указывающую тип сегментации для остаточного блока, который указывает то, остаточный блок горизонтально разбивается или вертикально разбивается. Дополнительно, если тип дерева сегментации для остаточного блока представляет собой сегментацию на основе двоичного дерева или сегментацию на основе троичного дерева, энтропийно кодированная информация дополнительно может передавать в служебных сигналах информацию, указывающую то, TU симметрично разбивается или асимметрично разбивается.[0190] In accordance with the techniques of this disclosure, entropy encoding module 220, for a residual block, can entropy encode segmentation information associated with the residual block. Such segmentation information associated with the residual block may indicate whether or not the residual block is segmented. If a residual block is segmented, the entropy encoded segmentation information may further indicate the type of segmentation tree for the residual block. The segmentation tree type may be one of the following: quadtree segmentation, binary tree segmentation, ternary tree segmentation, or 4-TU segmentation. To indicate the type of segmentation tree, the entropy encoded segmentation information may include an index in the list of possible segmentation types. If the segmentation tree type is one of the following: binary tree segmentation, ternary tree segmentation, or 4-TU segmentation, the entropy encoded segmentation information may further signal information indicating the segmentation type for the residual block, which indicates that the residual block is horizontally split or vertically split. Additionally, if the segmentation tree type for the residual block is a binary tree-based segmentation or a ternary tree-based segmentation, the entropy encoded information may further signal information indicating whether the TU is symmetrically split or asymmetrically split.

[0191] Модуль 220 энтропийного кодирования также может, для остаточного блока, энтропийно кодировать другую информацию, ассоциированную с остаточным блоком. Например, модуль 220 энтропийного кодирования может кодировать индикатор преобразования, которое выбирается для каждого из множества остаточных субблоков, получающихся в результате сегментации остаточного блока, к примеру, MTS-индекс для каждого из соответствующих остаточных субблоков. В другом примере, модуль 220 энтропийного кодирования может кодировать индикатор преобразования, которое выбирается для остаточного блока, при этом выбранное преобразование применяется к каждому из множества остаточных субблоков, получающихся в результате сегментации остаточного блока.[0191] Entropy encoding module 220 may also, for a residual block, entropy encode other information associated with the residual block. For example, entropy encoding module 220 may encode a transform indicator that is selected for each of the plurality of residual subblocks resulting from segmentation of the residual block, eg, an MTS index for each of the corresponding residual subblocks. In another example, entropy encoding module 220 may encode an indicator of a transform that is selected for a residual block, wherein the selected transform is applied to each of a plurality of residual subblocks resulting from segmentation of the residual block.

[0192] В соответствии с некоторыми аспектами этого раскрытия сущности, модуль 220 энтропийного кодирования может отказываться от кодирования информации, ассоциированной с контекстными назначениями для множества остаточных субблоков, получающихся в результате сегментации остаточного блока или ядер преобразования для множества остаточных субблоков. Вместо этого, видеодекодер 300 может логически выводить эту информацию относительно остаточного блока на основе другой информации, ассоциированной с остаточным блоком, который кодируется посредством модуля 220 энтропийного кодирования, к примеру, на основе того, сегментируется или нет остаточный блок, типа дерева сегментации, согласно которому сегментирован остаточный блок, типа сегментации остаточного блока, а также другой вспомогательной информации, энтропийно кодированной посредством модуля 220 энтропийного кодирования.[0192] In accordance with some aspects of this disclosure, entropy encoding module 220 may choose not to encode information associated with context assignments for a plurality of residual subblocks resulting from segmentation of the residual block or transformation kernels for the plurality of residual subblocks. Instead, video decoder 300 may infer this information regarding the residual block based on other information associated with the residual block that is encoded by entropy encoding module 220, for example, based on whether or not the residual block is segmented, the type of segmentation tree according to which the residual block is segmented, such as segmentation of the residual block, as well as other auxiliary information entropy encoded by the entropy encoding unit 220.

[0193] Видеокодер 200 может выводить поток битов, который включает в себя энтропийно кодированные синтаксические элементы, требуемые для того, чтобы восстанавливать блоки среза или кадра. В частности, модуль 220 энтропийного кодирования может выводить поток битов, включающий в себя, например, энтропийно кодированную информацию сегментации, ассоциированную с остаточным блоком, согласно технологиям этого раскрытия сущности. В связи с этим, после того как кодер 200 определяет то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков, модуль 220 энтропийного кодирования может кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется.[0193] Video encoder 200 may output a bitstream that includes entropy-coded syntax elements required to reconstruct slice or frame blocks. In particular, entropy encoding module 220 may output a bitstream including, for example, entropy encoded segmentation information associated with a residual block, according to the techniques of this disclosure. In this regard, after the encoder 200 determines that a residual block for the current video data block is segmented according to a segmentation tree type into a plurality of residual subblocks, the entropy encoding module 220 may encode the bitstream as an encoded representation of the video data that signals the information , indicating whether or not the residual block is segmented, and further signaling information indicating the type of segmentation tree for the residual block that is segmented.

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

[0195] В некоторых примерах, операции, выполняемые относительно блока кодирования сигналов яркости, не должны повторяться для блоков кодирования сигналов цветности. В качестве одного примера, операции для того, чтобы идентифицировать вектор движения (MV) и опорный кадр для блока кодирования сигналов яркости, не должны повторяться для идентификации MV и опорного кадра для блоков сигналов цветности. Наоборот, MV для блока кодирования сигналов яркости может масштабироваться с возможностью определять MV для блоков сигналов цветности, и опорный кадр может быть идентичным. В качестве другого примера, процесс внутреннего прогнозирования может быть идентичным для блока кодирования сигналов яркости и блоков кодирования сигналов цветности.[0195] In some examples, operations performed on a luma coding block need not be repeated for chrominance coding blocks. As one example, the operations for identifying a motion vector (MV) and a reference frame for a luma coding block do not need to be repeated to identify the MV and a reference frame for chrominance blocks. Conversely, the MV for the luma 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 the luma coding block and the chrominance coding blocks.

[0196] Видеокодер 200 представляет пример устройства, выполненного с возможностью кодировать видеоданные, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью определять то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков, и кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока.[0196] Video encoder 200 provides an example of an apparatus configured to encode video data, including a storage device configured to store video data, and one or more processing modules implemented in circuitry and configured to determine that a residual block for a current block video data is segmented according to the type of segmentation tree into a plurality of residual sub-blocks, and encode the bitstream as a coded representation of the video data, which signal information indicating whether or not the residual block is segmented, and further signal information indicating the type of segmentation tree for residual block.

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

[0198] В примере по фиг. 10, видеодекодер 300 включает в себя буферное запоминающее устройство 320 кодированных кадров (CPB), модуль 302 энтропийного декодирования, модуль 304 обработки прогнозирования, модуль 306 обратного квантования, модуль 308 обработки обратного преобразования, модуль 310 восстановления, модуль 312 фильтрации и буфер 314 декодированных кадров (DPB). Любое из запоминающего CPB-устройства 320, модуля 302 энтропийного декодирования, модуля 304 обработки прогнозирования, модуля 306 обратного квантования, модуля 308 обработки обратного преобразования, модуля 310 восстановления, модуля 312 фильтрации и DPB 314 может реализовываться в одном или более процессоров или в схеме обработки. Например, модули видеодекодера 300 могут реализовываться как одна или более схем или логических элементов в качестве части аппаратной схемы или в качестве части процессора, ASIC, FPGA. Кроме того, видеодекодер 300 может включать в себя дополнительные или альтернативные процессоры либо схему обработки для того, чтобы выполнять эти и другие функции.[0198] In the example of FIG. 10, 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 restoration unit 310, a filtering unit 312, and a decoded frame buffer 314. (DPB). Any of the CPB memory device 320, entropy decoding module 302, prediction processing module 304, inverse quantization module 306, inverse transform processing module 308, reconstruction module 310, filtering module 312, and DPB 314 may be implemented in one or more processors or processing circuitry. . For example, video decoder modules 300 may be implemented as one or more circuits or logic elements, as part of a hardware circuit, or as part of a processor, ASIC, FPGA. In addition, video decoder 300 may include additional or alternative processors or processing circuitry to perform these and other functions.

[0199] Модуль 304 обработки прогнозирования включает в себя модуль 316 компенсации движения и модуль 318 внутреннего прогнозирования. Модуль 304 обработки прогнозирования может включать в себя дополнительные модули для того, чтобы выполнять прогнозирование в соответствии с другими режимами прогнозирования. В качестве примера, модуль 304 обработки прогнозирования может включать в себя модуль палитровой обработки, модуль внутриблочного копирования (который может составлять часть модуля 316 компенсации движения), модуль аффинной обработки, модуль обработки на основе линейной модели (LM) и т.п. В других примерах, видеодекодер 300 может включать в себя большее, меньшее число или другие функциональные компоненты.[0199] The prediction processing module 304 includes a motion compensation module 316 and an internal prediction module 318 . The prediction processing module 304 may include additional modules to perform prediction in accordance with other prediction modes. As an example, prediction processing module 304 may include a palette processing module, an intra-block copy module (which may be part of 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.

[0200] Запоминающее CPB-устройство 320 может сохранять видеоданные, такие как кодированный поток видеобитов, который должен декодироваться посредством компонентов видеодекодера 300. Видеоданные, сохраненные в запоминающем CPB-устройстве 320, могут получаться, например, из машиночитаемого носителя 110 (фиг. 1). Запоминающее CPB-устройство 320 может включать в себя CPB, который сохраняет кодированные видеоданные (например, синтаксические элементы) из кодированного потока видеобитов. Кроме того, запоминающее CPB-устройство 320 может сохранять видеоданные, отличные от синтаксических элементов кодированного кадра, такие как временные данные, представляющие выводы из различных модулей видеодекодера 300. DPB 314, в общем, сохраняет декодированные кадры, которые видеодекодер 300 может выводить и/или использовать в качестве опорных видеоданных при декодировании последующих данных или кадров кодированного потока видеобитов. Запоминающее CPB-устройство 320 и DPB 314 могут формироваться посредством любого из множества запоминающих устройств, таких как DRAM, включающих в себя SDRAM, MRAM, RRAM или другие типы запоминающих устройств. Запоминающее CPB-устройство 320 и DPB 314 могут предоставляться посредством идентичного запоминающего устройства или отдельных запоминающих устройств. В различных примерах, запоминающее CPB-устройство 320 может быть внутримикросхемным с другими компонентами видеодекодера 300 или внемикросхемным относительно этих компонентов.[0200] The CPB storage device 320 may store video data, such as an encoded video bit stream, to be decoded by 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 device 320 may include a CPB that stores encoded video data (eg, syntax elements) from the encoded video bitstream. In addition, CPB storage device 320 may store video data other than syntax elements of the encoded frame, such as temporary data representing outputs from various modules of video decoder 300. DPB 314 generally stores decoded frames that video decoder 300 may output and/or used as reference video data when decoding subsequent data or frames of an encoded video bit stream. CPB memory 320 and DPB 314 may be formed by any of a variety of memory devices, such as DRAM, including SDRAM, MRAM, RRAM, or other types of memory devices. CPB storage device 320 and DPB 314 may be provided by identical storage device or separate storage devices. In various examples, CPB storage device 320 may be on-chip with other components of video decoder 300 or off-chip with respect to those components.

[0201] Дополнительно или альтернативно, в некоторых примерах, видеодекодер 300 может извлекать кодированные видеоданные из запоминающего устройства 120 (фиг. 1). Таким образом, запоминающее устройство 120 может сохранять данные, как пояснено выше для запоминающего CPB-устройства 320. Аналогично, запоминающее устройство 120 может сохранять инструкции, которые должны выполняться посредством видеодекодера 300, когда часть или вся функциональность видеодекодера 300 реализуется в программном обеспечении для выполнения посредством схемы обработки видеодекодера 300. В связи с этим, запоминающее CPB-устройство 320, наряду с другими компонентами видеодекодера 300 по фиг. 10, представляет примеры средств для приема потока битов.[0201] Additionally or alternatively, in some examples, video decoder 300 may retrieve encoded video data from storage device 120 (FIG. 1). Thus, memory 120 may store data as explained above for CPB memory 320. Likewise, memory 120 may store instructions to be executed by video decoder 300 when part or all of the functionality of video decoder 300 is implemented in software to be executed by processing circuitry of the video decoder 300. In this regard, the CPB storage device 320, along with other components of the video decoder 300 of FIG. 10 presents examples of means for receiving a bit stream.

[0202] Различные модули, показанные на фиг. 10, проиллюстрированы для того, чтобы помогать в понимании операций, выполняемых посредством видеодекодера 300. Модули могут реализовываться как фиксированные функциональные схемы, программируемые схемы либо комбинация вышеозначенного. Аналогично фиг. 9, фиксированные функциональные схемы означают схемы, которые предоставляют конкретную функциональность и предварительно установлены в отношении операций, которые могут выполняться. Программируемые схемы означают схемы, которые могут программироваться с возможностью выполнять различные задачи и предоставлять гибкую функциональность в операциях, которые могут выполняться. Например, программируемые схемы могут выполнять программное обеспечение или микропрограммное обеспечение, которое инструктирует программируемым схемам работать способом, заданным посредством инструкций программного обеспечения или микропрограммного обеспечения. Фиксированные функциональные схемы могут выполнять программные инструкции (например, чтобы принимать параметры или выводить параметры), но типы операций, которые выполняют фиксированные функциональные схемы, в общем, являются неизменными. В некоторых примерах, один или более модулей могут представлять собой различные схемные блоки (фиксированные функциональные или программируемые), и в некоторых примерах, один или более модулей могут представлять собой интегральные схемы.[0202] The various modules shown in FIG. 10 are illustrated to assist in understanding the operations performed by the video decoder 300. The modules may be implemented as fixed functional circuits, programmable circuits, or a combination of the above. Similar to Fig. 9, fixed function circuits mean circuits that provide specific functionality and are preset with respect to the operations that can be performed. Programmable circuits mean circuits that can be programmed to perform various tasks and provide flexible functionality in the operations that can be performed. For example, programmable circuits may execute software or firmware that instructs the programmable circuits to operate in a manner specified by software or firmware instructions. Fixed function diagrams can execute program instructions (for example, to accept parameters or output parameters), but the types of operations that fixed function diagrams 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.

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

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

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

[0206] Модуль 302 энтропийного декодирования может энтропийно декодировать синтаксические элементы, задающие квантованные коэффициенты преобразования блока квантованных коэффициентов преобразования, а также информацию преобразования, такую как параметр квантования (QP) и/или индикатор(ы) режима преобразования.[0206] Entropy decoding module 302 may entropy decode syntax elements defining quantized transform coefficients of a block of quantized transform coefficients, as well as transform information such as quantization parameter (QP) and/or transform mode indicator(s).

[0207] В соответствии с технологиями этого раскрытия сущности, видеодекодер 300 может принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования. Информация, указывающая то, сегментируется или нет остаточный блок, и информация, указывающая тип дерева сегментации для остаточного блока, может представлять собой синтаксические элементы, которые передают в служебных сигналах то, сегментируется или нет остаточный блок, и если да, тип дерева сегментации для остаточного блока.[0207] In accordance with the techniques of this disclosure, video decoder 300 may receive, in a bit stream that contains an encoded representation of video data, information indicating whether or not a residual block is segmented, and information indicating the type of segmentation tree for the residual block, based on segmentation of the residual block, wherein the residual block indicates the difference between the current block and the prediction block. Information indicating whether or not a residual block is segmented and information indicating a segmentation tree type for the residual block may be syntax elements that signal whether or not the residual block is segmented, and if so, a segmentation tree type for the residual block.

[0208] В некоторых примерах, информация, указывающая тип дерева сегментации для остаточного блока, может представлять собой информацию индекса в наборе типов деревьев, и модуль 302 энтропийного декодирования может определять тип дерева сегментации на основе принимаемой информации индекса. Например, информация набора типов деревьев может включать в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева,[0208] In some examples, information indicating a segmentation tree type for a residual block may be index information in a set of tree types, and entropy decoding module 302 may determine the segmentation tree type based on the received index information. For example, the tree type set information may include one or more of a quadtree-based segmentation and a binary tree-based segmentation.

[0209] В некоторых примерах, поток битов, принимаемый посредством видеодекодера 300, дополнительно может включать в себя информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается, и/или то, остаточный блок симметрично разбивается или асимметрично разбивается.[0209] In some examples, the bit stream received by video decoder 300 may further include information indicating whether the residual block is horizontally split or vertically split, and/or whether the residual block is symmetrically split or asymmetrically split.

[0210] Например, поток битов может включать в себя, для остаточного блока, флаг, передающий в служебных сигналах то, сегментируется или нет остаточный блок. Если флаг активируется, поток битов может включать в себя индекс в списке типов деревьев сегментации, чтобы указывать тип дерева сегментации для сегментации остаточного блока, к примеру, через несколько битов в индексе для списка следующих типов деревьев сегментации: сегментация на основе дерева квадрантов, сегментация на основе двоичного дерева, сегментация на основе троичного дерева и сегментация на 4 TU. Поток битов затем может также включать в себя, при необходимости, флаги, передающие в служебных сигналах то, остаточный блок горизонтально разбивается или вертикально разбивается, и то, остаточный блок симметрично разбивается или асимметрично разбивается.[0210] For example, the bit stream may include, for a residual block, a flag signaling whether or not the residual block is segmented. If the flag is activated, the bitstream may include an index in the list of segmentation tree types to indicate the type of segmentation tree for segmentation of the residual block, for example, through a few bits in the index for a list of the following segmentation tree types: quadtree segmentation, segmentation on Binary tree segmentation, Ternary tree segmentation and 4 TU segmentation. The bit stream may then also include, if necessary, flags signaling whether the residual block is horizontally split or vertically split, and whether the residual block is symmetrically split or asymmetrically split.

[0211] Модуль 302 энтропийного декодирования может энтропийно декодировать информацию сегментации, ассоциированную с остаточным блоком для текущего блока данных, декодируемого из потока битов. В частности, модуль 302 энтропийного декодирования может декодировать информацию сегментации, чтобы определять то, сегментируется или нет остаточный блок. Если информация сегментации для остаточных данных в потоке битов передает в служебных сигналах то, что остаточный блок сегментируется, модуль 302 энтропийного декодирования дополнительно может декодировать информацию сегментации, чтобы определять тип дерева сегментации для остаточного блока. В зависимости от типа дерева сегментации для остаточного блока, модуль 302 энтропийного декодирования может декодировать информацию сегментации для остаточного блока в потоке битов, чтобы определять то, остаточный блок горизонтально разбивается или вертикально разбивается, а также то, остаточный блок симметрично разбивается или асимметрично разбивается. В связи с этим, модуль 302 энтропийного декодирования, наряду с другими компонентами видеодекодера 300 по фиг. 10, представляет примеры средств для определения того, что остаточный блок сегментируется согласно типу дерева сегментации на множество остаточных субблоков.[0211] Entropy decoding unit 302 may entropy decode segmentation information associated with a residual block for a current block of data decoded from the bit stream. In particular, the entropy decoding unit 302 can decode the segmentation information to determine whether or not a residual block is segmented. If the segmentation information for residual data in the bit stream signals that the residual block is segmented, the entropy decoding unit 302 may further decode the segmentation information to determine the type of segmentation tree for the residual block. Depending on the type of segmentation tree for the residual block, the entropy decoding unit 302 may decode the segmentation information for the residual block in the bitstream to determine whether the residual block is horizontally split or vertically split, and whether the residual block is symmetrically split or asymmetrically split. In this regard, the entropy decoding module 302, along with other components of the video decoder 300 of FIG. 10 provides examples of means for determining that a residual block is segmented according to a segmentation tree type into a plurality of residual subblocks.

[0212] Помимо этого, в некоторых примерах, модуль 302 энтропийного декодирования также может, для остаточного блока для текущего блока данных, энтропийно декодировать другую информацию, ассоциированную с остаточным блоком. Например, модуль 302 энтропийного декодирования может декодировать индикатор преобразования, которое выбирается для каждого из множества остаточных субблоков, получающихся в результате сегментации остаточного блока, к примеру, MTS-индекс для каждого из соответствующих остаточных субблоков.[0212] In addition, in some examples, entropy decoding module 302 may also, for a residual block for a current data block, entropy decode other information associated with the residual block. For example, entropy decoding module 302 may decode a transform indicator that is selected for each of a plurality of residual subblocks resulting from segmentation of the residual block, eg, an MTS index for each of the corresponding residual subblocks.

[0213] В другом примере, модуль 302 энтропийного декодирования может декодировать индикатор преобразования, которое выбирается для остаточного блока, при этом выбранное преобразование применяется к каждому из множества остаточных субблоков, получающихся в результате сегментации остаточного блока. Такое преобразование, которое выбирается для остаточного блока, может передаваться в служебных сигналах в потоке битов на уровне остаточного блока, в силу этого сокращая объем служебной информации по необходимости указывать отдельные преобразования для каждого из остаточных субблоков при сохранении способности сегментации остаточного блока на множество остаточных субблоков.[0213] In another example, entropy decoding module 302 may decode an indicator of a transform that is selected for a residual block, wherein the selected transform is applied to each of a plurality of residual subblocks resulting from segmentation of the residual block. Such a transform, which is selected for a residual block, can be signaled in a bit stream at the residual block level, thereby reducing the overhead of having to specify separate transforms for each of the residual subblocks while maintaining the ability to segment the residual block into multiple residual subblocks.

[0214] В соответствии с технологиями настоящего раскрытия сущности, модуль 302 энтропийного декодирования может логически выводить или ограничивать флаг кодированного блока (cbf) и/или флаг пропуска преобразования для каждого из множества остаточных субблоков на основе такой информации, как режим прогнозирования для текущего блока, тип дерева сегментации для остаточного блока, тип сегментации для остаточного блока или любая другая вспомогательная информация, включенная в поток битов. Флаг кодированного блока может передавать в служебных сигналах информацию относительно того, передается или нет, по меньшей мере, один уровень преобразования ненулевых коэффициентов для остаточного субблока. Флаг пропуска преобразования может передавать в служебных сигналах информацию относительно того, пропускается или нет преобразование для остаточного субблока. Например, модуль 302 энтропийного декодирования может ограничивать остаточный субблок таким образом, что он всегда имеет деактивированный флаг кодированного блока (флаг=0), так что передача служебных сигналов cbf не требуется для остаточного субблока.[0214] In accordance with the techniques of the present disclosure, entropy decoding module 302 may infer or constrain a coded block flag (cbf) and/or transform skip flag for each of a plurality of residual subblocks based on information such as the prediction mode for the current block, the segmentation tree type for the residual block, the segmentation type for the residual block, or any other supporting information included in the bitstream. The coded block flag may signal information regarding whether or not at least one level of non-zero coefficient mapping for the residual subblock is transmitted. The conversion skip flag may signal information regarding whether or not conversion is skipped for the residual subblock. For example, entropy decoding module 302 may constrain the residual subblock such that it always has the coded block flag disabled (flag=0) such that cbf signaling is not required for the residual subblock.

[0215] Модуль 302 энтропийного декодирования может предоставлять эту информацию, ассоциированную с остаточным блоком, в модуль 308 обработки обратного преобразования. Таким образом, после того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может использовать эту информацию, ассоциированную с остаточным блоком наряду с одним или более блоков коэффициентов преобразования, предоставленных посредством модуля 306 обратного квантования для того, чтобы формировать остаточный блок, ассоциированный с текущим блоком.[0215] The entropy decoding module 302 may provide this information associated with the residual block to the inverse transform processing module 308 . That is, after the inverse quantization unit 306 generates a block of transform coefficients, the inverse transform processing unit 308 may use this information associated with the residual block along with one or more transform coefficient blocks provided by the inverse quantization unit 306 to generate the residual block associated with the current block.

[0216] Модуль 306 обратного квантования может использовать QP, ассоциированный с блоком квантованных коэффициентов преобразования, чтобы определять степень квантования и, аналогично, степень обратного квантования для модуля 306 обратного квантования, которая должна применяться. Модуль 306 обратного квантования, например, может выполнять операцию побитового сдвига влево, чтобы обратно квантовать квантованные коэффициенты преобразования. Модуль 306 обратного квантования в силу этого может формировать блок коэффициентов преобразования, включающий в себя коэффициенты преобразования.[0216] The 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 the inverse quantization module 306 to be applied. Inverse quantization module 306, for example, may perform a bit left shift operation to inversely quantize the quantized transform coefficients. The inverse quantization unit 306 can therefore generate a transform coefficient block including transform coefficients.

[0217] После того, как модуль 306 обратного квантования формирует блок коэффициентов преобразования, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к блоку коэффициентов преобразования, чтобы формировать остаточный блок, ассоциированный с текущим блоком. Например, модуль 308 обработки обратного преобразования может применять обратное DCT, обратное целочисленное преобразование, обратное преобразование Карунена-Лоэва (KLT), обратное вращательное преобразование, обратное направленное преобразование или другое обратное преобразование к блоку коэффициентов преобразования. В связи с этим, модуль 308 обработки обратного преобразования, наряду с другими компонентами видеодекодера 300 по фиг. 10, представляет примеры средств для формирования остаточных данных для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков.[0217] After the inverse quantization module 306 generates a block of transform coefficients, the inverse transform processing module 308 may apply one or more inverse transforms to the block of transform coefficients 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 transform (KLT), inverse rotational transform, inverse directional transform, or other inverse transform to the block of transform coefficients. In this regard, the inverse transform processing module 308, along with other components of the video decoder 300 of FIG. 10 provides examples of means for generating residual data for a current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks.

[0218] В соответствии с технологиями этого раскрытия сущности, модуль 308 обработки обратного преобразования может принимать информацию сегментации, ассоциированную с остаточным блоком для текущего блока данных, из модуля 302 энтропийного декодирования, и может определять сегментацию остаточного блока на множество остаточных субблоков. Как пояснено выше, модуль 302 энтропийного декодирования может декодировать информацию сегментации для остаточного блока текущего блока, которая указывает то, сегментируется или нет остаточный блок, то, остаточный блок горизонтально разбивается или вертикально разбивается, и то, остаточный блок симметрично разбивается или асимметрично разбивается. Модуль 308 обратной обработки может использовать эту информацию для того, чтобы определять множество остаточных субблоков, получающихся в результате сегментации остаточного блока для текущих блочных данных.[0218] In accordance with the techniques of this disclosure, the inverse transform processing module 308 can receive segmentation information associated with a residual block for a current data block from the entropy decoding module 302, and can determine the segmentation of the residual block into a plurality of residual subblocks. As explained above, the entropy decoding unit 302 can decode segmentation information for the residual block of the current block, which indicates whether or not the residual block is segmented, whether the residual block is horizontally split or vertically split, and whether the residual block is symmetrically split or asymmetrically split. The inverse processing module 308 may use this information to determine a plurality of residual subblocks resulting from the residual block segmentation for the current block data.

[0219] Модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к одному или более блоков коэффициентов преобразования, по меньшей мере, частично на основе информации сегментации, чтобы формировать остаточный блок для текущего блока видеоданных, что включает в себя формирование множества остаточных субблоков, получающихся в результате сегментации остаточного блока для текущих блочных данных. Таким образом, модуль 308 обработки обратного преобразования формирует остаточные данные для текущего блока видеоданных.[0219] The inverse transform processing unit 308 may apply one or more inverse transforms to one or more transform coefficient blocks based at least in part on the segmentation information to generate a residual block for the current block of video data, which includes generating a plurality of residual subblocks , resulting from segmentation of the residual block for the current block data. Thus, the inverse transform processing unit 308 generates residual data for the current video data block.

[0220] В некоторых примерах, модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований, указываемых посредством информации, декодированной из потока битов посредством модуля 302 энтропийного декодирования. Например, если поток битов включает в себя информацию, которая указывает преобразование, которое выбирается для каждого из множества остаточных субблоков, получающихся в результате сегментации остаточного блока, к примеру, MTS-индекс для каждого из соответствующих остаточных субблоков, в таком случае модуль 308 обработки обратного преобразования может применять выбранные преобразования ко множеству остаточных субблоков. В другом примере, если поток битов включает в себя информацию, которая указывает преобразование, которое выбирается для остаточного блока, в таком случае модуль 308 обработки обратного преобразования может применять выбранное преобразование к каждому из множества остаточных субблоков в остаточном блоке.[0220] In some examples, inverse transform processing module 308 may apply one or more inverse transforms indicated by information decoded from the bitstream by entropy decoding module 302. For example, if the bit stream includes information that indicates a transformation that is selected for each of a plurality of residual subblocks resulting from segmentation of the residual block, for example, an MTS index for each of the corresponding residual subblocks, then the inverse processing module 308 transformations can apply selected transformations to a plurality of residual subblocks. In another example, if the bit stream includes information that indicates a transform that is selected for a residual block, then the inverse transform processing unit 308 may apply the selected transform to each of a plurality of residual subblocks in the residual block.

[0221] В некоторых примерах, модуль 308 обработки обратного преобразования может логически выводить или ограничивать ядра преобразования для множества остаточных субблоков, по меньшей мере, в одном из: горизонтального направления или вертикального направления, по меньшей мере, частично на основе информации сегментации для остаточного блока, которая включается в поток битов, и/или другой вспомогательной информации. Логический вывод или ограничение ядер преобразования для множества остаточных субблоков включает в себя логический вывод или ограничение MTS-индекса или определения преобразования для множества остаточных субблоков, по меньшей мере, частично на основе информации сегментации для остаточного блока, которая включается в поток битов, и/или другой вспомогательной информации.[0221] In some examples, inverse transform processing module 308 may infer or constrain transform kernels for a plurality of residual subblocks in at least one of a horizontal direction or a vertical direction based at least in part on segmentation information for the residual block , which is included in the bit stream, and/or other auxiliary information. Inferring or constraining transform kernels for the plurality of residual subblocks includes inferring or constraining an MTS index or transform definition for the plurality of residual subblocks based at least in part on segmentation information for the residual block that is included in the bitstream, and/or other supporting information.

[0222] Логический вывод или ограничение ядер преобразования означает то, что ядра преобразования явно не передаются в служебных сигналах в потоке битов. Вместо этого, ядра преобразования могут логически выводиться или ограничиваться, по меньшей мере, частично на основе другой информации в потоке битов. В одном примере, ядра преобразования могут логически выводиться или ограничиваться на основе типа дерева сегментации остаточного блока, передаваемого в служебных сигналах посредством потока битов, к примеру, на основе того, сегментируется остаточный блок согласно сегментации на основе двоичного дерева, сегментации на 4 TU или сегментации на основе троичного дерева, на основе типа сегментации остаточного блока, к примеру, на основе того, остаточное дерево горизонтально разбивается или вертикально разбивается, и/или на основе любой другой вспомогательной информации, передаваемой в служебных сигналах в потоке битов. Модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к одному или более блоков коэффициентов преобразования, по меньшей мере, частично на основе логически выведенных или ограниченных ядер преобразования для множества остаточных субблоков, чтобы формировать остаточный блок для текущего блока видеоданных.[0222] Inference or limitation of transform kernels means that transform kernels are not explicitly signaled in the bit stream. Instead, the transformation kernels may be inferred or constrained at least in part based on other information in the bitstream. In one example, translation kernels may be inferred or constrained based on the type of segmentation tree of the residual block signaled by the bit stream, for example, based on whether the residual block is segmented according to binary tree segmentation, 4-TU segmentation, or segmentation based on the ternary tree, based on the segmentation type of the residual block, for example, based on whether the residual tree is horizontally split or vertically split, and/or based on any other auxiliary information signaled in the bitstream. Inverse transform processing module 308 may apply one or more inverse transforms to one or more transform coefficient blocks based at least in part on inferred or constrained transform kernels for a plurality of residual subblocks to generate a residual block for the current block of video data.

[0223] В некоторых примерах, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков, по меньшей мере, частично на основе информации сегментации для остаточного блока, которая включается в поток битов, и/или другой вспомогательной информации, и модуль 308 обработки обратного преобразования может применять одно или более обратных преобразований к одному или более блоков коэффициентов преобразования, по меньшей мере, частично на основе логически выведенных или ограниченных контекстных назначений для множества остаточных субблоков, чтобы формировать остаточный блок для текущего блока видеоданных.[0223] In some examples, the inverse transform processing module 308 may infer or constrain context assignments for a plurality of residual subblocks based at least in part on segmentation information for the residual block that is included in the bitstream and/or other supporting information, and inverse transform processing module 308 may apply one or more inverse transforms to one or more transform coefficient blocks based at least in part on inferred or constrained context assignments for the plurality of residual subblocks to generate a residual block for the current block of video data.

[0224] Когда контекстные назначения логически выводятся или ограничиваются, выбор преобразования для множества остаточных субблоков по-прежнему может быть возможным, при этом контексты назначаются для того, чтобы передавать в служебных сигналах такие выборы преобразования. Назначенный контекст может представлять собой отличающийся отдельный контекст относительно уже существующего контекста в передаче служебных сигналов выбора преобразования. Как результат, служебная информация преобразования может более эффективно кодироваться, и все варианты выбора преобразования могут быть доступными.[0224] When context assignments are inferred or constrained, mapping selections for multiple residual subblocks may still be possible, with contexts being assigned to signal such mapping selections. The assigned context may be a different separate context relative to a pre-existing context in transform selection signaling. As a result, the transform overhead information can be more efficiently encoded, and all transform choices can be made available.

[0225] Логический вывод или ограничение контекстных назначений для множества остаточных субблоков означает то, что контекстные назначения явно не передаются в служебных сигналах в потоке битов. Вместо этого, контекстные назначения могут логически выводиться или ограничиваться, по меньшей мере, частично на основе другой информации в потоке битов. В одном примере, контекстные назначения могут логически выводиться или ограничиваться на основе типа дерева сегментации остаточного блока, передаваемого в служебных сигналах посредством потока битов, к примеру, на основе того, сегментируется остаточный блок согласно сегментации на основе дерева квадрантов, сегментации на основе двоичного дерева, сегментации на 4 TU или сегментации на основе троичного дерева, на основе типа сегментации остаточного блока, к примеру, на основе того, остаточное дерево горизонтально разбивается или вертикально разбивается, и/или на основе любой другой вспомогательной информации, передаваемой в служебных сигналах в потоке битов. В некоторых примерах, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков для компонентов сигнала яркости текущего блока и/или компонентов сигнала цветности текущего блока.[0225] Inference or restriction of context assignments for multiple residual subblocks means that context assignments are not explicitly signaled in the bit stream. Instead, context assignments may be inferred or constrained based at least in part on other information in the bitstream. In one example, context assignments may be inferred or constrained based on the type of segmentation tree of the residual block signaled by the bitstream, e.g., based on whether the residual block is segmented according to a quadtree-based segmentation, a binary-tree-based segmentation, 4-TU segmentation or ternary tree segmentation, based on the segmentation type of the residual block, for example, based on whether the residual tree is horizontally partitioned or vertically partitioned, and/or based on any other ancillary information signaled in the bit stream . In some examples, the inverse transform processing module 308 may infer or constrain context assignments for a plurality of residual subblocks for the luma components of the current block and/or the chrominance components of the current block.

[0226] В одном примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DCT-8 используется в качестве как горизонтального преобразования, так и вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, таким образом, что DST-7 используется в горизонтальном преобразовании, и DST-8 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков, таким образом, что DCT-8 используется в горизонтальном преобразовании, и DST-7 используется в качестве вертикального преобразования для третьего остаточного субблока из множества остаточных субблоков, и таким образом, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для четвертого остаточного субблока из множества остаточных субблоков;.[0226] In one example, when the inverse transform processing module 308 determines that a residual block is segmented according to a quadtree-based segmentation into four residual subblocks, the inverse transform processing module 308 may infer or constrain context assignments for a plurality of residual subblocks such that that DCT-8 is used as both a horizontal transform and a vertical transform for a first residual subblock of a plurality of residual subblocks, such that DST-7 is used in a horizontal transform and DST-8 is used as a vertical transform for a second residual subblock of a plurality of residual subblocks such that DCT-8 is used as a horizontal transform and DST-7 is used as a vertical transform for the third residual subblock of the plurality of residual subblocks, and such that DST-7 is used as both a horizontal transform and and a vertical transformation for a fourth residual subblock of the plurality of residual subblocks;

[0227] В другом примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для каждого из множества остаточных субблоков.[0227] In another example, when the inverse transform processing module 308 determines that a residual block is segmented according to a quadtree-based segmentation into four residual subblocks, the inverse transform processing module 308 may infer or constrain context assignments for a plurality of residual subblocks such that that DST-7 is used as both a horizontal transform and a vertical transform for each of the plurality of residual subblocks.

[0228] В другом примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе дерева квадрантов на четыре остаточных субблока, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DCT-2 используется в качестве, по меньшей мере, одного из: горизонтального преобразования или вертикального преобразования для одного или более из множества остаточных субблоков. Таким образом, например, DCT-2 может логически выводиться или ограничиваться в качестве горизонтального преобразования, и DST-7 или DCT-8 может логически выводиться или ограничиваться в качестве вертикального преобразования для одного или более из множества остаточных субблоков, и DCT-2 может логически выводиться или ограничиваться в качестве вертикального преобразования, и DST-7 или DCT-8 может логически выводиться или ограничиваться в качестве горизонтального преобразования для одного или более из множества остаточных субблоков.[0228] In another example, when the inverse transform processing module 308 determines that a residual block is segmented according to a quadtree-based segmentation into four residual subblocks, the inverse transform processing module 308 may infer or constrain context assignments for a plurality of residual subblocks such that that DCT-2 is used as at least one of a horizontal transform or a vertical transform for one or more of a plurality of residual subblocks. Thus, for example, DCT-2 may be inferred or constrained as a horizontal transform, and DST-7 or DCT-8 may be inferred or constrained as a vertical transform for one or more of a plurality of residual subblocks, and DCT-2 may be inferred as a vertical transform. be output or constrained as a vertical transform, and DST-7 or DCT-8 may be logically derived or constrained as a horizontal transform for one or more of the plurality of residual subblocks.

[0229] В другом примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, и то, что тип сегментации для остаточного блока представляет собой горизонтальное разбиение, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DCT-2 используется в качестве горизонтального преобразования, и DCT-8 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и таким образом, что DCT-2 используется в качестве горизонтального преобразования, и DST-7 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков.[0229] In another example, when the inverse transform processing unit 308 determines that the residual block is segmented according to a binary tree segmentation into two residual subblocks, and that the segmentation type for the residual block is a horizontal partition, the inverse transform processing unit 308 may infer or constrain context assignments for a plurality of residual subblocks such that DCT-2 is used as a horizontal transform and DCT-8 is used as a vertical transform for the first residual subblock of the plurality of residual subblocks, and such that DCT-2 is used as a horizontal transform, and DST-7 is used as a vertical transform for the second residual subblock of the plurality of residual subblocks.

[0230] В другом примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, и то, что тип сегментации для остаточного блока представляет собой вертикальное разбиение, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DCT-8 используется в качестве горизонтального преобразования, и DCT-2 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и таким образом, что DST-7 используется в качестве горизонтального преобразования, и DCT-2 используется в качестве вертикального преобразования для второго остаточного субблока из множества остаточных субблоков.[0230] In another example, when the inverse transform processing unit 308 determines that the residual block is segmented according to a binary tree segmentation into two residual subblocks, and that the segmentation type for the residual block is a vertical partition, the inverse transform processing unit 308 may infer or constrain context assignments for a plurality of residual subblocks such that DCT-8 is used as a horizontal transform and DCT-2 is used as a vertical transform for the first residual subblock of the plurality of residual subblocks, and such that DST-7 is used as a horizontal transform, and DCT-2 is used as a vertical transform for the second residual subblock of the plurality of residual subblocks.

[0231] В другом примере, когда модуль 308 обработки обратного преобразования определяет то, что остаточный блок сегментируется согласно сегментации на основе двоичного дерева на два остаточных субблока, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества субблоков сегмента таким образом, что одно из: DST-7 или DCT-8 используется в качестве, по меньшей мере, одного из: горизонтального преобразования или вертикального преобразования для одного или более из множества остаточных субблоков. Использование DST-7 или DCT-8 может осуществляться вместо DCT-2 в примерах сегментации на основе двоичного дерева, описанных выше.[0231] In another example, when the inverse transform processing unit 308 determines that a residual block is segmented according to a binary tree-based segmentation into two residual subblocks, the inverse transform processing unit 308 may infer or constrain context assignments for multiple subblocks of the segment such that that one of DST-7 or DCT-8 is used as at least one of a horizontal transform or a vertical transform for one or more of the plurality of residual subblocks. The use of DST-7 or DCT-8 may be used instead of DCT-2 in the binary tree segmentation examples described above.

[0232] В некоторых примерах, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для остаточного блока, по меньшей мере, частично на основе размера остаточного блока. Например, когда остаточный блок имеет небольшой размер, к примеру, меньший или равный 16 выборкам (например, блок 4×4, который имеет размер 16 выборок), и когда остаточный блок сегментируется согласно сегментации на основе двоичного дерева, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DST-7 используется в качестве как горизонтального преобразования, так и вертикального преобразования для каждого из множества остаточных субблоков.[0232] In some examples, inverse transform processing module 308 may infer or constrain context assignments for a residual block based at least in part on the size of the residual block. For example, when the residual block has a small size, for example, less than or equal to 16 samples (for example, a 4x4 block that has a size of 16 samples), and when the residual block is segmented according to a binary tree-based segmentation, the inverse transform processing unit 308 may infer or constrain context assignments for the plurality of residual subblocks such that DST-7 is used as both a horizontal transform and a vertical transform for each of the plurality of residual subblocks.

[0233] В другом примере, когда остаточный блок имеет большой размер, к примеру, больший или равный 16 выборкам (например, блок 4×8, который имеет размер 32 выборок), и когда остаточный блок сегментируется согласно сегментации на основе двоичного дерева, модуль 308 обработки обратного преобразования может логически выводить или ограничивать контекстные назначения для множества остаточных субблоков таким образом, что DCT-2 используется в качестве горизонтального преобразования, и DST-7 используется в качестве вертикального преобразования для первого остаточного субблока из множества остаточных субблоков, и таким образом, что DCT-2 используется в качестве вертикального преобразования, и DST-7 используется в качестве горизонтального преобразования для второго остаточного субблока из множества остаточных субблоков.[0233] In another example, when the residual block has a large size, for example, greater than or equal to 16 samples (for example, a 4x8 block that has a size of 32 samples), and when the residual block is segmented according to a binary tree-based segmentation, the module Inverse transform processing 308 may infer or constrain context assignments for a plurality of residual subblocks such that DCT-2 is used as a horizontal transform and DST-7 is used as a vertical transform for the first residual subblock of the plurality of residual subblocks, and thus, that DCT-2 is used as a vertical transform, and DST-7 is used as a horizontal transform for the second residual subblock of the plurality of residual subblocks.

[0234] В другом примере, когда остаточный блок имеет размер по горизонтали или размер по вертикали, который меньше или равен 2 выборкам (например, блок 2×8), модуль 308 обработки обратного преобразования может логически выводить или ограничивать то, что преобразование не должно применяться ко множеству остаточных субблоков.[0234] In another example, when the residual block has a horizontal size or a vertical size that is less than or equal to 2 samples (e.g., a 2x8 block), the inverse transform processing module 308 may infer or constrain that the transform should not apply to multiple residual subblocks.

[0235] В некоторых примерах, модуль 308 обработки обратного преобразования может логически выводить контекстные назначения для множества остаточных субблоков на основе того, что текущий блок представляет собой внутренне прогнозированный видеоблок. В других примерах, модуль 308 обработки обратного преобразования может логически выводить контекстные назначения для множества остаточных субблоков на основе того, что текущий блок представляет собой взаимно прогнозированный видеоблок. В другом примере, модуль 308 обработки обратного преобразования может логически выводить контекстные назначения для множества остаточных субблоков на основе того, что текущий блок представляет собой взаимно прогнозированный видеоблок или внутренне прогнозированный видеоблок.[0235] In some examples, the inverse transform processing module 308 may infer context assignments for a plurality of residual subblocks based on the fact that the current block is an internally predicted video block. In other examples, the inverse transform processing module 308 may infer context assignments for a plurality of residual subblocks based on the fact that the current block is a mutually predicted video block. In another example, the inverse transform processing module 308 may infer context assignments for a plurality of residual subblocks based on the fact that the current block is an inter-predicted video block or an internally predicted video block.

[0236] Кроме того, модуль 304 обработки прогнозирования формирует прогнозный блок согласно синтаксическим элементам с информацией прогнозирования, которые энтропийно декодированы посредством модуля 302 энтропийного декодирования. Например, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок взаимно прогнозируется, модуль 316 компенсации движения может формировать прогнозный блок. В этом случае, синтаксические элементы с информацией прогнозирования могут указывать опорный кадр в DPB 314, из которого можно извлекать опорный блок, а также вектор движения, идентифицирующий местоположение опорного блока в опорном кадре относительно местоположения текущего блока в текущем кадре. Модуль 316 компенсации движения, в общем, может выполнять процесс взаимного прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 224 компенсации движения (фиг. 9).[0236] 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 syntax elements with prediction information indicate that the current block is mutually predicted, motion compensation module 316 may generate the prediction block. In this case, the prediction information syntax elements may indicate a reference frame in DPB 314 from which a reference block can be retrieved, 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 the method described with respect to the motion compensation module 224 (FIG. 9).

[0237] В качестве другого примера, если синтаксические элементы с информацией прогнозирования указывают то, что текущий блок внутренне прогнозируется, модуль 318 внутреннего прогнозирования может формировать прогнозный блок согласно режиму внутреннего прогнозирования, указываемому посредством синтаксических элементов с информацией прогнозирования. С другой стороны, модуль 318 внутреннего прогнозирования, в общем, может выполнять процесс внутреннего прогнозирования таким способом, который является практически аналогичным способу, описанному относительно модуля 226 внутреннего прогнозирования (фиг. 9). Модуль 318 внутреннего прогнозирования может извлекать данные соседних выборок по отношению к текущему блоку из DPB 314.[0237] As another example, if the prediction information syntax elements indicate that the current block is internally predicted, the intra prediction module 318 may generate the 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 the method described with respect to the intra prediction module 226 (FIG. 9). The intra prediction module 318 may retrieve data from neighboring samples relative to the current block from the DPB 314.

[0238] Модуль 310 восстановления может восстанавливать текущий блок с использованием прогнозного блока и остаточного блока. Например, модуль 310 восстановления может суммировать выборки остаточного блока с соответствующими выборками прогнозного блока, чтобы восстанавливать текущий блок. В связи с этим, модуль 310 восстановления, наряду с другими компонентами видеодекодера 300 по фиг. 10, представляет примеры средств для декодирования текущего блока с использованием остаточных данных.[0238] The recovery module 310 may recover the current block using the prediction block and the residual block. For example, reconstruction module 310 may sum the residual block samples with the corresponding prediction block samples to reconstruct the current block. In this regard, the restoration module 310, along with other components of the video decoder 300 of FIG. 10 presents examples of means for decoding a current block using residual data.

[0239] Модуль 312 фильтрации может выполнять одну или более операций фильтрации для восстановленных блоков. Например, модуль 312 фильтрации может выполнять операции удаления блочности, чтобы уменьшать артефакты блочности вдоль краев восстановленных блоков. Операции модуля 312 фильтрации не обязательно выполняются во всех примерах.[0239] Filtering module 312 may perform one or more filtering operations on the reconstructed blocks. For example, filtering module 312 may perform deblocking operations to reduce blocking artifacts along the edges of reconstructed blocks. The operations of filtering module 312 are not necessarily performed in all examples.

[0240] Видеодекодер 300 может сохранять восстановленные блоки в DPB 314. Например, в примерах, в которых операции модуля 312 фильтрации не выполняются, модуль 310 восстановления может сохранять восстановленные блоки в DPB 314. В примерах, в которых операции модуля 312 фильтрации выполняются, модуль 312 фильтрации может сохранять фильтрованные восстановленные блоки в DPB 314. Как пояснено выше, DPB 314 может предоставлять ссылочную информацию, такую как выборки текущего кадра для внутреннего прогнозирования и ранее декодированных кадров для последующей компенсации движения, в модуль 304 обработки прогнозирования. Кроме того, видеодекодер 300 может выводить декодированные кадры (например, декодированное видео) из DPB 314 для последующего представления на устройстве отображения, таком как устройство 118 отображения по фиг. 1.[0240] The video decoder 300 may store the reconstructed blocks in the DPB 314. For example, in examples in which the operations of the filtering module 312 are not performed, the reconstruction module 310 may store the reconstructed blocks in the DPB 314. In examples in which the operations of the filtering module 312 are performed, the module Filtering 312 may store the filtered 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 module 304. In addition, video decoder 300 may output decoded frames (eg, decoded video) from DPB 314 for subsequent presentation on a display device, such as display device 118 of FIG. 1.

[0241] Таким образом, видеодекодер 300 представляет пример устройства декодирования видео, включающего в себя запоминающее устройство, выполненное с возможностью сохранять видеоданные, и один или более модулей обработки, реализованных в схеме и выполненных с возможностью принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования; определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множество остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации; формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков; и декодировать текущий блок с использованием остаточных данных.[0241] Thus, video decoder 300 represents an example of a video decoding apparatus including a storage device configured to store video data, and one or more processing modules implemented in circuitry and configured to receive, in a bit stream that contains an encoded representation video data, information indicating whether or not a residual block is segmented, and information indicating a type of segmentation tree for the residual block based on the segmentation of the residual block, wherein the residual block indicates a difference between the current block and the prediction block; determine, based on the received information that the residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the type of segmentation tree; generating residual data for the current block at least in part based on segmenting the residual block according to the type of segmentation tree into a plurality of residual subblocks; and decode the current block using the residual data.

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

[0243] В этом примере, видеокодер 200 первоначально прогнозирует текущий блок (350). Например, видеокодер 200 может формировать блок прогнозирования для текущего блока. Видеокодер 200 затем может вычислять остаточный блок для текущего блока (352). Чтобы вычислять остаточный блок, видеокодер 200 может вычислять разность между исходным, некодированным блоком и блоком прогнозирования для текущего блока. В качестве части вычисления остаточного блока, видеокодер 200 может сегментировать остаточный блок на множество остаточных субблоков согласно, по меньшей мере, одному из следующего: сегментация на основе дерева квадрантов или сегментация на основе двоичного дерева. Если видеокодер 200 сегментирует остаточный блок согласно сегментации на основе двоичного дерева, видеокодер 200 может горизонтально сегментировать или вертикально сегментировать остаточный блок. Дополнительно, если видеокодер 200 сегментирует остаточный блок согласно сегментации на основе двоичного дерева, видеокодер 200 может симметрично сегментировать или асимметрично сегментировать остаточный блок.[0243] In this example, video encoder 200 initially predicts the current block (350). For example, video encoder 200 may generate a prediction block for the current block. Video encoder 200 may then calculate a residual block for the current block (352). To calculate a residual block, video encoder 200 may calculate the difference between the original, uncoded block and the prediction block for the current block. As part of the calculation of the residual block, video encoder 200 may segment the residual block into a plurality of residual subblocks according to at least one of a quadtree segmentation or a binary tree segmentation. If video encoder 200 segments a residual block according to a binary tree-based segmentation, video encoder 200 may horizontally segment or vertically segment the residual block. Additionally, if video encoder 200 segments a residual block according to a binary tree-based segmentation, video encoder 200 may symmetrically segment or asymmetrically segment the residual block.

[0244] Видеокодер 200 затем может преобразовывать и квантовать коэффициенты остаточного блока (354). Затем, видеокодер 200 может сканировать квантованные коэффициенты преобразования остаточного блока (356). В ходе сканирования или после сканирования, видеокодер 200 может энтропийно кодировать коэффициенты преобразования (358). Например, видеокодер 200 может кодировать коэффициенты преобразования с использованием CAVLC или CABAC. Видеокодер 200 затем может выводить энтропийно кодированные данные блока (360). Видеокодер 200 может выводить энтропийно кодированные данные блока в качестве потока битов. Поток битов может передавать в служебных сигналах для остаточного блока то, сегментируется или нет остаточный блок, тип дерева сегментации, используемый для того, чтобы сегментировать остаточный блок, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется.[0244] Video encoder 200 can then transform and quantize the coefficients of the residual block (354). Next, video encoder 200 may scan the quantized transform coefficients of the residual block (356). During or after scanning, video encoder 200 may entropy encode the transform coefficients (358). For example, video encoder 200 may encode the transform coefficients using CAVLC or CABAC. Video encoder 200 may then output entropy encoded block data (360). Video encoder 200 may output entropy encoded block data as a bitstream. The bitstream may signal in the residual block whether or not the residual block is segmented, the type of segmentation tree used to segment the residual block, information indicating whether or not the residual block is segmented, and information indicating the type of segmentation tree for the residual block that is segmented.

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

[0246] Видеодекодер 300 может принимать энтропийно кодированные данные для текущего блока, такие как поток битов, который включает в себя энтропийно кодированную информацию прогнозирования и энтропийно кодированные данные для коэффициентов остаточного блока, соответствующего текущему блоку (370). Видеодекодер 300 может энтропийно декодировать энтропийно кодированные данные для того, чтобы определять информацию прогнозирования для текущего блока и воспроизводить коэффициенты остаточного блока (372). Видеодекодер 300 может определять то, включает или нет поток битов, для остаточного блока для текущего блока, в себя информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока.[0246] Video decoder 300 may receive entropy encoded data for the current block, such as a bit stream that includes entropy encoded prediction information and entropy encoded data for coefficients of a residual block corresponding to the current block (370). Video decoder 300 may entropy decode the entropy encoded data to determine prediction information for the current block and reproduce coefficients of the residual block (372). The video decoder 300 may determine whether or not the bit stream for the residual block for the current block includes information indicating whether or not the residual block is segmented, and information indicating a type of segmentation tree for the residual block, based on the segmentation of the residual block.

[0247] Видеодекодер 300 может прогнозировать текущий блок (374), например, с использованием режима внутреннего или взаимного прогнозирования, как указано посредством информации прогнозирования для текущего блока, чтобы вычислять блок прогнозирования для текущего блока. Видеодекодер 300 затем может обратно сканировать воспроизведенные коэффициенты (376), чтобы создавать блок квантованных коэффициентов преобразования. Видеодекодер 300 затем может обратно квантовать и обратно преобразовывать коэффициенты для того, чтобы формировать остаточный блок (378). Видеодекодер 300 может использовать эту информацию относительно сегментации остаточного блока, чтобы логически выводить или ограничивать контекстное назначение и выбор преобразования для остаточного блока, чтобы обратно преобразовывать коэффициенты преобразования, чтобы формировать остаточный блок. Видеодекодер 300 может, в конечном счете, декодировать текущий блок посредством комбинирования блока прогнозирования и остаточного блока (380).[0247] Video decoder 300 may predict the current block (374), for example, using an intra or inter prediction mode, as indicated by the prediction information for the current block, to calculate a prediction block for the current block. Video decoder 300 may then backscan the reproduced coefficients (376) to create a block of quantized transform coefficients. Video decoder 300 can then dequantize and deconvert the coefficients to generate a residual block (378). Video decoder 300 may use this information regarding the residual block segmentation to infer or constrain the context assignment and transform selection for the residual block to back-transform the transform coefficients to form the residual block. Video decoder 300 may ultimately decode the current block by combining a prediction block and a residual block (380).

[0248] Фиг. 13 является блок-схемой последовательности операций, иллюстрирующей примерный способ для декодирования текущего блока данных, имеющих остаточный блок, который сегментируется согласно типу дерева сегментации. Хотя описывается относительно видеодекодера 300 (фиг. 1 и 10), следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять способ, аналогичный способу по фиг. 13. В некоторых примерах, видеодекодер 300 может включать в себя одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки. В некоторых примерах, видеодекодер 300 включает в себя, по меньшей мере, одно из следующего: интегральная схема, микропроцессор или устройство беспроводной связи. В некоторых примерах, видеодекодер 300 включает в себя дисплей, выполненный с возможностью отображать декодированные видеоданные.[0248] FIG. 13 is a flowchart illustrating an exemplary method for decoding a current block of data having a residual block that is segmented according to a segmentation tree type. Although described in relation to video decoder 300 (FIGS. 1 and 10), it should be understood that other devices may be configured to implement a method similar to the method of FIGS. 13. In some examples, video decoder 300 may include one or more of a camera, computer, mobile device, broadcast receiver, or set-top box. In some examples, video decoder 300 includes at least one of an integrated circuit, a microprocessor, or a wireless communication device. In some examples, video decoder 300 includes a display configured to display decoded video data.

[0249] Видеодекодер 300 может принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом остаточный блок указывает разность между текущим блоком и блоком прогнозирования (400).[0249] Video decoder 300 may receive, in a bit stream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the residual block indicates the difference between the current block and the prediction block (400).

[0250] В некоторых примерах, прием информации, указывающей тип дерева сегментации может включать в себя прием информации индекса в наборе типов деревьев, и видеодекодер 300 может определять тип дерева сегментации на основе принимаемой информации индекса. В некоторых примерах, информация набора типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева. В некоторых примерах, определение типа дерева сегментации может включать в себя определение того, что тип дерева сегментации представляет собой одно из сегментации на основе двоичного дерева, и видеодекодер 300 может принимать информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.[0250] In some examples, receiving information indicating a segmentation tree type may include receiving index information in a set of tree types, and video decoder 300 may determine the segmentation tree type based on the received index information. In some examples, the tree type set information includes one or more of a quadtree-based segmentation and a binary tree-based segmentation. In some examples, determining the segmentation tree type may include determining that the segmentation tree type is one of binary tree-based segmentation, and video decoder 300 may receive information indicating whether the residual block is horizontally split or vertically split.

[0251] Видеодекодер 300 может определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, множество остаточных субблоков, на которые остаточный блок сегментируется согласно типу дерева сегментации (402).[0251] Video decoder 300 may determine, based on received information regarding that a residual block is segmented and the type of segmentation tree for the residual block, a plurality of residual subblocks into which the residual block is segmented according to the type of segmentation tree (402).

[0252] Видеодекодер 300 может формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков (404). В некоторых примерах, видеодекодер 300 может логически выводить, из потока битов, ядра преобразования для множества остаточных субблоков, по меньшей мере, в одном из: горизонтального направления или вертикального направления, по меньшей мере, частично на основе одного из следующего: тип дерева сегментации для остаточного блока или тип сегментации для остаточного блока, при этом формирование остаточных данных для текущего блока дополнительно может включать в себя формирование остаточных данных, по меньшей мере, частично на основе ядер преобразования для множества остаточных субблоков.[0252] Video decoder 300 may generate residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks (404). In some examples, video decoder 300 may infer, from the bitstream, transform kernels for a plurality of residual subblocks in at least one of the horizontal direction or the vertical direction, based at least in part on one of the segmentation tree type for a residual block or a segmentation type for a residual block, wherein generating residual data for the current block may further include generating residual data based at least in part on transformation kernels for the plurality of residual subblocks.

[0253] Видеодекодер 300 может декодировать текущий блок с использованием остаточных данных (406).[0253] Video decoder 300 may decode the current block using the residual data (406).

[0254] В некоторых примерах, чтобы декодировать текущий блок с использованием остаточных данных, видеодекодер 300 может декодировать данные, представляющие режим прогнозирования для текущего блока, формировать блок прогнозирования для текущего блока с использованием режима прогнозирования и комбинировать блок прогнозирования с остаточными данными, чтобы воспроизводить текущий блок.[0254] In some examples, to decode the current block using the residual data, video decoder 300 may decode data representing a prediction mode for the current block, generate a prediction block for the current block using the prediction mode, and combine the prediction block with the residual data to reproduce the current block.

[0255] В некоторых примерах, текущий блок взаимно прогнозируется или внутренне прогнозируется. В некоторых примерах, текущий блок содержит блок сигналов яркости единицы кодирования (CU). В некоторых примерах, текущий блок представляет собой единицу кодирования (CU) или блок CU, остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU, и множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.[0255] In some examples, the current block is mutually predicted or internally predicted. In some examples, the current block contains a block of coding unit (CU) luminance signals. In some examples, the current block is a coding unit (CU) or CU block, a residual block for the current block is a translation unit (TU) or TU block, and a plurality of residual subblocks are non-square sub-TUs and have a different size from C.U.

[0256] Фиг. 14 является блок-схемой последовательности операций, иллюстрирующей примерный способ для кодирования текущего блока данных, имеющих остаточный блок, который сегментируется согласно типу дерева сегментации. Хотя описывается относительно видеокодера 200 (фиг. 1 и 9), следует понимать, что другие устройства могут быть выполнены с возможностью осуществлять способ, аналогичный способу по фиг. 14. В некоторых примерах, видеокодер 200 может включать в себя, по меньшей мере, одно из следующего: интегральная схема, микропроцессор или устройство беспроводной связи. В некоторых примерах, видеокодер 200 может включать в себя камеру, выполненную с возможностью захватывать видеоданные. В некоторых примерах, видеокодер 200 может включать в себя одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.[0256] FIG. 14 is a flowchart illustrating an exemplary method for encoding a current block of data having a residual block that is segmented according to a segmentation tree type. Although described in relation to video encoder 200 (FIGS. 1 and 9), it should be understood that other devices may be configured to implement a method similar to the method of FIGS. 14. In some examples, video encoder 200 may include at least one of an integrated circuit, a microprocessor, or a wireless communication device. In some examples, video encoder 200 may include a camera configured to capture video data. In some examples, video encoder 200 may include one or more of a camera, computer, mobile device, broadcast receiver, or set-top box.

[0257] Видеокодер 200 может определять то, что остаточный блок для текущего блока видеоданных сегментируется согласно типу дерева сегментации на множество остаточных субблоков (450). Видеокодер 200 может кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется (452).[0257] Video encoder 200 may determine that a residual block for the current video data block is segmented according to a segmentation tree type into a plurality of residual subblocks (450). Video encoder 200 may encode a stream of bits as a coded representation of video data that signals information indicating whether or not a residual block is segmented, and further signals information indicating the type of segmentation tree for the residual block that is segmented (452).

[0258] В некоторых примерах, поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется. В некоторых примерах, информация набора типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева. В некоторых примерах, когда информация, указывающая тип дерева сегментации для остаточного блока, указывает то, что тип дерева сегментации представляет собой одно из сегментации на основе двоичного дерева, поток битов дополнительно может передавать в служебных сигналах информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.[0258] In some examples, a stream of bits as an encoded representation of video data that signals information indicating whether or not a residual block is segmented, and further signals information indicating the type of segmentation tree for the residual block that is segmented. In some examples, the tree type set information includes one or more of a quadtree-based segmentation and a binary tree-based segmentation. In some examples, when the information indicating the segmentation tree type for the residual block indicates that the segmentation tree type is one of binary tree-based segmentation, the bit stream may further signal information indicating whether the residual block is horizontally split or breaks vertically.

[0259] В некоторых примерах, текущий блок представляет собой единицу кодирования (CU) или блок CU, остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU, и множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.[0259] In some examples, the current block is a coding unit (CU) or CU block, the residual block for the current block is a translation unit (TU) or TU block, and a plurality of residual subblocks are non-square sub-TUs and have a size of different from CU size.

[0260] Следует признавать то, что в зависимости от примера, определенные этапы или события любой из технологий, описанных в данном документе, могут выполняться в другой последовательности, могут добавляться, объединяться или вообще исключаться (например, не все описанные этапы или события требуются для практической реализации технологий). Кроме того, в определенных примерах, этапы или события могут выполняться одновременно, например, посредством многопоточной обработки, обработки прерывания или посредством нескольких процессоров, а не последовательно.[0260] It is 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 omitted altogether (for example, not all steps or events described are required to practical implementation of technologies). Additionally, in certain examples, steps or events may be executed concurrently, such as through multithreading, interrupt processing, or across multiple processors, rather than sequentially.

[0261] В одном или более примеров, описанные функции могут реализовываться в аппаратных средствах, программном обеспечении, микропрограммном обеспечении или в любой комбинации вышеозначенного. При реализации в программном обеспечении, функции могут сохраняться или передаваться, в качестве одной или более инструкций или кода, по машиночитаемому носителю и выполняться посредством аппаратного модуля обработки. Машиночитаемые носители могут включать в себя машиночитаемые носители хранения данных, которые соответствуют материальному носителю, такие как носители хранения данных, или среды связи, включающие в себя любую среду, которая упрощает перенос компьютерной программы из одного места в другое, например, согласно протоколу связи. Таким образом, машиночитаемые носители, в общем, могут соответствовать (1) материальному машиночитаемому носителю хранения данных, который является энергонезависимым, или (2) среде связи, такой как сигнал или несущая. Носители хранения данных могут представлять собой любые доступные носители, к которым может осуществляться доступ посредством одного или более компьютеров или одного или более процессоров, с тем чтобы извлекать инструкции, код и/или структуры данных для реализации технологий, описанных в этом раскрытии сущности. Компьютерный программный продукт может включать в себя машиночитаемый носитель.[0261] In one or more examples, the described functions may be implemented in hardware, software, firmware, or any combination thereof. When implemented in software, the functions may be stored or transmitted, as one or more instructions or code, on a computer-readable medium and executed by a hardware processing unit. Computer-readable media may include computer-readable storage media that corresponds to a tangible medium, such as storage media, or communication media, including any medium that facilitates the transfer of a computer program from one location to another, such as according to a communications protocol. Thus, computer-readable media may 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 to retrieve instructions, code and/or data structures to implement the technologies described in this disclosure. The computer program product may include a machine-readable medium.

[0262] В качестве примера, а не ограничения, эти машиночитаемые носители хранения данных могут содержать RAM, ROM, EEPROM, CD-ROM или другое устройство хранения данных на оптических дисках, устройство хранения данных на магнитных дисках или другие магнитные устройства хранения, флэш-память либо любой другой носитель, который может использоваться для того, чтобы сохранять требуемый программный код в форме инструкций или структур данных, и к которому можно осуществлять доступ посредством компьютера. Кроме того, любое соединение корректно называть машиночитаемым носителем. Например, если инструкции передаются из веб-узла, сервера или другого удаленного источника с помощью коаксиального кабеля, оптоволоконного кабеля, "витой пары", цифровой абонентской линии (DSL) или беспроводных технологий, таких как инфракрасные, радиопередающие и микроволновые среды, то коаксиальный кабель, оптоволоконный кабель, "витая пара", DSL или беспроводные технологии, такие как инфракрасные, радиопередающие и микроволновые среды, включаются в определение носителя. Тем не менее, следует понимать, что машиночитаемые носители хранения данных и носители хранения данных не включают в себя соединения, несущие, сигналы или другие энергозависимые носители, а вместо этого направлены на энергонезависимые материальные носители хранения данных. Диск (disk) и диск (disc) при использовании в данном документе включают в себя компакт-диск (CD), лазерный диск, оптический диск, универсальный цифровой диск (DVD), гибкий диск и диск Blu-Ray, при этом диски (disk) обычно воспроизводят данные магнитно, тогда как диски (disc) обычно воспроизводят данные оптически с помощью лазеров. Комбинации вышеперечисленного также следует включать в число машиночитаемых носителей.[0262] By way of example, and not limitation, these computer readable storage media may include RAM, ROM, EEPROM, CD-ROM or other optical disk storage device, magnetic disk storage device or other magnetic storage devices, flash memory or any other medium that can be used to store required program code in the form of instructions or data structures and that can be accessed by a computer. In addition, any connection is correctly called a machine-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 cable, 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. Disk and disc as used herein include compact disc (CD), laser disc, optical disc, digital versatile disc (DVD), floppy disk and Blu-ray disc, wherein disc ) typically reproduce data magnetically, while discs (discs) typically reproduce data optically using lasers. Combinations of the above should also be included among machine-readable media.

[0263] Инструкции могут выполняться посредством одного или более процессоров, например, одного или более процессоров цифровых сигналов (DSP), микропроцессоров общего назначения, специализированных интегральных схем (ASIC), программируемых пользователем вентильных матриц (FPGA) либо других эквивалентных интегральных или дискретных логических схем. Соответственно, термины "процессор" и "схема обработки", при использовании в данном документе могут означать любую из вышеприведенных структур или любую другую структуру, подходящую для реализации технологий, описанных в данном документе. Помимо этого, в некоторых аспектах функциональность, описанная в данном документе, может предоставляться в рамках специализированных аппаратных и/или программных модулей, выполненных с возможностью кодирования или декодирования либо встроенных в комбинированный кодек. Кроме того, технологии могут полностью реализовываться в одной или более схем или логических элементов.[0263] The instructions may be executed by one or more processors, such as one or more digital signal processors (DSPs), general purpose microprocessors, application specific integrated circuits (ASICs), field programmable gate arrays (FPGAs), or other equivalent integrated or discrete logic circuits . Accordingly, the terms "processor" and "processing circuitry" as used herein can mean any of the above structures or any other structure suitable for implementing the technologies described herein. Additionally, in some aspects, the functionality described herein may be provided within specialized hardware and/or software modules configured to encode or decode, or embedded within a combination codec. In addition, technologies may be implemented entirely in one or more circuits or logic elements.

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

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

Claims (100)

1. Способ декодирования видеоданных, при этом способ содержит этапы, на которых:1. A method for decoding video data, the method comprising the steps of: принимают, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом информация, указывающая тип дерева сегментации связана только с остаточным блоком, и при этом остаточный блок указывает на разницу между текущим блоком и блоком прогнозирования;receiving, in a bitstream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the information indicating the segmentation tree type is associated only with a residual block, wherein the residual block indicates a difference between the current block and the prediction block; определяют, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, сегментацию остаточного блока на множество остаточных субблоков согласно типу дерева сегментации;determining, based on the received information that the residual block is segmented and the type of segmentation tree for the residual block, segmenting the residual block into a plurality of residual subblocks according to the type of segmentation tree; логически выводят, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков и без приема в потоке битов для остаточного блока, синтаксический элемент, определенно указывающий типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;logically deriving, based on the determined segmentation of the residual block into a plurality of residual subblocks and without receiving in a bit stream for the residual block, a syntax element specifically indicating transformation types of the transformation kernel for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; формируют остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков и использования логически выведенного ядра преобразования; иgenerating residual data for the current block at least in part based on segmenting the residual block according to the type of segmentation tree into a plurality of residual subblocks and using the inferred transformation kernel; And декодируют текущий блок с использованием остаточных данных.decode the current block using the residual data. 2. Способ по п. 1, в котором прием информации, указывающей тип дерева сегментации, содержит этап, на котором принимают информацию индекса в наборе типов деревьев, при этом способ дополнительно содержит этап, на котором определяют тип дерева сегментации на основе принимаемой информации индекса.2. The method of claim 1, wherein receiving information indicating a segmentation tree type comprises receiving index information in a set of tree types, the method further comprising determining a segmentation tree type based on the received index information. 3. Способ по п. 2, в котором набор типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева.3. The method of claim 2, wherein the set of tree types includes one or more of quadtree segmentation and binary tree segmentation. 4. Способ по п. 2, в котором определение типа дерева сегментации содержит определение того, что тип дерева сегментации представляет собой сегментацию на основе двоичного дерева, при этом способ дополнительно содержит этап, на котором принимают информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.4. The method of claim 2, wherein determining the segmentation tree type comprises determining that the segmentation tree type is a binary tree-based segmentation, the method further comprising receiving information indicating whether the residual block is horizontally split or breaks vertically. 5. Способ по п. 1, в котором текущий блок взаимно прогнозируется или внутренне прогнозируется.5. The method of claim 1, wherein the current block is mutually predicted or internally predicted. 6. Способ по п. 1, в котором текущий блок содержит блок сигналов яркости единицы кодирования (CU).6. The method of claim 1, wherein the current block comprises a coding unit (CU) luminance signal block. 7. Способ по п. 1, в котором:7. The method according to claim 1, in which: текущий блок представляет собой единицу кодирования (CU) или блок CU;the current block is a coding unit (CU) or CU block; остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU; иthe residual block for the current block is a translation unit (TU) or TU block; And множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.the plurality of residual sub-units are non-square sub-TUs and have a different size from the CU size. 8. Способ по п. 1, в котором декодирование текущего блока содержит этапы, на которых:8. The method according to claim 1, in which decoding the current block contains the steps of: декодируют данные, представляющие режим прогнозирования для текущего блока;decoding data representing a prediction mode for the current block; формируют блок прогнозирования для текущего блока с использованием режима прогнозирования; иgenerating a prediction block for the current block using a prediction mode; And комбинируют блок прогнозирования с остаточными данными, чтобы воспроизводить текущий блок.combining the prediction block with the residual data to reproduce the current block. 9. Устройство для декодирования видеоданных, при этом устройство содержит:9. A device for decoding video data, wherein the device contains: запоминающее устройство, выполненное с возможностью сохранять видеоданные; иa storage device configured to store video data; And процессор, реализованный в схеме и выполненный с возможностью:a processor implemented in a circuit and configured to: принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом информация, указывающая тип дерева сегментации, связана только с остаточным блоком, и при этом остаточный блок указывает на разницу между текущим блоком и блоком прогнозирования;receive, in a bit stream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the information indicating a segmentation tree type is associated only with a residual block, and wherein the residual block indicates the difference between the current block and the prediction block; определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, сегментацию остаточного блока на множество остаточных субблоков согласно типу дерева сегментации;determine, based on the received information regarding that the residual block is segmented and the type of segmentation tree for the residual block, segmenting the residual block into a plurality of residual subblocks according to the type of the segmentation tree; логически выводить, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков и без приема в потоке битов для остаточного блока, синтаксический элемент, определенно указывающий типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;logically output, based on the determined segmentation of the residual block into a plurality of residual subblocks and without receiving in a bitstream for the residual block, a syntactic element specifically indicating the transform kernel transformation types for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков и использования логически выведенного ядра преобразования; иgenerating residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks and using an inferred transformation kernel; And декодировать текущий блок с использованием остаточных данных.decode the current block using the residual data. 10. Устройство по п. 9, в котором:10. Device according to claim 9, in which: процессор, выполненный с возможностью принимать информацию, указывающую тип дерева сегментации, дополнительно выполнен с возможностью принимать информацию индекса в наборе типов деревьев; иa processor configured to receive information indicating a segmentation tree type is further configured to receive index information on a set of tree types; And процессор дополнительно выполнен с возможностью определять тип дерева сегментации на основе принимаемой информации индекса.the processor is further configured to determine the type of segmentation tree based on the received index information. 11. Устройство по п. 10, в котором набор типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева.11. The apparatus of claim 10, wherein the set of tree types includes one or more of quadtree-based segmentation and binary-tree-based segmentation. 12. Устройство по п. 10, в котором:12. Device according to claim 10, in which: процессор, выполненный с возможностью определять тип дерева сегментации, дополнительно выполнен с возможностью определять то, что тип дерева сегментации представляет собой сегментацию на основе двоичного дерева; иthe processor configured to determine the type of the segmentation tree is further configured to determine that the type of the segmentation tree is a binary tree-based segmentation; And процессор дополнительно выполнен с возможностью принимать информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.the processor is further configured to receive information indicating whether the residual block is horizontally split or vertically split. 13. Устройство по п. 9, в котором текущий блок взаимно прогнозируется или внутренне прогнозируется.13. The apparatus of claim 9, wherein the current block is mutually predicted or internally predicted. 14. Устройство по п. 9, в котором текущий блок содержит блок сигналов яркости единицы кодирования (CU).14. The apparatus of claim 9, wherein the current block comprises a coding unit (CU) luminance signal block. 15. Устройство по п. 9, в котором:15. Device according to claim 9, in which: текущий блок представляет собой единицу кодирования (CU) или блок CU;the current block is a coding unit (CU) or CU block; остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU; иthe residual block for the current block is a translation unit (TU) or TU block; And множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.the plurality of residual sub-units are non-square sub-TUs and have a different size from the CU size. 16. Устройство по п. 9, в котором процессор, выполненный с возможностью декодировать текущий блок, дополнительно выполнен с возможностью:16. The device of claim 9, wherein the processor configured to decode the current block is further configured to: декодировать данные, представляющие режим прогнозирования для текущего блока;decode data representing the prediction mode for the current block; формировать блок прогнозирования для текущего блока с использованием режима прогнозирования; иgenerate a prediction block for the current block using the prediction mode; And комбинировать блок прогнозирования с остаточными данными, чтобы воспроизводить текущий блок.combine the prediction block with residual data to reproduce the current block. 17. Устройство по п. 9, дополнительно содержащее дисплей, выполненный с возможностью отображать декодированный текущий блок.17. The device of claim 9, further comprising a display configured to display the decoded current block. 18. Устройство по п. 9, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.18. The device of claim 9, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver, or a set-top box. 19. Устройство по п. 9, при этом устройство содержит по меньшей мере одно из следующего:19. The device of claim 9, wherein the device comprises at least one of the following: интегральная схема;integrated circuit; микропроцессор; илиmicroprocessor; or устройство беспроводной связи.wireless communication device. 20. Энергонезависимый машиночитаемый носитель хранения данных, имеющий сохраненные инструкции, которые при выполнении инструктируют процессору:20. A non-transitory computer-readable storage medium having stored instructions that, when executed, instruct the processor to: принимать, в потоке битов, который содержит кодированное представление видеоданных, информацию, указывающую то, сегментируется или нет остаточный блок, и информацию, указывающую тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом информация, указывающая тип дерева сегментации, связана только с остаточным блоком, и при этом остаточный блок указывает на разницу между текущим блоком и блоком прогнозирования;receive, in a bit stream that contains a coded representation of video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the information indicating a segmentation tree type is associated only with a residual block, and wherein the residual block indicates the difference between the current block and the prediction block; определять, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, сегментацию остаточного блока на множество остаточных субблоков согласно типу дерева сегментации;determine, based on the received information regarding that the residual block is segmented and the type of segmentation tree for the residual block, segmenting the residual block into a plurality of residual subblocks according to the type of the segmentation tree; логически выводить, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков и без приема в потоке битов для остаточного блока, синтаксический элемент, определенно указывающий типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;logically output, based on the determined segmentation of the residual block into a plurality of residual subblocks and without receiving in a bitstream for the residual block, a syntactic element specifically indicating the transform kernel transformation types for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; формировать остаточные данные для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков и использования логически выведенного ядра преобразования; иgenerating residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks and using an inferred transformation kernel; And декодировать текущий блок с использованием остаточных данных.decode the current block using the residual data. 21. Устройство для декодирования видеоданных, при этом устройство содержит:21. A device for decoding video data, wherein the device contains: средство для приема, в потоке битов, который содержит кодированное представление видеоданных, информации, указывающей то, сегментируется или нет остаточный блок, и информации, указывающей тип дерева сегментации для остаточного блока, на основе сегментации остаточного блока, при этом информация, указывающая тип дерева сегментации, связана только с остаточным блоком, и при этом остаточный блок указывает на разницу между текущим блоком и блоком прогнозирования;means for receiving, in a bit stream that contains an encoded representation of the video data, information indicating whether or not a residual block is segmented, and information indicating a segmentation tree type for the residual block, based on the segmentation of the residual block, wherein the information indicating the type of segmentation tree , is associated only with the residual block, and the residual block indicates the difference between the current block and the prediction block; средство для определения, на основе принимаемой информации касательно того, что остаточный блок сегментируется, и типа дерева сегментации для остаточного блока, сегментацию остаточного блока на множество остаточных субблоков согласно типу дерева сегментации;means for determining, based on the received information that a residual block is being segmented and a segmentation tree type for the residual block, segmenting the residual block into a plurality of residual subblocks according to the segmentation tree type; средство для логического выведения, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков и без приема в потоке битов для остаточного блока, синтаксического элемента, определенно указывающего типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;means for inferring, based on the determined segmentation of the residual block into a plurality of residual subblocks and without receiving in the bit stream for the residual block, a syntactic element specifically indicating transformation types of the transformation kernel for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; средство для формирования остаточных данных для текущего блока, по меньшей мере, частично на основе сегментации остаточного блока согласно типу дерева сегментации на множество остаточных субблоков и использования логически выведенного ядра преобразования; иmeans for generating residual data for the current block at least in part based on segmenting the residual block according to a segmentation tree type into a plurality of residual subblocks and using an inferred transformation kernel; And средство для декодирования текущего блока с использованием остаточных данных.means for decoding the current block using residual data. 22. Способ кодирования видеоданных, при этом способ содержит этапы, на которых:22. A method for encoding video data, the method comprising the steps of: логически выводят остаточный блок для текущего блока видеоданных согласно типу дерева сегментации на множество остаточных субблоков; иlogically outputting a residual block for the current video data block according to the type of segmentation tree into a plurality of residual subblocks; And определяют, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков, типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;determining, based on the determined segmentation of the residual block into a plurality of residual subblocks, transform kernel transformation types for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; кодируют поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется, при этом информация, указывающая тип дерева сегментации, связана только с остаточным блоком, и при этом поток битов кодируется без индекса, передаваемого в служебных сигналах, для типов преобразования для множества остаточных субблоков.encoding a stream of bits as a coded representation of video data that signals information indicating whether or not a residual block is segmented, and further signaling information indicating the type of segmentation tree for the residual block that is segmented, wherein information indicating the type segmentation tree is associated only with the residual block, and the bit stream is encoded without an index signaled for the transform types for the plurality of residual subblocks. 23. Способ по п. 22, в котором23. The method according to claim 22, in which поток битов, который передает в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, включает в себя информацию индекса в наборе типов деревьев.the bit stream that signals information indicating a segmentation tree type for a residual block includes index information in the set of tree types. 24. Способ по п. 23, в котором набор типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева.24. The method of claim 23, wherein the set of tree types includes one or more of quadtree-based segmentation and binary-tree-based segmentation. 25. Способ по п. 23, в котором,25. The method according to claim 23, in which, когда информация, указывающая тип дерева сегментации для остаточного блока, указывает то, что тип дерева сегментации представляет собой сегментацию на основе двоичного дерева, поток битов дополнительно передает в служебных сигналах информацию, указывающую то, остаточный блок горизонтально разбивается или вертикально разбивается.when the information indicating the segmentation tree type of the residual block indicates that the segmentation tree type is binary tree-based segmentation, the bitstream further signals information indicating whether the residual block is horizontally split or vertically split. 26. Способ по п. 22, в котором:26. The method according to claim 22, in which: текущий блок представляет собой единицу кодирования (CU) или блок CU;the current block is a coding unit (CU) or CU block; остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU; иthe residual block for the current block is a translation unit (TU) or TU block; And множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.the plurality of residual sub-units are non-square sub-TUs and have a different size from the CU size. 27. Устройство для кодирования видеоданных, при этом устройство содержит:27. A device for encoding video data, wherein the device contains: запоминающее устройство, выполненное с возможностью сохранять видеоданные; иa storage device configured to store video data; And процессор, реализованный в схеме и выполненный с возможностью:a processor implemented in a circuit and configured to: логически выводить остаточный блок для текущего блока видеоданных согласно типу дерева сегментации на множество остаточных субблоков; иlogically output a residual block for the current video data block according to the type of the segmentation tree into a plurality of residual subblocks; And определять, основываясь на определенной сегментации остаточного блока на множество остаточных субблоков, типы преобразования ядра преобразования для множества остаточных субблоков в по меньшей мере одном из горизонтального направления или вертикального направления;determine, based on the determined segmentation of the residual block into a plurality of residual subblocks, transform kernel transformation types for the plurality of residual subblocks in at least one of a horizontal direction or a vertical direction; кодировать поток битов в качестве кодированного представления видеоданных, которые передают в служебных сигналах информацию, указывающую то, сегментируется или нет остаточный блок, и дополнительно передают в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, который сегментируется, при этом информация, указывающая тип дерева сегментации, связана только с остаточным блоком, и при этом поток битов кодируется без индекса, передаваемого в служебных сигналах, для типов преобразования для множества остаточных субблоков.encode a stream of bits as an encoded representation of video data that signal information indicating whether or not a residual block is segmented, and further signal information indicating the type of segmentation tree for the residual block that is segmented, wherein information indicating the type segmentation tree is associated only with the residual block, and the bit stream is encoded without an index signaled for the transform types for the plurality of residual subblocks. 28. Устройство по п. 27, в котором28. The device according to claim 27, in which поток битов, который передает в служебных сигналах информацию, указывающую тип дерева сегментации для остаточного блока, включает в себя информацию индекса в наборе типов деревьев.the bit stream that signals information indicating a segmentation tree type for a residual block includes index information in the set of tree types. 29. Устройство по п. 28, в котором набор типов деревьев включает в себя одно или более из сегментации на основе дерева квадрантов и сегментации на основе двоичного дерева.29. The apparatus of claim 28, wherein the set of tree types includes one or more of quadtree-based segmentation and binary-tree-based segmentation. 30. Устройство по п. 29, в котором,30. The device according to claim 29, in which, когда поток битов передает в служебных сигналах то, что тип дерева сегментации для остаточного блока представляет собой сегментацию на основе двоичного дерева, поток битов дополнительно передает в служебных сигналах тип сегментации для остаточного блока, который указывает то, остаточный блок горизонтально разбивается или вертикально разбивается.when the bitstream signals that the segmentation tree type for the residual block is a binary tree-based segmentation, the bitstream further signals the segmentation type for the residual block that indicates whether the residual block is horizontally split or vertically split. 31. Устройство по п. 27, в котором:31. Device according to claim 27, in which: текущий блок представляет собой единицу кодирования (CU) или блок CU;the current block is a coding unit (CU) or CU block; остаточный блок для текущего блока представляет собой единицу преобразования (TU) или блок TU; иthe residual block for the current block is a translation unit (TU) or TU block; And множество остаточных субблоков представляют собой неквадратные суб-TU и имеют размер, отличающийся от размера CU.the plurality of residual sub-units are non-square sub-TUs and have a different size from the CU size. 32. Устройство по п. 27, дополнительно содержащее камеру, выполненную с возможностью захватывать видеоданные.32. The device of claim 27, further comprising a camera configured to capture video data. 33. Устройство по п. 27, при этом устройство содержит одно или более из камеры, компьютера, мобильного устройства, широковещательного приемного устройства или абонентской приставки.33. The device of claim 27, wherein the device comprises one or more of a camera, a computer, a mobile device, a broadcast receiver, or a set-top box. 34. Устройство по п. 27, при этом устройство содержит по меньшей мере одно из следующего:34. The device of claim 27, wherein the device comprises at least one of the following: интегральная схема;integrated circuit; микропроцессор; илиmicroprocessor; or устройство беспроводной связи.wireless communication device. 35. Способ по п. 1, в котором типы преобразования включают в себя DST-7, DCT-8 или DCT-2.35. The method of claim 1, wherein the conversion types include DST-7, DCT-8 or DCT-2. 36. Устройство по п. 9, в котором типы преобразования включают в себя DST-7, DCT-8 или DCT-2.36. The apparatus of claim 9, wherein the conversion types include DST-7, DCT-8 or DCT-2. 37. Способ по п. 22, в котором типы преобразования включают в себя DST-7, DCT-8 или DCT-2.37. The method of claim 22, wherein the conversion types include DST-7, DCT-8 or DCT-2. 38. Устройство по п. 27, в котором типы преобразования включают в себя DST-7, DCT-8 или DCT-2.38. The apparatus of claim 27, wherein the conversion types include DST-7, DCT-8, or DCT-2.
RU2021117197A 2018-12-19 2019-12-17 Tree-based transformation unit (tu) segmentation for video encoding RU2809181C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/782,292 2018-12-19
US16/715,274 2019-12-16

Publications (2)

Publication Number Publication Date
RU2021117197A RU2021117197A (en) 2023-01-19
RU2809181C2 true RU2809181C2 (en) 2023-12-07

Family

ID=

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272381A1 (en) * 2012-04-16 2013-10-17 Qualcomm Incorporated Simplified non-square quadtree transforms for video coding
US20160219290A1 (en) * 2015-01-26 2016-07-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US20170208336A1 (en) * 2016-01-15 2017-07-20 Qualcomm Incorporated Multi-type-tree framework for video coding
WO2018012830A1 (en) * 2016-07-13 2018-01-18 한국전자통신연구원 Image encoding/decoding method and device
US20180020218A1 (en) * 2016-07-15 2018-01-18 Qualcomm Incorporated Look-up table for enhanced multiple transform
WO2018035130A1 (en) * 2016-08-15 2018-02-22 Qualcomm Incorporated Intra video coding using a decoupled tree structure
RU2661331C2 (en) * 2014-10-08 2018-07-13 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method and device for encoding images with depth effect while video coding

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130272381A1 (en) * 2012-04-16 2013-10-17 Qualcomm Incorporated Simplified non-square quadtree transforms for video coding
RU2661331C2 (en) * 2014-10-08 2018-07-13 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method and device for encoding images with depth effect while video coding
US20160219290A1 (en) * 2015-01-26 2016-07-28 Qualcomm Incorporated Enhanced multiple transforms for prediction residual
US20170208336A1 (en) * 2016-01-15 2017-07-20 Qualcomm Incorporated Multi-type-tree framework for video coding
WO2018012830A1 (en) * 2016-07-13 2018-01-18 한국전자통신연구원 Image encoding/decoding method and device
US20180020218A1 (en) * 2016-07-15 2018-01-18 Qualcomm Incorporated Look-up table for enhanced multiple transform
WO2018035130A1 (en) * 2016-08-15 2018-02-22 Qualcomm Incorporated Intra video coding using a decoupled tree structure

Similar Documents

Publication Publication Date Title
CN112204969B (en) Codec adaptive multi-transform information for video coding
US20200366937A1 (en) Low-frequency non-separable transform signaling based on zero-out patterns for video coding
EP3949399A1 (en) Extended multiple transform selection for video coding
CA3131886A1 (en) Implicit transform selection in video coding
US11323748B2 (en) Tree-based transform unit (TU) partition for video coding
WO2021034761A1 (en) Low-frequency non-separable transform (lfnst) signaling
EP3918796A1 (en) Secondary transform designs for partitioned transform units in video coding
EP3824628A1 (en) Transform variations of multiple separable transform selection
EP3939274A1 (en) Video coding in triangular prediction unit mode using different chroma formats
EP4078955A1 (en) Low-frequency non-separable transform (lfnst) with reduced zero-out in video coding
RU2809181C2 (en) Tree-based transformation unit (tu) segmentation for video encoding
RU2807684C2 (en) Implicitly transformation selection when encoding video
RU2813008C2 (en) Coding coefficients for skip conversion mode
KR20240087720A (en) Adaptive decision of multiple transform candidates for video coding
KR20220083709A (en) Parametric Graph-Based Discrete Transformation for Video Coding