RU2780422C1 - Method and apparatus for video encoding - Google Patents

Method and apparatus for video encoding Download PDF

Info

Publication number
RU2780422C1
RU2780422C1 RU2021129053A RU2021129053A RU2780422C1 RU 2780422 C1 RU2780422 C1 RU 2780422C1 RU 2021129053 A RU2021129053 A RU 2021129053A RU 2021129053 A RU2021129053 A RU 2021129053A RU 2780422 C1 RU2780422 C1 RU 2780422C1
Authority
RU
Russia
Prior art keywords
spu
video
size
height
width
Prior art date
Application number
RU2021129053A
Other languages
Russian (ru)
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 Тенсент Америка Ллс
Application granted granted Critical
Publication of RU2780422C1 publication Critical patent/RU2780422C1/en

Links

Images

Abstract

FIELD: encoding.
SUBSTANCE: invention relates to video encoding tools. The encoded information of the coding block (CB) is decoded in an image from the bitstream of the encoded video, wherein the encoded information indicates the width of the CB equal to W counts and the height of the CB equal to H counts. The CB is divided into sub-processing units (SPU) with a width and height, wherein the width of a SPU is equal to the minimum value from W and K, or the height of a SPU is equal to the minimum value from H and K. At least one of the width W and height H for the CB herein is greater than the size K of the processing data unit. The partitioning structure for the additional partitioning of the SPU is determined based on the width and height of the SPU and the maximum size of the transformation unit (TU), constituting M samples, wherein at least one from the width and height of the SPU is greater than M. Each of the SPU is divided into TUs with the dimensions M×M based on the determined partitioning structure.
EFFECT: increase in the efficiency of video encoding.
14 cl, 58 dwg

Description

ВКЛЮЧЕНИЕ ПОСРЕДСТВОМ ССЫЛКИINCLUSION BY LINK

[0001] Настоящее изобретение испрашивает приоритет патентной заявки США №16/823,831, "Method and Apparatus for Video Coding", поданной 19 марта 2020 г., которая испрашивает приоритет предварительной заявки США №62/822,787, "Modified VPDU Compatible Max Transform Control", поданной 22 марта 2019 г. Содержание предыдущих заявок, таким образом, включено посредством ссылки в полном объеме.[0001] The present invention claims priority of U.S. Patent Application No. 16/823,831, "Method and Apparatus for Video Coding", filed March 19, 2020, which claims priority of U.S. Provisional Application No. 62/822,787, "Modified VPDU Compatible Max Transform Control" filed March 22, 2019. The contents of previous applications are hereby incorporated by reference in their entirety.

ОБЛАСТЬ ТЕХНИКИ, K КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕFIELD OF TECHNOLOGY TO WHICH THE INVENTION RELATES

[0002] В настоящей заявке описаны варианты осуществления, в целом относящиеся к видеокодированию.[0002] This application describes embodiments generally related to video coding.

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

[0003] Описание уровня техники приведено здесь с целью представления в целом контекста изобретения. Работа авторов изобретения, в той мере, в какой она описана в этом разделе, а также аспекты описания, которые не могут квалифицироваться как уровень техники на момент подачи заявки, ни прямо, ни косвенно не признаются уровнем техники, лежащим в основе настоящего изобретения.[0003] The description of the prior art is provided herein for the purpose of presenting the overall context of the invention. The work of the authors of the invention, to the extent that it is described in this section, as well as aspects of the description that cannot be qualified as state of the art at the time of filing, neither expressly nor impliedly recognized as the state of the art underlying the present invention.

[0004] Кодирование и декодирование видеосигнала может осуществляться с использованием предсказания между изображениями с компенсацией движения. Цифровое видео без сжатия может включать в себя последовательность изображений, каждое из которых имеет пространственный размер, например, 1920 × 1080 отсчетов яркости и связанных с ними отсчетов цветности. Последовательность изображений может иметь фиксированную или переменную частоту смены изображений (неформально также называемую частотой кадров), например, 60 изображений в секунду, или 60 Гц. Видео без сжатия предъявляет значительные требования к битовой скорости. Например, видео 1080р60 4:2:0 с 8 битами на отсчет (разрешение отсчетов яркости 1920×1080 при частоте кадров 60 Гц) требует полосы около 1,5 Гбит/с. Час такого видео требует объема памяти более 600 ГБ.[0004] Encoding and decoding of the video signal may be performed using inter-picture prediction with motion compensation. Uncompressed digital video may include a sequence of images, each of which has a spatial size of, for example, 1920×1080 luma samples and their associated chrominance samples. The image sequence may have a fixed or variable image rate (informally also referred to as frame rate), such as 60 images per second, or 60 Hz. Uncompressed video has significant bitrate requirements. For example, 1080p60 4:2:0 video with 8 bits per sample (resolution of 1920x1080 luma samples at 60Hz frame rate) requires about 1.5Gbps of bandwidth. An hour of such video requires more than 600 GB of storage.

[0005] Одной целью кодирования и декодирования видеосигнала может быть снижение избыточности во входном видеосигнале путем сжатия. Сжатие может способствовать смягчению вышеупомянутых требований к полосе или объему памяти, в ряде случаев на два порядка величины или более. Можно использовать как сжатие без потерь, так и сжатие с потерями, а также их комбинацию. Сжатие без потерь относится к методам реконструкции точной копии исходного сигнала из сжатого исходного сигнала. При использовании сжатия с потерями реконструированный сигнал может быть не идентичен исходному сигналу, но расхождение между исходным и реконструированным сигналами достаточно мало, так чтобы реконструированный сигнал можно было использовать для намеченного применения. Сжатие с потерями широко применяется для видео. Допустимая степень искажения зависит от применения; например, пользователи некоторых заказных потоковых приложений могут мириться с более высокими искажениями, чем пользователи телевещательных приложений. Достижимая степень сжатия может отражать, что более высокое разрешенное/допустимое искажение может давать более высокую степень сжатия.[0005] One goal of video encoding and decoding may be to reduce redundancy in the input video signal by compressing. Compression can help to alleviate the aforementioned bandwidth or storage requirements, in some cases by two orders of magnitude or more. You can use both lossless and lossy compression, as well as a combination of both. Lossless compression refers to techniques for reconstructing an exact copy of the original signal from the compressed original signal. When lossy compression is used, the reconstructed signal may not be identical to the original signal, but the discrepancy between the original and reconstructed signals is small enough that the reconstructed signal can be used for the intended application. Lossy compression is widely used for video. The amount of distortion allowed depends on the application; for example, users of some custom streaming applications can tolerate higher distortion than users of broadcast TV applications. The achievable compression ratio may reflect that a higher allowed/allowable distortion may result in a higher compression ratio.

[0006] Кодер и декодер видеосигнала может использовать методы из нескольких широких категорий, включающих в себя, например, компенсацию движения, преобразование, квантование и энтропийное кодирование.[0006] The video encoder and decoder may use techniques from several broad categories including, for example, motion compensation, transformation, quantization, and entropy coding.

[0007] Технологии видеокодека могут включать в себя методы, известные как внутреннее кодирование. При внутреннем (интра-) кодировании значения отсчетов представляются без ссылки на отсчеты или другие данные из ранее реконструированных опорных изображений. В некоторых видеокодеках изображение пространственно разделяется на блоки отсчетов. Когда все блоки отсчетов кодируются в интра-режиме, изображение называется интра-изображением. Интра-изображения и их производные, например, изображения, полученные в режиме независимого обновления декодера, могут использоваться для сброса состояния декодера, что позволяет использовать их как первое изображение в битовом потоке кодированного видео и видеосеансе, или как неподвижное изображение. Отсчеты интра-блока могут подвергаться преобразованию, и коэффициенты преобразования могут квантоваться до энтропийного кодирования. Внутреннее предсказание может быть методом минимизации значений отсчетов в области предварительного преобразования. В ряде случаев, чем меньше значение DC (постоянной составляющей) после преобразования, и чем меньше коэффициенты АС (переменных составляющих), тем меньше битов требуется при данном размере шага квантования для представления блока после энтропийного кодирования.[0007] Video codec technologies may include techniques known as intra-coding. With internal (intra-) coding, sample values are represented without reference to samples or other data from previously reconstructed reference pictures. In some video codecs, the image is spatially divided into blocks of samples. When all blocks of samples are encoded in intra-mode, the picture is called an intra-picture. Intra-pictures and their derivatives, such as pictures obtained in the decoder independent update mode, can be used to reset the decoder state, allowing them to be used as the first picture in the encoded video bitstream and video session, or as a still picture. The intra-block samples may be transformed and the transform coefficients may be quantized prior to entropy coding. Intra-prediction may be a technique for minimizing sample values in the pre-transform region. In some cases, the smaller the value of DC (constant component) after the transformation, and the smaller the AC (variable components) coefficients, the fewer bits are required for a given quantization step size to represent a block after entropy coding.

[0008] Традиционное внутреннее кодирование, известное, например, из технологий кодирования поколения MPEG-2, не использует внутреннего предсказания. Однако некоторые более современные технологии сжатия видео включают в себя методы, которые пытаются, например, из данных окружающих отсчетов и/или метаданных, полученных в ходе кодирования/декодирования пространственно соседних и предшествующих в порядке декодирования, блоков данных. Такие методы далее именуются методами "внутреннего предсказания". Заметим, что по меньшей мере в некоторых случаях внутреннее предсказание осуществляется только с использованием опорных данных из текущего изображения, подлежащего реконструкции, но не из опорных изображений.[0008] Conventional intra coding known, for example, from MPEG-2 generation coding technologies, does not use intra prediction. However, some more recent video compression techniques include techniques that attempt, for example, from ambient sample data and/or metadata obtained during encoding/decoding of spatially adjacent and preceding data blocks in decoding order. Such methods are hereinafter referred to as "internal prediction" methods. Note that, in at least some cases, intra prediction is only performed using reference data from the current picture to be reconstructed, and not from reference pictures.

[0009] Может существовать много разных форм внутреннего предсказания. Когда в данной технологии видеокодирования может использоваться более одного из таких методов, используемый метод может кодироваться в режиме внутреннего предсказания. В некоторых случаях, режимы могут иметь подрежимы и/или параметры, которые могут кодироваться по отдельности или включаться в кодовое слово режима. Использование того или иного кодового слова для данной комбинации режимов/подрежимов/параметров может оказывать влияние на выигрыш в эффективности кодирования посредством внутреннего предсказания и, следовательно, на технологию энтропийного кодирования, используемую для перевода кодовых слов в битовый поток.[0009] There may be many different forms of intra prediction. When more than one of these methods can be used in a given video coding technology, the method used can be encoded in intra prediction mode. In some cases, modes may have sub-modes and/or parameters that may be encoded separately or included in the mode codeword. The use of a particular codeword for a given combination of modes/submodes/parameters can affect the gain in coding efficiency through intra prediction and hence the entropy coding technology used to translate the codewords into the bitstream.

[0010] Определенный режим внутреннего предсказания впервые был задан в Н.264, уточнен в Н.265, и дополнительно уточнен в более современных технологиях кодирования, например, модели совместного исследования (JEM, joint exploration model), универсального видеокодирования (VVC, versatile video coding) и наборе эталонов (BMS, benchmark set). Блок предсказателя может формироваться с использованием значений соседних отсчетов, принадлежащих уже доступным отсчетам. Значения соседних отсчетов копируются в блок предсказателя согласно направлению. Ссылка на используемое направление может кодироваться в битовом потоке или может сама пр еде казываться.[0010] A certain mode of intra prediction was first specified in H.264, refined in H.265, and further refined in more modern coding technologies, for example, the joint exploration model (JEM, joint exploration model), universal video coding (VVC, versatile video coding) and a set of standards (BMS, benchmark set). The predictor block can be formed using the values of neighboring samples belonging to already available samples. The values of neighboring samples are copied into the predictor block according to the direction. The reference to the direction to be used may be encoded in the bitstream, or may itself be predicated.

[0011] В нижнем правом углу фиг. 1А изображено подмножество из девяти направлений предсказателя множества, известных из 33 возможных направлений предсказателя Н.265 (соответствующих 33 угловым режимам из 35 интра-режимов). Точка (101), где сходятся стрелки, представляет предсказываемый отсчет.Стрелки представляют направление, из которого предсказывается отсчет.Например, стрелка (102) указывает, что отсчет (101) предсказывается из отсчета или отсчетов, расположенного(ых) вверху справа, под углом 45 градусов к горизонтали. Аналогично, стрелка (103) указывает, что отсчет (101) предсказывается из отсчета или отсчетов расположенного(ых) внизу слева от отсчета (101), под углом 22,5 градусов к горизонтали.[0011] In the lower right corner of FIG. 1A shows a subset of nine set predictor directions known from 33 possible H.265 predictor directions (corresponding to 33 angle modes out of 35 intra modes). The point (101) where the arrows converge represents the predicted reading. The arrows represent the direction from which the reading is predicted. 45 degrees to the horizontal. Likewise, arrow (103) indicates that sample (101) is predicted from the sample(s) located down to the left of sample (101), at an angle of 22.5 degrees to the horizontal.

[0012] В верхнем левом углу фиг. 1А изображен квадратный блок (104) 4×4 отсчетов (указанный жирной пунктирной линией). Квадратный блок (104) включает в себя 16 отсчетов, каждая из которых обозначена буквой "S", позицией по оси Y (например, индексом строки) и позицией по оси X (например, индексом столбца). Например, отсчет S21 является вторым отсчетом по оси Y (сверху) и первым (слева) отсчетом по оси X. Аналогично, отсчет S44 является четвертым отсчетом в блоке (104) по обеим осям Y и X. Поскольку блок имеет размер 4×4 отсчета, S44 располагается внизу справа. Дополнительно показаны опорные отсчеты, которые следуют аналогичной схеме нумерации. Опорный отсчет обозначается буквой R, своей Y-позицией (например, индексом строки) и Х-позицией (индексом столбца) относительно блока (104). В обоих Н.264 и Н.265 предсказанные отсчеты соседствуют с блоком, подлежащим реконструкции; поэтому нет необходимости использовать отрицательные значения.[0012] In the upper left corner of FIG. 1A depicts a square block (104) of 4×4 samples (indicated by the heavy dotted line). The square block (104) includes 16 samples, each labeled with an "S", a y-axis position (eg, row index) and an x-axis position (eg, column index). For example, sample S21 is the second sample on the Y axis (top) and the first sample (left) on the X axis. Similarly, sample S44 is the fourth sample in block (104) on both the Y and X axes. Since the block has a size of 4×4 samples , S44 is located at the bottom right. Additionally, reference readings are shown, which follow a similar numbering scheme. The reference sample is denoted by the letter R, its Y-position (eg, row index) and X-position (column index) relative to the block (104). In both H.264 and H.265, the predicted samples are adjacent to the block to be reconstructed; so there is no need to use negative values.

[0013] Предсказание внутри изображения может работать путем копирования опорных значений отсчетов из соседних отсчетов, указанных сигнализируемым направлением предсказания. Например, предположим, что битовый поток кодированного видео включает в себя сигнализацию, которая, для этого блока, указывает направление предсказания, обозначенное стрелкой (102) - то есть отсчеты предсказываются из предсказанного(ых) отсчета или отсчетов, рас положенно го(ых) вверху справа, под углом 45 градусов к горизонтали. В этом случае отсчеты S41, S32, S23 и S14 предсказываются из одного и того же опорного отсчета R05. Затем отсчет S44 предсказывается из опорного отсчета R08.[0013] Intra-picture prediction may work by copying sample reference values from neighboring samples indicated by the signaled prediction direction. For example, suppose the coded video bitstream includes signaling which, for this block, indicates the direction of prediction indicated by the arrow (102) - that is, the samples are predicted from the predicted sample(s) located at the top. on the right, at an angle of 45 degrees to the horizontal. In this case, samples S41, S32, S23 and S14 are predicted from the same reference sample R05. Then, the sample S44 is predicted from the reference sample R08.

[0014] В некоторых случаях значения множества опорных отсчетов можно комбинировать, например посредством интерполяция, для вычисления опорного отсчета; в особенности, когда направления не кратны 45 градусам.[0014] In some cases, the values of a plurality of reference samples may be combined, such as by interpolation, to calculate a reference sample; especially when the directions are not multiples of 45 degrees.

[0015] Количество возможных направлений увеличивается по мере развития технологий видеокодирования. В Н.264 (2003 год) можно было представлять девять разных направлений. В Н.265 это количество увеличилось до 33 (2013 год), и JEM/VVC/BMS, во время составления данного описания, может поддерживать до 65 направлений. Были проведены эксперименты для выявления наиболее вероятных направлений, и некоторые методы энтропийного кодирования используются для представления этих вероятных направлений малым количеством битов, ценой утраты некоторых менее вероятных направлений. Дополнительно, сами направления иногда можно предсказывать из соседних направлений, используемых в соседних, уже декодированных, блоках.[0015] The number of possible directions increases as video coding technologies develop. In H.264 (2003), nine different directions could be represented. In H.265 this has increased to 33 (2013), and JEM/VVC/BMS, at the time of writing this description, can support up to 65 destinations. Experiments have been made to identify the most likely directions, and some entropy encoding techniques are used to represent these likely directions with a small number of bits, at the cost of losing some of the less likely directions. Additionally, the directions themselves can sometimes be predicted from adjacent directions used in adjacent already decoded blocks.

[0016] На фиг. 1В показана диаграмма (180), где изображено 65 направлений внутреннего предсказания согласно JEM для иллюстрации увеличения количества направлений предсказания с течением времени.[0016] FIG. 1B is a diagram (180) showing 65 intra prediction directions according to JEM to illustrate an increase in the number of prediction directions over time.

[0017] Отображение битов направлений внутреннего предсказания в битовом потоке кодированного видео, которые представляют направление, может отличаться от одной технологии видеокодирования к другой технологии видеокодирования; и может охватывать, например, от простого прямого отображения направления предсказания до режима внутреннего предсказания, кодовых слов, сложных адаптивных схем, задействующих наиболее вероятные режимы, и аналогичных методов. Однако во всех случаях могут существовать некоторые направления, возникновение которых в видеоконтенте статистически менее вероятно, чем для некоторых других направлений. Поскольку целью сжатия видео является снижение избыточности, эти менее вероятные направления, в хорошо работающей технологии видеокодирования, будут представляться большим количеством битов, чем более вероятные направления.[0017] The mapping of intra prediction direction bits in the encoded video bitstream that represent the direction may differ from one video coding technology to another video coding technology; and may cover, for example, from simple forward prediction direction mapping to intra prediction mode, code words, complex adaptive schemes involving most likely modes, and similar techniques. However, in all cases, there may be some trends that are statistically less likely to occur in video content than for some other trends. Because the goal of video compression is to reduce redundancy, these less likely directions will, in a well-performing video coding technology, be represented by more bits than more likely directions.

[0018] Компенсация движения может представлять собой метод сжатия с потерями и может относятся к методам, где блок данных отсчетов из ранее реконструированного изображения или его части (опорного изображения), подвергнутый пространственному сдвигу в направлении, указанном вектором движения (далее MV, motion vector), используется для предсказания вновь реконструированного изображения или части изображения. В ряде случаев опорное изображение может быть идентично реконструируемому в данный момент изображению. MV могут иметь два измерения X и Y или три измерения, причем третье указывает используемое опорное изображение (последнее, косвенно, может быть временным измерением).[0018] Motion compensation may be a lossy compression method and may refer to methods where a block of sample data from a previously reconstructed image or part of it (reference image) is spatially shifted in the direction indicated by the motion vector (hereinafter MV, motion vector) , is used to predict a newly reconstructed image or part of an image. In some cases, the reference image may be identical to the image currently being reconstructed. MVs may have two X and Y dimensions, or three dimensions, with the third indicating the reference picture used (the latter, indirectly, may be a temporal dimension).

[0019] В некоторых методах сжатия видео, MV, применимый к определенной области данных отсчетов, можно предсказывать из других MV, например, связанных с другой областью данных отсчетов, пространственно соседних с реконструируемой областью, и предшествующих этому MV в порядке декодирования. Это позволяет существенно сократить объем данных, необходимый для кодирования MV, тем самым устраняя избыточность и повышая степень сжатия. Предсказание MV может работать эффективно, например, благодаря тому, что при кодировании входного видеосигнала, полученного от камеры (известного как естественное видео) существует статистическая вероятность того, что области, более обширные, чем область, к которой применим один-единственный MV, движутся в аналогичном направлении, и поэтому в ряде случаев могут предсказываться с использованием аналогичного вектора движения, полученного из MV соседней области. В результате MV, найденный для данной области, оказывается аналогичным или идентичным MV, предсказанному из окружающих MV, и который, в свою очередь, может быть представлен, после энтропийного кодирования, меньшим количеством битов, чем использовалось бы при кодировании MV напрямую. В ряде случаев, предсказание MV может служить примером сжатия без потерь сигнала (а именно, MV), полученного из исходного сигнала (а именно: потока отсчетов). В других случаях предсказание MV само может быть с потерями, например, ввиду ошибок округления при вычислении предсказателя из нескольких окружающих MV.[0019] In some video compression techniques, the MV applicable to a certain region of sample data may be predicted from other MVs, such as those associated with another region of sample data, spatially adjacent to the reconstructed region, and preceding that MV in decoding order. This can significantly reduce the amount of data required for MV encoding, thereby eliminating redundancy and increasing the compression ratio. MV prediction can work efficiently, for example, due to the fact that when encoding the input video signal received from the camera (known as natural video), there is a statistical probability that areas larger than the area to which a single MV is applied move in similar direction, and therefore in some cases can be predicted using a similar motion vector obtained from the MV of the neighboring area. As a result, the MV found for a given region is similar or identical to the MV predicted from the surrounding MVs, which in turn can be represented, after entropy encoding, in fewer bits than would be used when encoding the MV directly. In some cases, MV prediction can serve as an example of lossless compression of a signal (namely, MV) obtained from the original signal (namely, a stream of samples). In other cases, the MV prediction itself may be lossy, for example, due to rounding errors when computing a predictor from multiple surrounding MVs.

[0020] Различные механизмы предсказания MV описаны в H.265/HEVC (ITU-T Rec. Н.265, "High Efficiency Video Coding", декабрь 2016). Из множества механизмов предсказания MV, предлагаемых в Н.265, здесь описан метод далее именуемый "пространственным объединением".[0020] Various MV prediction mechanisms are described in H.265/HEVC (ITU-T Rec. H.265, "High Efficiency Video Coding", December 2016). Of the many MV prediction mechanisms offered in H.265, a technique hereinafter referred to as "spatial pooling" is described.

[0021] Согласно фиг. 2, текущий блок (201) содержит отсчеты, найденные кодером в процессе поиска движения, для предсказания из предыдущего блока того же размера, который пространственно сдвинут.Вместо того, чтобы кодировать этот MV напрямую, MV можно получить из метаданных, связанных с одним или более опорными изображениями, например, из самого последнего (в порядке декодирования) опорного изображения, с использованием MV, связанного с любым из пяти окружающих отсчетов, обозначенных А0, А1, и В0, B1, В2 (202-206, соответственно). В Н.265 предсказание MV может использовать предсказатели из того же опорного изображения, которое использует соседний блок.[0021] Referring to FIG. 2, the current block (201) contains the samples found by the encoder during the motion search process to predict from a previous block of the same size that is spatially shifted. Instead of encoding this MV directly, the MV can be obtained from the metadata associated with one or more reference pictures, eg, from the most recent (in decoding order) reference picture, using the MV associated with any of the five surrounding samples, labeled A0, A1, and B0, B1, B2 (202-206, respectively). In H.265, MV prediction may use predictors from the same reference picture as the neighboring block uses.

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

[0022] Аспекты изобретения предусматривают способы и устройства для кодирования/декодирования видеосигнала. В некоторых примерах устройство для видеодекодирования включает в себя схему обработки. Схема обработки выполнена с возможностью декодирования кодированной информации блока кодирования (СВ, coding block) в изображении из битового потока кодированного видео. Кодированная информация указывает ширину W отсчетов и высоту Н отсчетов СВ. Схема обработки может разбивать СВ на суб-единицы обработки (SPU, sub-processing units), имеющие ширину, равную минимальному значению из W и K, и высоту, равную минимальному значению из Н и K. По меньшей мере одна из ширины W и высоты Н для СВ больше размера K единицы данных обработки. Схема обработки может определять структуру разбиения для дополнительного разбиения SPU на основании ширины и высоты SPU и максимального размера единицы преобразования (TU, transform unit) М отсчетов. По меньшей мере одна из ширины и высоты SPU больше М. Схема обработки может разбивать каждую из SPU на TU размерами МхМ на основании определенной структуры разбиения.[0022] Aspects of the invention provide methods and apparatus for encoding/decoding a video signal. In some examples, the video decoding apparatus includes a processing circuit. The processing circuit is configured to decode encoded coding block information (CB) in an image from an encoded video bitstream. The encoded information indicates the width W of the samples and the height H of the samples CB. The processing scheme may partition the CB into sub-processing units (SPUs) having a width equal to the minimum value of W and K and a height equal to the minimum value of H and K. At least one of the width W and the height H for CB is greater than the size K of the processing data unit. The processing circuit may determine the split structure for the additional split of the SPU based on the width and height of the SPU and the maximum size of the transform unit (TU) M samples. At least one of the width and height of the SPUs is greater than M. The processing circuit may partition each of the SPUs into TUs of size MxM based on the determined partitioning structure.

[0023] Согласно варианту осуществления, ширина и высота SPU больше М. схема обработки может определять структуру разбиения как структуру разбиения в виде квадрадерева. Схема обработки может разбивать SPU на TU на основании структуры разбиения в виде квадрадерева.[0023] According to an embodiment, the width and height of the SPU is greater than M. The processing circuit may determine the partition structure as a quadtree partition structure. The processing scheme may partition SPUs into TUs based on a quadtree partition structure.

[0024] Согласно варианту осуществления, ширина SPU больше М, и высота SPU равна М. Схема обработки может определять структуру разбиения как структуру вертикального разбиения в виде двоичного дерева. Схема обработки может разбивать SPU на TU на основании структуры вертикального разбиения в виде двоичного дерева.[0024] According to an embodiment, the width of the SPU is greater than M and the height of the SPU is M. The processing circuit may determine the partition structure as a vertical partition structure in the form of a binary tree. The processing circuit may partition SPUs into TUs based on a binary tree vertical partitioning structure.

[0025] Согласно варианту осуществления, высота SPU больше М, и ширина SPU равна М. Схема обработки может определять структуру разбиения как структуру горизонтального разбиения в виде двоичного дерева. Схема обработки может разбивать SPU на TU на основании структуры горизонтального разбиения в виде двоичного дерева.[0025] According to an embodiment, the height of the SPU is greater than M and the width of the SPU is M. The processing circuit may determine the split structure as a horizontal split structure in the form of a binary tree. The processing circuit may partition SPUs into TUs based on a horizontal binary tree partitioning structure.

[0026] Согласно варианту осуществления, схему обработки может рекурсивно разбивать одну из SPU на TU на основании структуры разбиения.[0026] According to an embodiment, the processing scheme may recursively partition one of the SPUs into TUs based on the partition structure.

[0027] Согласно варианту осуществления, схема обработки может обрабатывать SPU согласно первому порядку сканирования, и обрабатывать TU в каждой из SPU согласно второму порядку сканирования. В примере, по меньшей мере одним из первого порядка сканирования и второго порядка сканирования является один из (i) растрового порядка сканирования, (ii) вертикального порядка сканирования, (iii) зигзагообразного порядка и (iv) диагонального порядка сканирования. В примере, первый порядок сканирования и второй порядок сканирования являются растровыми. В примере, W равно 128, Н равно 64, K равно 64 и М равно 32. Первый порядок сканирования является порядком слева направо, и второй порядок сканирования является растровым порядком сканирования.[0027] According to an embodiment, the processing circuit may process the SPUs according to the first scan order, and process the TUs in each of the SPUs according to the second scan order. In an example, at least one of the first scan order and the second scan order is one of (i) raster scan order, (ii) vertical scan order, (iii) zigzag scan order, and (iv) diagonal scan order. In the example, the first scan order and the second scan order are raster. In the example, W is 128, H is 64, K is 64, and M is 32. The first scan order is left-to-right order, and the second scan order is raster scan order.

[0028] Согласно варианту осуществления, размер K единицы данных обработки указывает размер единицы данных виртуального конвейера (VPDU, virtual pipeline data unit). Первая из SPU включена в первую VPDU, и вторая из SPU включена во вторую VPDU в изображении. После обработки первой VPDU на первой ступени многоступенчатого конвейера, схема обработки может одновременно обрабатывать первую VPDU на второй ступени многоступенчатого конвейера и вторую VPDU на первой ступени.[0028] According to an embodiment, the processing data unit size K indicates the virtual pipeline data unit (VPDU) size. The first of the SPUs is included in the first VPDU and the second of the SPUs is included in the second VPDU in the picture. After processing the first VPDU in the first stage of the multi-stage pipeline, the processing circuit may simultaneously process the first VPDU in the second stage of the multi-stage pipeline and the second VPDU in the first stage.

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

[0029] Дополнительные особенности, характер и различные преимущества раскрытого изобретения будут понятны из нижеследующего подробного описания и прилагаемых чертежей, на которых:[0029] Additional features, nature and various advantages of the disclosed invention will be apparent from the following detailed description and the accompanying drawings, in which:

[0030] фиг. 1А - схема иллюстративного подмножества режимов внутреннего предсказания;[0030] FIG. 1A is a diagram of an exemplary subset of intra prediction modes;

[0031] фиг. 1В - схема направлений внутреннего предсказания;[0031] FIG. 1B is a diagram of intra prediction directions;

[0032] фиг. 2 - схема текущего блока и окружающих его кандидатов на пространственное объединение в одном примере;[0032] FIG. 2 is a diagram of the current block and its surrounding space merge candidates in one example;

[0033] фиг. 3 - упрощенная блок-схема системы (300) связи в соответствии с вариантом осуществления;[0033] FIG. 3 is a simplified block diagram of a communications system (300) in accordance with an embodiment;

[0034] фиг. 4 - упрощенная блок-схема системы связи (400) в соответствии с вариантом осуществления;[0034] FIG. 4 is a simplified block diagram of a communication system (400) in accordance with an embodiment;

[0035] фиг. 5 - упрощенная блок-схема декодера в соответствии с вариантом осуществления;[0035] FIG. 5 is a simplified block diagram of a decoder according to an embodiment;

[0036] фиг. 6 - упрощенная блок-схема кодера в соответствии с вариантом осуществления;[0036] FIG. 6 is a simplified block diagram of an encoder according to an embodiment;

[0037] фиг. 7 - блок-схема кодера в соответствии с другим вариантом осуществления;[0037] FIG. 7 is a block diagram of an encoder according to another embodiment;

[0038] фиг. 8 - блок-схема декодера в соответствии с другим вариантом осуществления;[0038] FIG. 8 is a block diagram of a decoder according to another embodiment;

[0039] фиг. 9А - CTU, которая разбивается с помощью структуры (910) квадрадерева плюс двоичное дерево (QTBT, quadtree plus binary tree);[0039] FIG. 9A shows a CTU that is partitioned with a quadtree plus binary tree (910) structure (QTBT);

[0040] фиг. 9 В - структура (920) QTBT;[0040] FIG. 9 V - structure (920) QTBT;

[0041] фиг. 9С - горизонтальное центрально-боковое троичное дерево;[0041] FIG. 9C - horizontal center-side ternary tree;

[0042] фиг. 9D - вертикальное центрально-боковое троичное дерево;[0042] FIG. 9D - vertical center-side ternary tree;

[0043] фиг. 10A-10D - матрицы ядра преобразования 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразования DCT-2, соответственно;[0043] FIG. 10A-10D show 4-point, 8-point, 16-point, and 32-point DCT-2 transform kernel matrices, respectively;

[0044] фиг. 11А-11Е матрица 64×64 ядра преобразования 64-точечного преобразования DCT-2;[0044] FIG. 11A-11E is a 64x64 matrix of the transform kernel of the 64-point DCT-2 transform;

[0045] фиг. 12 - базисные функции преобразования выбранного дискретного синусного преобразования (DST, discrete sine transform)/ дискретного косинусного преобразования (DCT, discrete cosine transform) адаптивного множественного преобразования (АМТ, adaptive multiple transform);[0045] FIG. 12 - basic transformation functions of the selected discrete sine transform (DST, discrete sine transform) / discrete cosine transform (DCT, discrete cosine transform) adaptive multiple transform (AMT, adaptive multiple transform);

[0046] фиг. 13 - таблица (1300), иллюстрирующая отношение отображения между значением mts_idx и соответствующими горизонтальными или вертикальными преобразованиями;[0046] FIG. 13 is a table (1300) illustrating a mapping relationship between an mts_idx value and corresponding horizontal or vertical transformations;

[0047] фиг. 14A-14D - матрицы ядра преобразования преобразования DST-7;[0047] FIG. 14A-14D show DST-7 transform transform kernel matrices;

[0048] фиг. 15A-15D - матрицы ядра преобразования преобразования DCT-8;[0048] FIG. 15A-15D show DCT-8 transform transformation kernel matrices;

[0049] фиг. 16 - количество субчастей в зависимости от размера блока;[0049] FIG. 16 - the number of sub-parts depending on the size of the block;

[0050] фиг. 17 - пример интра-субразбиения (ISP, intra sub-partition);[0050] FIG. 17 - an example of intra-sub-partition (ISP, intra sub-partition);

[0051] фиг. 18 - пример ISP.[0051] FIG. 18 is an example of an ISP.

[0052] фиг. 19А-19В - пример синтаксических элементов (1900) для режима кодирования с ISP;[0052] FIG. 19A-19B show example syntax elements (1900) for ISP encoding mode;

[0053] фиг. 20A-20D - примеры преобразования субблоков (SBT, sub-block transform);[0053] FIG. 20A-20D show examples of sub-block transform (SBT, sub-block transform);

[0054] фиг. 21A-21I - пример текстовой спецификации стандарта видеокодирования при использовании SBT;[0054] FIG. 21A-21I show an example of a textual specification of a video coding standard when using SBT;

[0055] фиг. 22 - разные YUV-форматы, используемые в некоторых вариантах осуществления;[0055] FIG. 22 shows various YUV formats used in some embodiments;

[0056] фиг. 23 - примеры запрещенного разбиения в виде троичного дерева (ТТ, ternary tree) и двоичного дерева (ВТ, binary tree);[0056] FIG. 23 - examples of forbidden partitioning in the form of a ternary tree (ТТ, ternary tree) and a binary tree (BT, binary tree);

[0057] фиг. 24 - пример синтаксиса дерева преобразования;[0057] FIG. 24 is an example of a transformation tree syntax;

[0058] фиг. 25 - блок (2510) кодирования размером 128×64 отсчета;[0058] FIG. 25 - block (2510) encoding size 128×64 samples;

[0059] фиг. 26А - блок (2610А) кодирования размером 128×32 отсчета;[0059] FIG. 26A - block (2610A) encoding size 128×32 samples;

[0060] фиг. 26В - блок (2610В) кодирования размером 128×32 отсчета;[0060] FIG. 26B - coding block (2610B) with a size of 128×32 samples;

[0061] фиг. 27 - блок-схема операций процесса (2700) согласно варианту осуществления изобретения;[0061] FIG. 27 is a block diagram of the operations of a process (2700) according to an embodiment of the invention;

[0062] фиг. 28 - схема компьютерной системы в соответствии с вариантом осуществления.[0062] FIG. 28 is a diagram of a computer system in accordance with an embodiment.

ПОДРОБНОЕ ОПИСАНИЕ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯDETAILED DESCRIPTION OF EMBODIMENTS

[0063] I. Кодер и декодер для видеокодирования[0063] I. Encoder and decoder for video coding

[0064] На фиг. 3 показана упрощенная блок-схема системы (300) связи согласно варианту осуществления настоящего изобретения. Система (300) связи включает в себя множество оконечных устройств, которые могут осуществлять связь друг с другом, например, через сеть (350). Например, система (300) связи включает в себя первую пару оконечных устройств (310) и (320), соединенных между собой через сеть (350). В примере, приведенном на фиг. 3, первая пара оконечных устройств (310) и (320) осуществляет однонаправленную передачу данных. Например, оконечное устройство (310) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством (310)), для передачи в другое оконечное устройство (320) через сеть (350). Кодированные видеоданные могут передаваться в форме одного или более битовых потоков кодированного видео. Оконечное устройство (320) может принимать кодированные видеоданные из сети (350), декодировать кодированные видеоданные для восстановления видеоизображений и отображения видеоизображений согласно восстановленным видеоданным. Однонаправленная передача данных может быть свойственна приложениям служб массовой информации и т.п.[0064] FIG. 3 shows a simplified block diagram of a communication system (300) according to an embodiment of the present invention. The communication system (300) includes a plurality of terminal devices that can communicate with each other, for example, via a network (350). For example, the communication system (300) includes a first pair of terminals (310) and (320) interconnected via a network (350). In the example shown in FIG. 3, the first pair of terminals (310) and (320) performs a unidirectional data transfer. For example, terminal device (310) may encode video data (eg, a video stream captured by terminal device (310)), for transmission to another terminal device (320) via network (350). The encoded video data may be transmitted in the form of one or more encoded video bitstreams. The terminal device (320) may receive the encoded video data from the network (350), decode the encoded video data to recover the video images, and display the video images according to the recovered video data. One-way communication may be inherent in media service applications and the like.

[0065] В другом примере, система (300) связи включает в себя вторую пару оконечных устройств (330) и (340) которые осуществляют двунаправленную передачу кодированных видеоданных, которые могут возникать, например, в ходе видеоконференцсвязи. Для двунаправленной передачи данных, в порядке примера, каждое оконечное устройство из оконечных устройств (330) и (340) может кодировать видеоданные (например, поток видеоизображений, захваченных оконечным устройством) для передачи в другое оконечное устройство из оконечных устройств (330) и (340) через сеть (350). Каждое оконечное устройство из оконечных устройств (330) и (340) также может принимать кодированные видеоданные, передаваемые другим оконечным устройством из оконечных устройств (330) и (340), и может декодировать кодированные видеоданные для восстановления видеоизображений и отображать видеоизображения на доступном устройстве отображения согласно восстановленным видеоданным.[0065] In another example, the communication system (300) includes a second pair of terminals (330) and (340) that carry out bi-directional transmission of encoded video data that may occur, for example, during a video conference. For bidirectional data communication, by way of example, each terminal of terminals (330) and (340) may encode video data (eg, a video stream captured by the terminal) for transmission to the other terminal of terminals (330) and (340). ) via the network (350). Each terminal of terminals (330) and (340) may also receive encoded video data transmitted by another terminal from terminals (330) and (340) and may decode the encoded video data to reconstruct video images and display video images on an available display device according to recovered video data.

[0066] В примере, приведенном на фиг. 3, оконечные устройства (310), (320), (330) и (340) могут быть проиллюстрированы как серверы, персональные компьютеры и смартфоны, но это не ограничивает принципы настоящего изобретения. Варианты осуществления настоящего изобретения находят применение для портативных компьютеров, планшетных компьютеров, медиаплееров и/или специального оборудования для видеоконференцсвязи. Сеть (350) представляет любое количество сетей, которые переносят кодированные видеоданные между оконечными устройствами (310), (320), (330) и (340), включая, например, проводные и/или беспроводные сети связи. Сеть (350) связи позволяет обмениваться данными в режиме канальной коммутации и/или пакетной коммутации. Иллюстративные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или интернет. В целях настоящего рассмотрения, архитектура и топология сети (350) могут не иметь отношения к настоящему изобретению, если конкретно не указаны ниже.[0066] In the example shown in FIG. 3, terminal devices (310), (320), (330), and (340) can be illustrated as servers, personal computers, and smartphones, but this does not limit the principles of the present invention. Embodiments of the present invention find application in laptop computers, tablet computers, media players and/or dedicated video conferencing equipment. Network (350) represents any number of networks that carry encoded video data between terminals (310), (320), (330) and (340), including, for example, wired and/or wireless communication networks. The communication network (350) allows data to be exchanged in a circuit-switched and/or packet-switched mode. Exemplary networks include telecommunications networks, local area networks, wide area networks, and/or the Internet. For the purposes of this discussion, the architecture and topology of the network (350) may not be relevant to the present invention unless specifically noted below.

[0067] На фиг. 4 показано, в порядке примера применения раскрытого изобретения, размещение видеокодера и видеодекодера в окружении потоковой передачи. Раскрытое изобретение может быть в равной степени применимо к другим применениям обработки видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, в том числе CD, DVD, карте памяти и т.п.[0067] FIG. 4 shows, as an example of the application of the disclosed invention, the placement of a video encoder and a video decoder in a streaming environment. The disclosed invention may be equally applicable to other video processing applications, including, for example, video conferencing, digital television, storage of compressed video on digital media, including CD, DVD, memory card, and the like.

[0068] Система потоковой передачи может включать в себя подсистему (413) захвата, которая может включать в себя источник (401) видеосигнала, например, цифровую камеру, создающую, например, поток (402) видеоизображений, не подвергнутых сжатию. Например, поток (402) видеоизображений включает в себя отсчеты, взятые цифровой камерой. Поток (402) видеоизображений, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными видеоданными (404) (или битовыми потоками кодированного видео), может обрабатываться электронным устройством (420), которое включает в себя видеокодер (403), подключенный к источнику (401) видеосигнала. Видеокодер (403) может включать в себя оборудование, программное обеспечение или их комбинацию для обеспечения или реализации аспектов раскрытого изобретения, как более подробно описано ниже. Кодированные видеоданные (404) (или битовый поток (404) кодированного видео), изображенные тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком (402) видеоизображений, могут храниться на потоковом сервере (405) для использования в будущем. Одна или более клиентских подсистем потоковой передачи, например, клиентские подсистемы (406) и (408) на фиг. 4, могут осуществлять доступ к потоковому серверу (405) для извлечения копий (407) и (409) кодированных видеоданных (404). Клиентская подсистема (406) может включать в себя видеодекодер (410), например, в электронном устройстве (430). Видеодекодер (410) декодирует входящую копию (407) кодированных видеоданных и создает исходящий поток (411) видеоизображений, который может визуализироваться на дисплее (412) (например, отображающем экране) или другом устройстве визуализации (не показано). В некоторых системах потоковой передачи, кодированные видеоданные (404), (407) и (409) (например, битовые потоки видео) могут кодироваться согласно тем или иным стандартам кодирования/сжатия видео. Примеры этих стандартов включают в себя ITU-Т Recommendation Н.265. Например, разрабатывается стандарт видеокодирования под официальным названием "универсальное видеокодирование" (VVC, универсальное видеокодирование). Раскрытое изобретение может использоваться в контексте VVC.[0068] The streaming system may include a capture subsystem (413), which may include a video source (401), such as a digital camera, producing, for example, an uncompressed video stream (402). For example, the video stream (402) includes samples taken by a digital camera. The video stream (402), shown in bold to emphasize the large amount of data compared to the encoded video data (404) (or encoded video bitstreams), may be processed by an electronic device (420) that includes a video encoder (403) connected to source (401) of the video signal. The video encoder (403) may include hardware, software, or a combination thereof for providing or implementing aspects of the disclosed invention, as described in more detail below. The encoded video data (404) (or encoded video bitstream (404)), depicted with a thin line to emphasize the smaller amount of data compared to the video stream (402), may be stored on the streaming server (405) for future use. One or more streaming client subsystems, such as client subsystems (406) and (408) in FIG. 4 may access the streaming server (405) to retrieve copies (407) and (409) of the encoded video data (404). The client subsystem (406) may include a video decoder (410), such as in an electronic device (430). The video decoder (410) decodes the incoming copy (407) of the encoded video data and creates an outgoing video stream (411) that can be rendered on a display (412) (eg, a display screen) or other rendering device (not shown). In some streaming systems, the encoded video data (404), (407), and (409) (eg, video bitstreams) may be encoded according to one or another video coding/compression standard. Examples of these standards include ITU-T Recommendation H.265. For example, a video coding standard is being developed, officially called Universal Video Coding (VVC, Universal Video Coding). The disclosed invention may be used in the context of VVC.

[0069] Заметим, что электронные устройства (420) и (430) могут включать в себя другие компоненты (не показаны). Например, электронное устройство (420) может включать в себя видеодекодер (не показан), и электронное устройство (430) также может включать в себя видеокодер (не показан).[0069] Note that the electronic devices (420) and (430) may include other components (not shown). For example, electronic device (420) may include a video decoder (not shown), and electronic device (430) may also include a video encoder (not shown).

[0070] На фиг. 5 показана блок-схема видеодекодера (510) согласно варианту осуществления настоящего изобретения. Видеодекодер (510) может входить в состав электронного устройства (530). Электронное устройство (530) может включать в себя приемник (531) (например, приемные схемы). Видеодекодер (510) может использоваться вместо видеодекодера (410) в примере, приведенном на фиг. 4.[0070] FIG. 5 shows a block diagram of a video decoder (510) according to an embodiment of the present invention. The video decoder (510) may be included in the electronic device (530). The electronic device (530) may include a receiver (531) (eg, receiver circuits). Video decoder (510) may be used instead of video decoder (410) in the example shown in FIG. four.

[0071] Приемник (531) может принимать одну или более кодированных видеопоследовательностей для декодирования видеодекодером (510); в том же или другом варианте осуществления, по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (501), который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Приемник (531) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или вспомогательными потоками данных, которые могут ретранслироваться на соответствующие использующие и объекты (не показаны). Приемник (531) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети, буферная память (515) может быть подключена между приемником (531) и энтропийным декодером / анализатором (520) (далее "анализатором (520)"). В некоторых вариантах применения буферная память (515) входит в состав видеодекодера (510). В других она может не входить в состав видеодекодера (510) (не показан). В прочих вариантах может существовать буферная память (не показана) вне видеодекодера (510), например, для борьбы с джиттером сети, помимо другой буферной памяти (515) в составе видеодекодера (510), например, для управления хронированием доигрывания. Когда приемник (531) принимает данные от устройства хранения/ретрансляции с достаточной полосой и управляемостью или из изосинхронной сети, буферная память (515) может быть не нужна или может быть мала. Для использования в пакетных сетях наилучшей попытки, например, Интернете, буферная память (515) может требоваться, может быть сравнительно большой и может иметь преимущественно адаптивный размер, и по меньшей мере частично может быть реализована в операционной системе или аналогичных элементах (не показаны) вне видеодекодера (510).[0071] The receiver (531) may receive one or more encoded video sequences for decoding by the video decoder (510); in the same or another embodiment, one coded video sequence at a time, where the decoding of each coded video sequence is independent of other coded video sequences. The encoded video sequence may be received from a channel (501), which may be a hardware/software link to a storage device where the encoded video data is stored. The receiver (531) may receive encoded video data with other data, such as encoded audio data and/or auxiliary data streams, which may be relayed to appropriate users and entities (not shown). The receiver (531) may separate the encoded video sequence from other data. To combat network jitter, a buffer memory (515) may be connected between the receiver (531) and the entropy decoder/analyzer (520) (hereinafter "analyzer (520)"). In some applications, the buffer memory (515) is included in the video decoder (510). In others, it may not be part of the video decoder (510) (not shown). In other embodiments, there may be a buffer memory (not shown) outside the video decoder (510), for example, to combat network jitter, in addition to another buffer memory (515) within the video decoder (510), for example, to control the timing of the playout. When the receiver (531) receives data from a storage/relay device with sufficient bandwidth and controllability, or from an isosynchronous network, the buffer memory (515) may not be needed or may be small. For use in best attempt packet networks, such as the Internet, buffer memory (515) may be required, may be relatively large, and may have a predominantly adaptive size, and may at least partially be implemented in an operating system or similar elements (not shown) outside video decoder (510).

[0072] Видеодекодер (510) может включать в себя анализатор (520) для реконструкции символов (521) из кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой видеодекодера (510), и возможно информацию для управления устройством визуализации, например, устройством (512) визуализации (например, отображающим экраном), которое не является неотъемлемой частью электронного устройства (530), но может быть подключено к электронному устройству (530), как показано на фиг. 5. Информация управления для устройств(а) визуализации может представлять собой сообщения информации дополнительного улучшения (SEI, Supplemental Enhancement Information) или фрагменты набора параметров информации пригодности видео (VUI, Video Usability Information) (не показаны). Анализатор (520) может анализировать / энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом видеокодирования и может следовать различным принципам, в том числе кодированию с переменной длиной серии, кодированию по Хаффману, арифметическому кодированию с контекстной чувствительностью или без нее и т.д. Анализатор (520) может извлекать из кодированной видеопоследовательности набор параметров подгруппы для по меньшей мере одной из подгрупп пикселей в видеодекодере на основании по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP, Groups of Pictures), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU, Coding Units), блоки, единицы преобразования (TU, Transform Units), единицы предсказания (PU, Prediction Units) и т.д. Анализатор (520) также может извлекать из кодированной видеопоследовательности информацию, например, коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.[0072] The video decoder (510) may include an analyzer (520) for reconstructing the symbols (521) from the encoded video sequence. The categories of these symbols include information used to control the operation of the video decoder (510), and possibly information to control a visualization device, such as a visualization device (512) (for example, a display screen), which is not an integral part of the electronic device (530), but may be connected to an electronic device (530) as shown in FIG. 5. The control information for the rendering device(s) may be Supplemental Enhancement Information (SEI) messages or Video Usability Information (VUI) parameter set fragments (not shown). The analyzer (520) may analyze/entropy decode the received encoded video sequence. Encoding of the encoded video sequence may be in accordance with a video coding technology or standard, and may follow various principles, including variable run length coding, Huffman coding, arithmetic coding with or without context sensitivity, and so on. The analyzer (520) can extract from the encoded video sequence a set of subgroup parameters for at least one of the subgroups of pixels in the video decoder based on at least one parameter corresponding to the group. Subgroups may include groups of pictures (GOP, Groups of Pictures), images, tiles, slices, macroblocks, coding units (CU, Coding Units), blocks, transformation units (TU, Transform Units), prediction units (PU, Prediction Units ) etc. The analyzer (520) can also extract information from the encoded video sequence, such as transform coefficients, quantizer parameter values, motion vectors, and so on.

[0073] Анализатор (520) может осуществлять операцию энтропийного декодирования / анализа видеопоследовательности, принятой из буферной памяти (515), для создания символов (521).[0073] The analyzer (520) may perform an entropy decoding/analysis operation of the video sequence received from the buffer memory (515) to create symbols (521).

[0074] Для реконструкции символов (521) могут использоваться несколько разных модулей в зависимости от типа кодированного видеоизображения или его частей (например: интер- и интра-изображения, интер- и интра-блока) и других факторов. Какие модули используются, и как, может определяться информацией управления подгруппами, выделенной из кодированной видеопоследовательности анализатором (520). Поток такой информации управления подгруппами между анализатором (520) и множественными модулями для простоты в дальнейшем не показан.[0074] Several different modules may be used for symbol reconstruction (521) depending on the type of encoded video image or parts thereof (eg: inter- and intra-pictures, inter- and intra-block) and other factors. Which modules are used, and how, may be determined by the subgroup management information extracted from the encoded video sequence by the analyzer (520). The flow of such subgroup management information between the analyzer (520) and multiple modules is not shown hereinafter for simplicity.

[0075] Помимо ранее упомянутых функциональных блоков, видеодекодер (510) может принципиально делиться на несколько функциональных модулей, как описано ниже. В практической реализации, работающей в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут, по меньшей мере частично, встраиваться один в другой. Однако в целях описания раскрытого изобретения уместно принципиальное деление на нижеперечисленные функциональные модули.[0075] In addition to the previously mentioned functional blocks, the video decoder (510) can be fundamentally divided into several functional modules, as described below. In a practical implementation operating under commercial constraints, many of these modules interact closely with one another and can, at least partially, be nested within one another. However, for the purposes of describing the disclosed invention, a fundamental division into the following functional modules is appropriate.

[0076] Первым модулем является модуль (551) масштабирования / обратного преобразования. Модуль (551) масштабирования / обратного преобразования принимает квантованный коэффициент преобразования, а также информацию управления, включающую в себя используемое преобразование, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в качестве символа(ов) (521) от анализатора (520). Модуль (551) масштабирования / обратного преобразования может выводить блоки, содержащие значения отсчетов, которые можно вводить в агрегатор (555).[0076] The first module is the scaling/inverse transform module (551). The scaling/inverse transform module (551) receives the quantized transform coefficient as well as control information including the transform used, block size, quantization factor, quantization scaling matrices, and so on. as character(s) (521) from the analyzer (520). The scaling/inverse transform module (551) can output blocks containing sample values that can be input to the aggregator (555).

[0077] В ряде случаев, выходные отсчеты блока (551) масштабирования / обратного преобразования могут относиться к внутренне-кодированному блоку; то есть блоку, который не использует предсказанную информацию из ранее реконструированных изображений, но может использовать предсказанную информацию из ранее реконструированных частей текущего изображения. Такая предсказанная информация может обеспечиваться модулем (552) предсказания внутри изображения. В ряде случаев модуль (552) предсказания внутри изображения генерирует блок такого же размера и формы, как блок, подлежащий реконструкции, с использованием информации ранее реконструированного окружения, извлеченной из буфера (558) текущего изображения. Буфер (558) текущего изображения буферизует, например, частично реконструированное текущее изображение и/или полностью реконструированное текущее изображение. Агрегатор (555) в ряде случаев добавляет, для каждого отсчета, информацию предсказания, сгенерированную модулем (552) внутреннего предсказания, в информацию выходных отсчетов, обеспеченную модулем (551) масштабирования / обратного преобразования.[0077] In some cases, the output samples of the scaling / inverse transform block (551) may refer to an intra-coded block; that is, a block that does not use predicted information from previously reconstructed images, but may use predicted information from previously reconstructed portions of the current image. Such predicted information may be provided by an intra-picture prediction module (552). In some cases, the intra-image prediction module (552) generates a block of the same size and shape as the block to be reconstructed using the previously reconstructed environment information retrieved from the current image buffer (558). The current picture buffer (558) buffers, for example, a partially reconstructed current picture and/or a fully reconstructed current picture. The aggregator (555) sometimes adds, for each sample, the prediction information generated by the intra prediction module (552) to the output sample information provided by the scaling/inverse transform module (551).

[0078] В других случаях выходные отсчеты модуля (551) масштабирования / обратного преобразования могут относиться к внутренне кодированному блоку, возможно, с компенсацией движения. В таком случае, модуль (553) предсказания с компенсацией движения может осуществлять доступ к памяти (557) опорных изображений для извлечения отсчетов, используемых для предсказания. После применения компенсации движения к извлеченным отсчетам в соответствии с символами (521), относящимися к блоку, эти отсчеты могут добавляться агрегатором (555) к выходному сигналу модуля (551) масштабирования / обратного преобразования (в этом случае именуемому остаточными отсчетами или остаточным сигналом) для генерации информации выходных отсчетов. Адреса в памяти (557) опорных изображений, откуда модуль (553) предсказания с компенсацией движения извлекает предсказанные отсчеты, могут регулироваться векторами движения, доступными модулю (553) предсказания с компенсацией движения, в форме символов (521), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти (557) опорных изображений, когда используются точные векторы движения под-отсчетов, механизмы предсказания векторов движения и т.д.[0078] In other cases, the output samples of the scaling/inverse transform module (551) may refer to an intra-coded block, possibly with motion compensation. In such a case, the motion compensation prediction module (553) may access the reference picture memory (557) to retrieve samples used for prediction. After applying motion compensation to the extracted samples according to the symbols (521) associated with the block, these samples can be added by the aggregator (555) to the output signal of the scaling / inverse transform module (551) (in this case referred to as residual samples or residual signal) for generation of output sample information. The addresses in the reference picture memory (557) from where the motion compensation prediction module (553) retrieves the predicted samples may be governed by the motion vectors available to the motion compensation prediction module (553) in the form of symbols (521), which may have, for example, X, Y components and reference image. Motion compensation may also include interpolation of sample values retrieved from reference picture memory (557) when accurate sub-sample motion vectors, motion vector prediction mechanisms, etc. are used.

[0079] K выходным отсчетам агрегатора (555) можно применять различные методы контурной фильтрации в модуле (556) контурного фильтра. Технологии сжатия видео могут включать в себя технологии деблокирующего фильтра под управлением параметров, включенных в кодированную видеопоследовательность (также именуемую битовым потоком кодированного видео) и становиться доступными модулю (556) контурного фильтра в качестве символов (521) от анализатора (520), но также могут реагировать на метаинформацию, полученную в ходе декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее реконструированные и подвергнутые контурной фильтрации значения отсчетов.[0079] Various loop filtering methods can be applied to the output samples of the aggregator (555) in the loop filter module (556). The video compression technologies may include deblocking filter technologies driven by parameters included in the encoded video sequence (also referred to as the encoded video bitstream) and made available to the loop filter module (556) as symbols (521) from the analyzer (520), but may also respond to meta-information obtained during the decoding of the previous (in the order of decoding) parts of the encoded image or encoded video sequence, as well as respond to previously reconstructed and loop-filtered sample values.

[0080] Модуль (556) контурного фильтра может выдавать поток отсчетов, который может поступать на устройство (512) визуализации, а также сохраняться в памяти (557) опорных изображений для использования в будущем предсказании между изображениями.[0080] The loop filter module (556) may provide a stream of samples that may be fed to the renderer (512) as well as stored in the reference picture memory (557) for use in future inter-picture prediction.

[0081] Некоторые кодированные изображения, будучи полностью реконструированы, могут использоваться в качестве опорных изображений для будущего предсказания. Например, когда кодированное изображение, соответствующее текущему изображению, полностью реконструировано, и кодированное изображение идентифицировано как опорное изображение (например, анализатором (520)), буфер (558) текущего изображения может становиться частью памяти (557) опорных изображений, и свежий буфер текущего изображения может повторно выделяться до начала реконструкции следующего кодированного изображения.[0081] Some encoded pictures, when fully reconstructed, can be used as reference pictures for future prediction. For example, when the encoded picture corresponding to the current picture is completely reconstructed and the encoded picture is identified as a reference picture (e.g., by the analyzer (520)), the current picture buffer (558) may become part of the reference picture memory (557), and a fresh current picture buffer may be re-allocated before the reconstruction of the next encoded picture starts.

[0082] Видеодекодер (510) может осуществлять операции декодирования согласно заранее заданной технологии сжатия видео, например, по стандарту ITU-T Rec. Н.265. Кодированная видеопоследовательность может согласовываться с синтаксисом, заданным используемой/ым технологией или стандартом сжатия видео, в том смысле, что кодированная видеопоследовательность может придерживаться как синтаксиса технологии или стандарта сжатия видео, так и профилей, задокументированных в технологии или стандарте сжатия видео. В частности, профиль может выбирать некоторые инструменты как инструменты, доступные для использования только под этим профилем, из всех инструментов, доступных в технологии или стандарте сжатия видео. Также для согласованности может быть необходимо, чтобы сложность кодированной видеопоследовательности оставалась в границах, заданных уровнем технологии или стандарта сжатия видео. В ряде случаев, уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов для реконструкции (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в ряде случаев могут дополнительно ограничиваться спецификациями гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданными для управления буфером HRD, сигнализируемого в кодированной видеопоследовательности.[0082] The video decoder (510) may perform decoding operations according to a predetermined video compression technology, such as ITU-T Rec. H.265. The encoded video sequence may conform to the syntax specified by the video compression technology or standard used, in the sense that the encoded video sequence may adhere to both the syntax of the video compression technology or standard and the profiles documented in the video compression technology or standard. In particular, a profile may select certain tools as tools available for use only under that profile, from among all the tools available in a video compression technology or standard. It may also be necessary for consistency that the complexity of the encoded video sequence remain within the boundaries set by the video compression technology level or standard. In some cases, the levels limit the maximum image size, the maximum frame rate, the maximum sampling rate for reconstruction (measured in megasamples per second, for example), the maximum reference image size, and so on. The limits set by the levels, in some cases, may be further limited by the specifications of the hypothetical reference decoder (HRD, Hypothetical Reference Decoder) and metadata for managing the HRD buffer signaled in the encoded video sequence.

[0083] Согласно варианту осуществления, приемник (531) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной(ых) видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (510) для правильного декодирования данных и/или более точной реконструкции исходных видеоданных. Дополнительные данные могут представлять собой, например, слои улучшения во времени, пространстве или отношения сигнал/шум (SNR), избыточные слайсы, избыточные изображения, коды прямой коррекции ошибок и т.д.[0083] According to an embodiment, the receiver (531) may receive additional (redundant) data with encoded video. Additional data may be included as part of the encoded video sequence(s). The additional data may be used by the video decoder (510) to correctly decode the data and/or more accurately reconstruct the original video data. The additional data may be, for example, temporal, spatial or signal-to-noise ratio (SNR) enhancement layers, redundant slices, redundant images, forward error correction codes, and so on.

[0084] На фиг. 6 показана блок-схема видеокодера (603) согласно варианту осуществления настоящего изобретения. Видеокодер (603) входит в состав электронного устройства (620). Электронное устройство (620) включает в себя передатчик (640) (например, передающую схему). Видеокодер (603) может использоваться вместо видеокодера (403) в примере, приведенном на фиг. 4.[0084] FIG. 6 is a block diagram of a video encoder (603) according to an embodiment of the present invention. The video encoder (603) is included in the electronic device (620). The electronic device (620) includes a transmitter (640) (eg, a transmission circuit). Video encoder (603) may be used instead of video encoder (403) in the example shown in FIG. four.

[0085] Видеокодер (603) может принимать отсчеты видео от источника (601) видеосигнала (который не входит в состав электронного устройства (620) в примере, показанном на фиг. 6), который может захватывать видеоизображение(я), подлежащее(ие) кодированию видеокодером (603). В другом примере источник (601) видеосигнала входит в состав электронного устройства (620).[0085] The video encoder (603) may receive video samples from a video source (601) (which is not part of the electronic device (620) in the example shown in FIG. 6) that may capture the video image(s) to be encoding with a video encoder (603). In another example, the video signal source (601) is included in the electronic device (620).

[0086] Источник (601) видеосигнала может обеспечивать исходную видеопоследовательность, подлежащую кодированию видеокодером (603) в форме потока отсчетов цифрового видео любой подходящей битовой глубины (например: 8 бит, 10 бит, 12 бит, …), любого цветового пространства (например, ВТ.601 Y CrCB, RGB, …), и любой подходящей структуры дискретизации (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе службы массовой информации источником (601) видеосигнала может быть запоминающее устройство, где хранится ранее подготовленное видео. В система видеоконференцсвязи источником (601) видеосигнала может быть камера, которая захватывает информацию локального изображения как видеопоследовательность. Видеоданные могут обеспечиваться как множество отдельных изображений, которые создают ощущение движения при наблюдении в последовательности. Сами изображения могут быть организованы как пространственный массив пикселей, где каждый пиксель может содержать один или более отсчетов в зависимости от используемых структуры дискретизации, цветового пространства и т.д. Специалисту в данной области техники нетрудно понять соотношение между пикселями и отсчетами. Нижеследующее описание касается отсчетов.[0086] The video signal source (601) may provide the source video sequence to be encoded by the video encoder (603) in the form of a digital video sample stream of any suitable bit depth (eg: 8 bit, 10 bit, 12 bit, ...), any color space (eg, BT.601 Y CrCB, RGB, ...) and any suitable sampling structure (eg Y CrCb 4:2:0, Y CrCb 4:4:4). In a media service system, the video source (601) may be a storage device where previously prepared video is stored. In a videoconferencing system, the video source (601) may be a camera that captures local image information as a video sequence. The video data may be provided as a plurality of individual images that give a sense of movement when viewed in sequence. The images themselves may be organized as a spatial array of pixels, where each pixel may contain one or more samples depending on the sampling structure, color space, etc. used. It is not difficult for a person skilled in the art to understand the relationship between pixels and samples. The following description is for samples.

[0087] Согласно варианту осуществления, видеокодер (603) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (643) в реальном времени или с учетом любых других временных ограничений, налагаемых применением. Установление надлежащей скорости кодирования является одной из функций контроллера (650). В некоторых вариантах осуществления контроллер (650) управляет другими функциональными модулями, как описано ниже, и функционально подключен к другим функциональным модулям. Подключение для простоты не показано. Параметры, установленные контроллером (650), могут включать в себя параметры, связанные регулировкой частоты (пропуск изображения, квантователь, значение лямбда, применяемое при оптимизация скорости-искажения, …), размер изображения, схему групп изображений (GOP), максимальную зону поиска вектора движения и т.д. Контроллер (650) может быть выполнен с возможностью иметь другие подходящие функции, относящиеся к видеокодеру (603), оптимизированному для той или иной конструкции системы.[0087] According to an embodiment, the video encoder (603) may encode and compress images of the original video sequence into the encoded video sequence (643) in real time or subject to any other time constraints imposed by the application. Establishing a proper coding rate is one of the functions of the controller (650). In some embodiments, the controller (650) controls other functional modules, as described below, and is operatively connected to other functional modules. The connection is not shown for simplicity. The parameters set by the controller (650) may include parameters related to frequency adjustment (picture skip, quantizer, lambda value applied in rate-distortion optimization, ...), picture size, group of pictures (GOP) scheme, maximum vector search area movements, etc. The controller (650) may be configured to have other suitable functions related to the video encoder (603) optimized for a given system design.

[0088] В некоторых вариантах осуществления видеокодер (603) выполнен с возможностью работать в петле кодирования. В качестве очень упрощенного описания, в порядке примера, петля кодирования может включать в себя исходный кодер (630) (например, отвечающий за создание символов, например, потока символов, на основе входного изображения, подлежащего кодированию, и опорного(ых) изображения(ий)) и (локальный) декодер (633), встроенный в видеокодер (603). Декодер (633) реконструирует символы для создания данных отсчетов, аналогично тому, как это делал бы (удаленный) декодер (поскольку любое сжатие между символами и битовым потоком кодированного видео происходит без потерь в технологиях сжатия видео, рассматриваемых в раскрытом изобретении). Реконструированный поток отсчетов (данные отсчетов) поступают в память (634) опорных изображений. Поскольку декодирование потока символов приводит к результатам, с точностью до бита, не зависящим от положения декодера (локального или удаленного), содержимое памяти (634) опорных изображений также будет одинаковым с точностью до бита для локального кодера и удаленного кодера. Другими словами, предсказанная часть кодера "видит" в качестве отсчетов опорного изображения точно такие же значения отсчетов, как "видел" бы декодер при использовании предсказания в ходе декодирования. Этот фундаментальный принцип синхронизма опорного изображения (и, в итоге, дрейф, если синхронизм не удается поддерживать, например, вследствие канальных ошибок) используется также в некоторых связанных областях техники.[0088] In some embodiments, video encoder (603) is configured to operate in a coding loop. As a very simplified description, by way of example, an encoding loop may include a source encoder (630) (e.g., responsible for generating symbols, e.g., a stream of symbols, based on the input image to be encoded and the reference image(s) )) and a (local) decoder (633) built into the video encoder (603). The decoder (633) reconstructs the symbols to create sample data, in a similar manner as a (remote) decoder would (because any compression between the symbols and the encoded video bitstream is lossless in the video compression technologies of the disclosed invention). The reconstructed sample stream (sample data) is entered into the reference picture memory (634). Since the decoding of the symbol stream produces bit-accurate results independent of the position of the decoder (local or remote), the contents of the reference picture memory (634) will also be the same bit-accuracy for the local encoder and the remote encoder. In other words, the predicted portion of the encoder "sees" as reference picture samples exactly the same sample values as the decoder would "see" if using prediction during decoding. This fundamental principle of reference picture synchronism (and eventually drift if synchronism cannot be maintained, for example due to channel errors) is also used in some related fields of technology.

[0089] "Локальный" декодер (633) может действовать таким же образом, как "удаленный" декодер, например, видеодекодер (510), подробно вышеописанный со ссылкой на фиг. 5. Однако, опять же, согласно фиг. 5, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (645) и анализатором (520) может осуществляться без потерь, части энтропийного декодирования видеодекодера (510), включающие в себя буферную память (515) и анализатор (520), могут быть не полностью реализованы в локальном декодере (633).[0089] A "local" decoder (633) may operate in the same manner as a "remote" decoder, such as the video decoder (510) detailed above with reference to FIG. 5. However, again, referring to FIG. 5, since the symbols are available and encoding/decoding of the symbols into the encoded video sequence by the entropy encoder (645) and analyzer (520) can be lossless, the entropy decoding parts of the video decoder (510) including the buffer memory (515) and the analyzer (520) , may not be fully implemented in the local decoder (633).

[0090] При этом можно сделать вывод, что любая технология декодирования, присутствующая в декодере, за исключением анализ а/энтропийно го декодирования, также обязательно должна присутствовать, по существу в идентичной функциональной форме, в соответствующем кодере. По этой причине раскрытое изобретение сконцентрировано на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются обратными подробно описанным технологиям декодированная. Только в некоторых областях требуется более детальное описание, которое приведено ниже.[0090] It can thus be concluded that any decoding technology present in a decoder, with the exception of a/entropy decoding analysis, must also necessarily be present, in substantially identical functional form, in the corresponding encoder. For this reason, the disclosed invention is focused on the operation of the decoder. The description of encoding technologies can be abbreviated as they are the inverse of the decoded technologies described in detail. Only in some areas a more detailed description is required, which is given below.

[0091] Согласно некоторым примерам, в ходе работы исходный кодер (630) может осуществлять кодирование с предсказанием и компенсацией движения, при котором входное изображение кодируется с предсказанием на основании одного или более ранее кодированных изображений из видеопоследовательности, указанных как "опорные изображения". Таким образом, машина (632) кодирования кодирует различия между пиксельными блоками входного изображения и пиксельными блоками опорного изображения(й), которое(ые) может(ут) выбираться в качестве предсказанной(ых) ссылки(ок) на входное изображение.[0091] In some examples, in operation, source encoder (630) may perform motion-compensated predictive coding, in which an input picture is predictively encoded based on one or more previously encoded pictures from a video sequence, referred to as "reference pictures". Thus, the encoding engine (632) encodes the differences between the pixel blocks of the input image and the pixel blocks of the reference image(s) that can be selected as the predicted reference(s) to the input image.

[0092] Локальный видеодекодер (633) может декодировать кодированные видеоданные изображений, которые могут быть указаны как опорные изображения, на основе символов, созданных исходным кодером (630). Операции машины (632) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут декодироваться в видеодекодере (не показан на фиг. 6), реконструированная видеопоследовательность обычно может представлять собой копию исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (633) дублирует процессы декодирования, которые могут осуществляться видеодекодером на опорных изображениях, и может предписывать сохранение реконструированных опорных изображений в кэш-памяти (634) опорных изображений. Таким образом, видеокодер (603) может локально сохранять копии реконструированных опорных изображений, имеющие такое же содержимое, как реконструированные опорные изображения, которые будут получены видеодекодером на стороне приемника (в отсутствие ошибок передачи).[0092] The local video decoder (633) may decode the encoded video data of pictures that can be specified as reference pictures based on the symbols generated by the source encoder (630). The operations of the encoding engine (632) may be predominantly lossy processes. When the encoded video data can be decoded in a video decoder (not shown in FIG. 6), the reconstructed video sequence can typically be a copy of the original video sequence with some errors. The local video decoder (633) duplicates the decoding processes that may be performed by the video decoder on the reference pictures and may cause the reconstructed reference pictures to be stored in the reference picture cache (634). Thus, the video encoder (603) can locally store copies of the reconstructed reference pictures having the same content as the reconstructed reference pictures to be received by the video decoder at the receiver side (in the absence of transmission errors).

[0093] Предсказатель (635) может осуществлять поиски предсказания для машины (632) кодирования. Таким образом, для нового изображения, подлежащего кодированию, предсказатель (635) может искать в памяти (634) опорных изображений данные отсчетов (в качестве кандидатов на роль опорных пиксельных блоков) или те или иные метаданные, например, векторы движения опорного изображения, формы блоков и т.д., которые могут служить надлежащей ссылкой для предсказания новых изображений. Предсказатель (635) может работать на основе "блоки отсчетов × пиксельные блоки" для нахождения надлежащих ссылок для предсказания. В ряде случаев, согласно результатам поиска, полученным предсказателем (635), входное изображение может иметь ссылки для предсказания, извлеченные из множества опорных изображений, хранящихся в памяти (634) опорных изображений.[0093] The predictor (635) may perform prediction searches for the encoding engine (632). Thus, for a new picture to be encoded, the predictor (635) can search the reference picture memory (634) for sample data (as candidates for the role of reference pixel blocks) or some metadata, for example, motion vectors of the reference picture, block shapes etc., which can serve as a proper reference for predicting new images. The predictor (635) may operate on a sample block × pixel block basis to find appropriate references for prediction. In some cases, according to the search results obtained by the predictor (635), the input picture may have prediction references extracted from the plurality of reference pictures stored in the reference picture memory (634).

[0094] Контроллер (650) может управлять операциями кодирования исходного кодера (630), включая, например, установление параметров и параметров подгруппы, используемых для кодирования видеоданных.[0094] The controller (650) may control the encoding operations of the source encoder (630), including, for example, setting parameters and subgroup parameters used to encode video data.

[0095] Выходной сигнал всех вышеупомянутых функциональных модулей может подвергаться энтропийному кодированию в энтропийном кодере (645). Энтропийный кодер (645) переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия символов без потерь согласно технологиям, например, кодирования по Хаффману, кодирования с переменной длиной серии, арифметического кодирования и т.д.[0095] The output signal of all the above functional modules can be entropy encoded in an entropy encoder (645). An entropy encoder (645) translates symbols generated by various functional units into a coded video sequence by lossless symbol compression according to techniques such as Huffman coding, variable run length coding, arithmetic coding, and so on.

[0096] Передатчик (640) может буферизовать кодированную(ые) видеопоследовательность(и), созданные энтропийным кодером (645), для подготовки к передаче через канал (660) связи, который может быть аппаратной/программной линией связи с запоминающим устройством, где хранятся кодированные видеоданные. Передатчик (640) может объединять кодированные видеоданные от видеокодера (603) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или вспомогательными потоками данных (источники не показаны).[0096] The transmitter (640) may buffer the encoded video sequence(s) created by the entropy encoder (645) in preparation for transmission over a communication channel (660), which may be a hardware/software link to a storage device where encoded video data. The transmitter (640) may combine the encoded video data from the video encoder (603) with other data to be transmitted, such as encoded audio data and/or auxiliary data streams (sources not shown).

[0097] Контроллер (650) может управлять работа видеокодера (603). В ходе кодирования контроллер (650) может назначать каждому кодированному изображению тот или иной тип кодированного изображения, который может определять методы кодирования, применимые к соответствующему изображению. Например, изображениям часто могут назначаться следующие типы изображения:[0097] The controller (650) may control the operation of the video encoder (603). During encoding, the controller (650) may assign to each encoded picture an encoded picture type, which may determine the encoding methods applicable to the corresponding picture. For example, images can often be assigned the following image types:

[0098] Интра-изображение (I-изображение), которое можно кодировать и декодировать без использования какого-либо другого изображения в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают разные типы интра-изображений, включая, например, изображения в формате независимого обновления декодера ("IDR", Independent Decoder Refresh). Специалисту в данной области техники известны разновидности I-изображений и их соответствующие варианты применения и особенности.[0098] An intra-picture (I-picture) that can be encoded and decoded without using any other picture in the sequence as a prediction source. Some video codecs allow different types of intra-pictures, including, for example, pictures in the Independent Decoder Refresh ("IDR" format). The person skilled in the art will be aware of the varieties of I-images and their respective applications and features.

[0099] Предсказанное изображение (Р-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.[0099] A predicted picture (P-picture) that can be encoded and decoded using intra prediction or inter prediction using at most one motion vector and a reference index to predict sample values of each block.

[0100] Двунаправленно-предсказанное изображение (В-изображение), которое можно кодировать и декодировать с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Аналогично, мультипредсказанные изображения могут использовать более двух опорных изображений и связанные метаданные для реконструкции единого блока.[0100] A bi-directionally predicted picture (B picture) that can be encoded and decoded using intra prediction or inter prediction using no more than two motion vectors and reference indices to predict sample values of each block. Likewise, multi-predicted pictures may use more than two reference pictures and associated metadata to reconstruct a single block.

[0101] Исходные изображения обычно допускают пространственное разделение на множество блоков отсчетов (например, блоки 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодирование на поблочной основе (блок за блоком). Блоки могут кодироваться предиктивно со ссылкой на другие (ранее кодированные) блоки, определенные назначением кодирования, применяемым к соответствующим изображениям этих блоков. Например, блоки I-изображений могут кодироваться без предсказания или с предсказанием со ссылкой на ранее кодированные блоки того же изображения (пространственным предсказанием или внутренним предсказанием). Пиксельные блоки Р-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться с предсказанием, посредством пространственного предсказания или временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.[0101] Source images typically allow for spatial division into multiple blocks of samples (eg, blocks of 4x4, 8x8, 4x8, or 16x16 samples each) and coding on a block-by-block basis. Blocks may be predictively encoded with reference to other (previously encoded) blocks determined by the coding assignment applied to the respective images of those blocks. For example, I-picture blocks may be encoded without prediction or predictively with reference to previously encoded blocks of the same picture (spatial prediction or intra prediction). The pixel blocks of P-pictures may be predictively encoded by spatial prediction or temporal prediction with reference to one previously encoded reference picture. Blocks of B-pictures may be predictively encoded by spatial prediction or temporal prediction with reference to one or two previously encoded reference pictures.

[0102] Видеокодер (603) может осуществлять операции кодирования согласно заранее заданной технологии или стандарту видеокодирования, например, ITU-T Rec. Н.265. В своей работе видеокодер (603) может осуществлять различные операции сжатия, в том числе операции предиктивного кодирования, которые используют временные и пространственные избыточности во входной видеопоследовательности. Поэтому кодированные видеоданные могут согласовываться с синтаксисом, заданным используемой технологией или стандартом видеокодирования.[0102] The video encoder (603) may perform encoding operations according to a predetermined video coding technology or standard, such as ITU-T Rec. H.265. In operation, the video encoder (603) may perform various compression operations, including predictive coding operations that exploit temporal and spatial redundancies in the input video sequence. Therefore, the encoded video data may conform to the syntax given by the video coding technology or standard being used.

[0103] Согласно варианту осуществления, передатчик (640) может передавать дополнительные данные с кодированным видео. Исходный кодер (630) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/SNR слои улучшения, другие формы избыточных данных, например, избыточные изображения и слайсы, сообщения SEI, фрагменты набора параметров VUI и т.д.[0103] According to an embodiment, the transmitter (640) may transmit additional data with encoded video. The source encoder (630) may include such data as part of the encoded video sequence. The additional data may include temporal/spatial/SNR enhancement layers, other forms of redundant data such as redundant images and slices, SEI messages, VUI parameter set fragments, and so on.

[0104] Видео может захватываться как множество исходных изображений (видеоизображений) во временной последовательности. Предсказание внутри изображения (часто сокращенно именуемое внутренним предсказанием) использует пространственную корреляцию в данном изображении, а предсказание между изображениями использует (временную или иную) корреляцию между изображениями. Например, конкретное изображение, подлежащее кодированию/декодированию, которое именуется текущим изображением, разбивается на блоки. Когда блок в текущем изображении аналогичен опорному блоку в ранее кодированном и все еще буферизованном опорном изображении в видео, блок в текущем изображении может кодироваться вектором, который именуется вектором движения. Вектор движения указывает на опорный блок в опорном изображении и может иметь третье измерение, идентифицирующее опорное изображение, в случае использования множественных опорных изображений.[0104] The video may be captured as a plurality of source images (video images) in time sequence. Intra-image prediction (often abbreviated as intra-image prediction) uses spatial correlation within a given image, and inter-image prediction uses (temporal or otherwise) correlation between images. For example, a specific image to be encoded/decoded, which is called the current image, is divided into blocks. When a block in the current picture is similar to a reference block in a previously encoded and still buffered reference picture in a video, the block in the current picture may be encoded with a vector, which is referred to as a motion vector. The motion vector points to a reference block in the reference picture and may have a third dimension identifying the reference picture in case multiple reference pictures are used.

[0105] В некоторых вариантах осуществления, метод двойного предсказания может использоваться в предсказании между изображениями. Согласно методу двойного предсказания, используются два опорных изображения, например, первое опорное изображение и второе опорное изображение, которые оба предшествуют в порядке декодирования текущему изображению в видео (но могут быть в прошлом и будущем, соответственно, в порядке отображения). Блок в текущем изображении может кодироваться первым вектором движения, который указывает на первый опорный блок в первом опорном изображении, и вторым вектором движения, который указывает на второй опорный блок во втором опорном изображении. Блок может предсказываться комбинацией первого опорного блока и второго опорного блока.[0105] In some embodiments, a dual prediction technique may be used in inter-picture prediction. According to the double prediction method, two reference pictures are used, for example, a first reference picture and a second reference picture, both of which precede the current picture in the video in decoding order (but may be in the past and future, respectively, in display order). A block in the current picture may be encoded by a first motion vector that points to a first reference block in the first reference picture and a second motion vector that points to a second reference block in the second reference picture. The block may be predicted by a combination of the first reference block and the second reference block.

[0106] Дополнительно, метод режима объединения может использоваться в предсказании между изображениями для повышения эффективности кодирования.[0106] Additionally, a combining mode technique may be used in inter-picture prediction to improve coding efficiency.

[0107] Согласно некоторым вариантам осуществления изобретения, предсказания, например, предсказания между изображениями и предсказания внутри изображения, осуществляются поблочно. Например, согласно стандарту HEVC, изображение в последовательности видеоизображений разбивается на единицы дерева кодирования (CTU, coding tree unit) для сжатия, CTU в изображении имеют одинаковый размер, например 64×64 пикселя, 32×32 пикселя или 16×16 пикселей. В общем случае CTU включает в себя три блока дерева кодирования (СТВ, coding tree block), а именно, один СТВ яркости и два СТВ цветности. Каждый CTU может рекурсивно делиться квадрадеревом на одну или несколько единиц кодирования (CU). Например, CTU размером 64×64 пикселя может делиться на одну CU размером 64×64 пикселя или 4 CU размером 32×32 пикселя или 16 CU размером 16×16 пикселей. Например, каждая CU анализируется для определения типа предсказания для CU, например, типа внешнего предсказания или типа внутреннего предсказания. CU делится на одну или более единиц предсказания (PU) в зависимости от временной и/или пространственной предсказуемости. В целом, каждая PU включает в себя блок (РВ) предсказания яркости и два РВ цветности. Согласно варианту осуществления, операция предсказания при кодировании (кодировании/декодировании) осуществляется в единице блока предсказания. Используя блок предсказания яркости в качестве примера блока предсказания, блок предсказания включает в себя матрицу значений (например, значений яркости) для пикселей, например, 8×8 пикселей, 16×16 пикселей, 8×16 пикселей, 16×8 пикселей и т.п.[0107] According to some embodiments of the invention, predictions, such as inter-picture predictions and intra-picture predictions, are performed block by block. For example, according to the HEVC standard, an image in a video sequence is divided into coding tree units (CTUs) for compression, CTUs in an image are the same size, such as 64×64 pixels, 32×32 pixels, or 16×16 pixels. In general, the CTU includes three coding tree blocks (CTBs), namely, one luma CTB and two chrominance CTBs. Each CTU may recursively divide the quadtree into one or more coding units (CUs). For example, a 64x64 pixel CTU can be divided into one 64x64 pixel CU or 4 32x32 pixel CUs or 16 16x16 pixel CUs. For example, each CU is analyzed to determine a prediction type for the CU, such as an inter prediction type or an intra prediction type. The CU is divided into one or more prediction units (PU) depending on temporal and/or spatial predictability. In general, each PU includes a Luma Prediction Unit (PB) and two Chroma PBs. According to an embodiment, an encoding (encoding/decoding) prediction operation is performed in a prediction block unit. Using the luminance prediction block as an example of the prediction block, the prediction block includes a matrix of values (e.g., luminance values) for pixels, e.g., 8x8 pixels, 16x16 pixels, 8x16 pixels, 16x8 pixels, etc. P.

[0108] На фиг. 7 показана схема видеокодера (703) согласно другому варианту осуществления изобретения. Видеокодер (703) выполнен с возможностью приема блока обработки (например, блока предсказания) значений отсчетов в текущем видеоизображении в последовательности видеоизображений и кодирования блока обработки в кодированное изображение, которое составляет часть кодированной видеопоследовательности. Например, видеокодер (703) используется вместо видеокодера (403) в примере, приведенном на фиг. 4.[0108] In FIG. 7 shows a diagram of a video encoder (703) according to another embodiment of the invention. The video encoder (703) is configured to receive a processing unit (eg, a prediction unit) of sample values in the current video image in the video sequence and encoding the processing unit into an encoded image that is part of the encoded video sequence. For example, video encoder (703) is used instead of video encoder (403) in the example shown in FIG. four.

[0109] В примере HEVC видеокодер (703) принимает матрицу значений отсчетов для блока обработки, например, блока предсказания 8×8 отсчетов и т.п. Видеокодер (703) определяет, наилучшим ли образом кодируется блок обработки в интра-режиме, интеррежиме или режиме двойного предсказания с использованием, например, оптимизации скорость-искажения. Когда блок обработки подлежит кодированию в интра-режиме, видеокодер (703) может использовать метод внутреннего предсказания для кодирования блока обработки в кодированное изображение; и когда блок обработки подлежит кодированию в интер-режиме или режиме двойного предсказания, видеокодер (703) может использовать метод внешнего предсказания или двойного предсказания, соответственно, для кодирования блока обработки в кодированное изображение. В некоторых технологиях видеокодирования, режим объединения может быть подрежимом предсказания между изображениями, где вектор движения выводится из одного или более предсказателей вектора движения без привлечения кодированного компонента вектора движения вне предсказателей. В некоторых других технологиях видеокодирования может присутствовать компонент вектора движения, применимый к данному блоку. В порядке примера, видеокодер (703) включает в себя другие компоненты, например, модуль определения режима (не показан) для определения режима блоков обработки.[0109] In the HEVC example, video encoder (703) receives a matrix of sample values for a processing block, such as an 8x8 sample prediction block, or the like. The video encoder (703) determines whether the processing block is best encoded in intra mode, inter mode, or dual prediction mode using, for example, rate-distortion optimization. When the processing block is to be encoded in intra mode, the video encoder (703) may use an intra prediction technique to encode the processing block into an encoded picture; and when the processing block is to be encoded in inter mode or double prediction mode, the video encoder (703) may use an inter prediction or double prediction technique, respectively, to encode the processing block into an encoded picture. In some video coding technologies, the combining mode may be a sub-mode of inter-picture prediction where a motion vector is derived from one or more motion vector predictors without involving the encoded motion vector component outside of the predictors. In some other video coding technologies, there may be a motion vector component applicable to a given block. By way of example, the video encoder (703) includes other components, such as a mode determination module (not shown) for determining the mode of the processing units.

[0110] В примере, приведенном на фиг. 7, видеокодер (703) включает в себя интер-кодер (730), интра-кодер (722), вычислитель (723) остатка, переключатель (726), кодер (724) остатка, общий контроллер (721) и энтропийный кодер (725), соединенные друг с другом как показано на фиг. 7.[0110] In the example shown in FIG. 7, the video encoder (703) includes an inter encoder (730), an intra encoder (722), a residual calculator (723), a switch (726), a residual encoder (724), a common controller (721), and an entropy encoder (725). ) connected to each other as shown in Fig. 7.

[0111] Интер-кодер (730) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), сравнения блока с одним или более опорными блоками в опорных изображениях (например, блоками в предыдущих изображениях и более поздних изображениях), генерации информации внешнего предсказания (например, описания избыточной информации согласно методу внутреннего кодирования, векторов движения, информации режима объединения), и вычисления результатов внешнего предсказания (например, блока предсказания) на основании информации внешнего предсказания с использованием любого подходящего метода. В некоторых примерах опорными изображениями являются декодированные опорные изображения, которые декодируются на основе информации кодированного видео.[0111] The inter-encoder (730) is configured to receive samples of the current block (e.g., processing block), compare the block with one or more reference blocks in reference pictures (e.g., blocks in previous pictures and later pictures), generate external prediction (eg, describing redundant information according to the intra coding method, motion vectors, combining mode information), and calculating inter prediction results (eg, prediction block) based on the inter prediction information using any suitable method. In some examples, reference pictures are decoded reference pictures that are decoded based on encoded video information.

[0112] Интра-кодер (722) выполнен с возможностью приема отсчетов текущего блока (например, блока обработки), в ряде случаев сравнения блока с блоками, ранее кодированными в том же изображении, генерирования квантованных коэффициентов после преобразования, и в ряде случаев также информации внутреннего предсказания (например, информации направления внутреннего предсказания согласно одному или более методам внутреннего кодирования). В порядке примера, интра-кодер (722) также вычисляет результаты внутреннего предсказания (например, блок предсказания) на основании информации внутреннего предсказания и опорных блоков в том же изображении.[0112] The intra-encoder (722) is configured to receive samples of the current block (e.g., processing block), in some cases comparing the block with blocks previously encoded in the same picture, generating quantized coefficients after the transform, and in some cases also information intra prediction (eg, intra prediction direction information according to one or more intra coding methods). By way of example, the intra encoder 722 also calculates intra prediction results (eg, prediction block) based on intra prediction information and reference blocks in the same picture.

[0113] Общий контроллер (721) выполнен с возможностью определения общих данных управления и управления другими компонентами видеокодера (703) на основе общих данных управления. Например, общий контроллер (721) определяет режим блока и выдает сигнал управления на переключатель (726) на основе режима. Например, когда режим является интра-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата интра-режима для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внутреннего предсказания и включения информации внутреннего предсказания в битовый поток; и когда режим является интер-режимом, общий контроллер (721) управляет переключателем (726) для выбора результата внешнего предсказания для использования вычислителем (723) остатка, и управляет энтропийным кодером (725) для выбора информации внешнего предсказания и включения информации внешнего предсказания в битовый поток.[0113] The common controller (721) is configured to determine common control data and control other components of the video encoder (703) based on the common control data. For example, the common controller (721) determines the mode of the block and outputs a control signal to the switch (726) based on the mode. For example, when the mode is the intra mode, the common controller (721) controls the switch (726) to select the result of the intra mode for use by the residual calculator (723), and controls the entropy encoder (725) to select the intra prediction information and turn on the intra prediction information into the bitstream; and when the mode is inter mode, the common controller (721) controls the switch (726) to select the inter prediction result to be used by the residual calculator (723), and controls the entropy encoder (725) to select the inter prediction information and include the inter prediction information in the bit flow.

[0114] Вычислитель (723) остатка выполнен с возможностью вычисления разности (данных остатка) между принятым блоком и результатами предсказания, выбранными из интра-кодера (722) или интер-кодера (730). Кодер (724) остатка выполнен с возможностью действовать на основе данных остатка для кодирования данных остатка для генерации коэффициентов преобразования. Например, кодер (724) остатка выполнен с возможностью преобразования данных остатка из пространственной области в частотную область и генерирования коэффициентов преобразования. Затем коэффициенты преобразования подвергаются обработке квантования для получения квантованных коэффициентов преобразования. В различных вариантах осуществления видеокодер (703) также включает в себя декодер (728) остатка. Декодер (728) остатка выполнен с возможностью осуществления обратного преобразования и генерирования декодированных данных остатка. Декодированные данные остатка могут надлежащим образом использоваться интра-кодером (722) и интер-кодером (730). Например, интеркодер (730) может генерировать декодированные блоки на основе декодированных данных остатка и информации внешнего предсказания, и интра-кодер (722) может генерировать декодированные блоки на основе декодированных данных остатка и информации внутреннего предсказания. Декодированные блоки надлежащим образом обрабатываются для генерации декодированных изображений, и декодированные изображения могут буферизоваться в схеме памяти (не показана) и в некоторых примерах использоваться в качестве опорных изображений.[0114] The residual calculator (723) is configured to calculate the difference (residual data) between the received block and the prediction results selected from the intra-coder (722) or inter-coder (730). The residual encoder (724) is configured to operate on the residual data to encode the residual data to generate transform coefficients. For example, the residual encoder (724) is configured to transform residual data from the spatial domain to the frequency domain and generate transform coefficients. Then, the transform coefficients are subjected to quantization processing to obtain quantized transform coefficients. In various embodiments, the video encoder (703) also includes a residual decoder (728). The residual decoder (728) is configured to perform inverse transformation and generate decoded residual data. The decoded residual data may be appropriately used by the intra-coder (722) and the inter-coder (730). For example, the intercoder (730) may generate decoded blocks based on the decoded residual data and inter prediction information, and the intra encoder (722) may generate decoded blocks based on the decoded residual data and intra prediction information. The decoded blocks are properly processed to generate decoded pictures, and the decoded pictures can be buffered in a memory circuit (not shown) and used as reference pictures in some examples.

[0115] Энтропийный кодер (725) выполнен с возможностью форматирования битового потока так, чтобы он включал в себя кодированный блок. Энтропийный кодер (725) выполнен с возможностью включать различную информацию согласно подходящему стандарту, например, стандарту HEVC. Например, энтропийный кодер (725) выполнен с возможностью включать общие данные управления, выбранную информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), информацию остатка и другую подходящую информацию в битовый поток. Заметим, что, согласно раскрытому изобретению, при кодировании блока в подрежиме объединения любого из интер-режима и режима двойного предсказания, информация остатка отсутствует.[0115] The entropy encoder (725) is configured to format the bitstream so that it includes a coded block. The entropy encoder (725) is configured to include various information according to an appropriate standard, such as the HEVC standard. For example, the entropy encoder (725) is configured to include common control data, selected prediction information (eg, intra prediction information or inter prediction information), residual information, and other appropriate information in the bitstream. Note that, according to the disclosed invention, when encoding a block in the combining sub-mode of any of the inter-mode and the dual-prediction mode, there is no residual information.

[0116] На фиг. 8 показана схема видеодекодера (810) согласно другому варианту осуществления изобретения. Видеодекодер (810) выполнен с возможностью приема кодированных изображений, составляющих часть кодированной[0116] In FIG. 8 shows a diagram of a video decoder (810) according to another embodiment of the invention. The video decoder (810) is configured to receive encoded pictures constituting part of the encoded

видеопоследовательности, и декодирования кодированных изображений для генерации реконструированных изображений. Например, видеодекодер (810) используется вместо видеодекодера (410) в примере, приведенном на фиг. 4.video sequence, and decoding the encoded pictures to generate reconstructed pictures. For example, video decoder (810) is used instead of video decoder (410) in the example shown in FIG. four.

[0117] В примере, приведенном на фиг. 8, видеодекодер (810) включает в себя энтропийный декодер (871), интер-декодер (880), декодер (873) остатка, модуль (874) реконструкции и интра-декодер (872), соединенные друг с другом как показано на фиг. 8.[0117] In the example shown in FIG. 8, the video decoder (810) includes an entropy decoder (871), an inter decoder (880), a residual decoder (873), a reconstruction unit (874), and an intra decoder (872) connected to each other as shown in FIG. eight.

[0118] Энтропийный декодер (871) может быть выполнен с возможностью реконструкции, из кодированного изображения, некоторых символов, которые представляют синтаксические элементы, образующие кодированное изображение. Такие символы могут включать в себя, например, режим кодирования блока (например, интра-режим, интер-режим, режим двойного предсказания, причем последние два в подрежиме объединения или другом подрежиме), информацию предсказания (например, информацию внутреннего предсказания или информацию внешнего предсказания), которая может идентифицировать определенный отсчет или метаданные, используемые для предсказания интра-декодером (872) или интер-декодером (880), соответственно, информацию остатка в форме, например, квантованных коэффициентов преобразования и т.п. Например, когда режим предсказания является режимом внутреннего или двойного предсказания, информация внешнего предсказания поступает на интер-декодер (880); а когда тип предсказания является типом внутреннего предсказания, информация внутреннего предсказания поступает на интра-декодер (872). Информация остатка может подвергаться обратному квантованию и поступать в декодер (873) остатка.[0118] The entropy decoder (871) may be configured to reconstruct, from the encoded image, some symbols that represent the syntax elements that make up the encoded image. Such symbols may include, for example, a block coding mode (e.g., intra mode, inter mode, dual prediction mode, the latter two being in a pooling submode or other submode), prediction information (e.g., intra prediction information, or inter prediction information ) that can identify a specific sample or metadata used for prediction by the intra-decoder (872) or inter-decoder (880), respectively, residual information in the form of, for example, quantized transform coefficients, and the like. For example, when the prediction mode is an intra or dual prediction mode, the inter prediction information is input to the inter decoder (880); and when the prediction type is an intra prediction type, the intra prediction information is input to the intra decoder (872). The residual information may be inverse quantized and fed to the residual decoder (873).

[0119] Интер-декодер (880) выполнен с возможностью приема информации внешнего предсказания и генерирования результатов внешнего предсказания на основании информации внешнего предсказания.[0119] The inter decoder (880) is configured to receive inter prediction information and generate inter prediction results based on the inter prediction information.

[0120] Интра-декодер (872) выполнен с возможностью приема информации внутреннего предсказания и генерирования результатов предсказания на основании информации внутреннего предсказания.[0120] The intra decoder (872) is configured to receive intra prediction information and generate prediction results based on the intra prediction information.

[0121] Декодер (873) остатка выполнен с возможностью осуществления обратного квантования для извлечения деквантованных коэффициентов преобразования и обработки деквантованных коэффициентов преобразования для преобразования остатка из частотной области в пространственную область. Декодер (873) остатка также может требовать некоторой информации управления (включать параметр квантователя (QP, Quantizer Parameter)), и эта информация может обеспечиваться энтропийным декодером (871) (путь данных не показан, поскольку это может быть только информация управления малого объема).[0121] The residual decoder (873) is configured to perform inverse quantization to extract the dequantized transform coefficients and process the dequantized transform coefficients to transform the residual from the frequency domain to the spatial domain. The residual decoder (873) may also require some control information (include a quantizer parameter (QP, Quantizer Parameter)), and this information may be provided by the entropy decoder (871) (the data path is not shown since this may only be small volume control information).

[0122] Модуль (874) реконструкции выполнен с возможностью объединения, в пространственной области, остатка на выходе декодера (873) остатка и результатов предсказания (на выходе модулей внешнего или внутреннего предсказания, в зависимости от ситуации) для формирования реконструированного блока, который может входить в состав реконструированного изображения, которое, в свою очередь, может входить в состав реконструированного видео. Заметим, что другие подходящие операции, например, операция деблокирования и т.п., может осуществляться для повышения визуального качества.[0122] The reconstruction module (874) is configured to combine, in the spatial domain, the residual at the output of the residual decoder (873) and prediction results (at the output of the inter- or intra-prediction modules, as appropriate) to form a reconstructed block that may be included into the reconstructed image, which, in turn, can be part of the reconstructed video. Note that other suitable operations, such as a release operation and the like, may be performed to improve the visual quality.

[0123] Заметим, что видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием любого подходящего метода. Согласно варианту осуществления, видеокодеры (403), (603) и (703) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одной или более интегральных схем. В другом варианте осуществления видеокодеры (403), (603) и (603) и видеодекодеры (410), (510) и (810) могут быть реализованы с использованием одного или более процессоров, которые выполняют программные инструкции.[0123] Note that video encoders (403), (603) and (703) and video decoders (410), (510) and (810) may be implemented using any suitable technique. According to an embodiment, video encoders (403), (603) and (703) and video decoders (410), (510) and (810) may be implemented using one or more integrated circuits. In another embodiment, video encoders (403), (603) and (603) and video decoders (410), (510) and (810) may be implemented using one or more processors that execute program instructions.

[0124] II. Методы обработки преобразования[0124] II. Transform processing methods

[0125] 1. Структура разбиения блока включающая в себя структуру разбиения в виде квадрадерева[0125] 1. A block splitting structure including a quadtree splitting structure

[0126] Структура разбиения блока может именоваться деревом кодирования. В некоторых вариантах осуществления, благодаря использованию структуры квадрадерева, единица дерева кодирования (CTU) делится на единицы кодирования (CU) для адаптации к различным локальным характеристикам. Решение, кодировать ли область изображения с использованием предсказания между изображениями (временного) или внутри изображения (пространственного), принимается на уровне CU. Каждая CU может дополнительно делиться на одну, две или четыре единицы предсказания (PU) согласно типу разделения PU. Внутри одной PU применяется один и тот же процесс предсказания, и значимая информация передается в декодер на основе PU.[0126] The block splitting structure may be referred to as a coding tree. In some embodiments, through the use of a quadtree structure, a coding tree unit (CTU) is divided into coding units (CU) to adapt to different local characteristics. The decision whether to encode an image area using inter-picture (temporal) or intra-picture (spatial) prediction is made at the CU layer. Each CU may be further divided into one, two, or four prediction units (PU) according to the division type of the PU. Within one PU, the same prediction process is applied and meaningful information is transmitted to a decoder based on the PU.

[0127] Получив остаточный блок с применением процесса предсказания на основании типа разделения PU, CU можно разбить на единицы преобразования (TU) согласно другой структуре квадрадерева. Как можно видеть, существуют различные принципы разбиения, включающие в себя CU, PU и TU. В некоторых вариантах осуществления, CU или TU может иметь только квадратную форму, тогда как PU может иметь квадратную или прямоугольную форму. В некоторых вариантах осуществления, один блок кодирования может дополнительно делиться на четыре квадратных субблока, и преобразование может осуществляться на каждом субблоке, т.е. TU. Каждая TU может дополнительно рекурсивно делиться на меньшие TU благодаря использованию структуры квадрадерева, которая называется остаточным квадрадеревом (RQT, residual quadtree).[0127] Having obtained a residual block using a prediction process based on the division type of the PU, the CU can be partitioned into transform units (TUs) according to another quadtree structure. As can be seen, there are different partitioning principles, including CU, PU, and TU. In some embodiments, the CU or TU may only be square, while the PU may be square or rectangular. In some embodiments, one coding block may be further divided into four square subblocks, and the transformation may be performed on each subblock, i. e. T.U. Each TU can be further recursively divided into smaller TUs by using a quadtree structure called a residual quadtree (RQT).

[0128] На границе изображения, в некоторых вариантах осуществления можно использовать неявное разделение в виде квадрадерева, что позволяет продолжать разделение блока в виде квадрадерева, пока его размер не впишется в границу изображения.[0128] At the image boundary, in some embodiments, implicit quadtree partitioning can be used, which allows the quadtree block to continue splitting until its size fits within the image boundary.

[0129] 2. Структура разбиения блока в виде квадрадерево плюс двоичное дерево (QTBT)[0129] 2. Quadtree plus binary tree (QTBT) block partitioning structure

[0130] В некоторых вариантах осуществления используется структура квадрадерево плюс двоичное дерево (QTBT). Структура QTBT исключает концепции множества типов разбиения (концепции CU, PU и TU), и поддерживает дополнительную гибкость для форм разбиения CU. В блочной структуре QTBT CU может иметь либо квадратную, либо прямоугольную форму.[0130] In some embodiments, a quadtree plus binary tree (QTBT) structure is used. The QTBT framework eliminates the concepts of multiple partition types (the concepts of CU, PU, and TU), and supports additional flexibility for CU partition forms. In the block structure of the QTBT, the CU can be either square or rectangular.

[0131] На фиг. 9А показана CTU (910), которая разбивается с использованием структуры (920) QTBT, показанной на фиг. 9В. Сначала CTU (910) разбивается согласно структуре квадрадерева. Краевые узлы квадрадерева дополнительно разбиваются согласно структуре двоичного дерева или структуре квадрадерева. В разделении в виде двоичного дерева может существовать два типа разделения, симметричное горизонтальное разделение и симметричное вертикальное разделение. Краевыми (листовыми) узлами двоичного дерева называются CU, которые могут использоваться для обработки предсказания и преобразования без какого-либо дополнительного разбиения. Соответственно, CU, PU и TU в структуре блока кодирования QTBT имеют одинаковый размер блока.[0131] In FIG. 9A shows a CTU (910) that is partitioned using the QTBT structure (920) shown in FIG. 9B. First, the CTU (910) is partitioned according to the quadtree structure. The edge nodes of the quadtree are further split according to the binary tree structure or the quadtree structure. In binary tree partitioning, there can be two types of partitioning, symmetrical horizontal partitioning and symmetrical vertical partitioning. The leaf nodes of a binary tree are called CUs, which can be used for prediction and transformation processing without any additional partitioning. Accordingly, CUs, PUs, and TUs in a QTBT coding block structure have the same block size.

[0132] В некоторых вариантах осуществления, CU может включать в себя блоки кодирования (СВ) разных цветовых компонент.Например, одна CU содержит один СВ яркости и два СВ цветности в случае Р- и В-слайсов формата цветности 4:2:0. CU может включать в себя СВ единственной цветовой компоненты. Например, одна CU содержит единственный СВ яркости или только два СВ цветности в случае I-слайсов.[0132] In some embodiments, a CU may include coding units (CBs) of different color components. For example, one CU contains one luma CB and two chrominance CBs in the case of 4:2:0 chroma P and B slices. The CU may include the CB of a single color component. For example, one CU contains a single luminance CB, or only two chrominance CBs in the case of I-slices.

[0133] В некоторых вариантах осуществления для схемы разбиения QTBT задаются следующие параметры:[0133] In some embodiments, the following parameters are set for the QTBT partitioning scheme:

- размер CTU: размер корневого узла квадрадерева, например, тот же принцип, что и в HEVC.- CTU size: the size of the root node of the quadtree, for example, the same principle as in HEVC.

- MinQTSize: минимально разрешенный размер краевого узла квадрадерева.- MinQTSize: The minimum allowed size of a quadtree edge node.

- MaxBTSize: максимально разрешенный размер корневого узла двоичногодерева.- MaxBTSize: maximum allowed size of the root node of the binary tree.

- MaxBTDepth: максимально разрешенная глубина двоичного дерева.- MaxBTDepth: maximum allowed binary tree depth.

- MinBTSize: минимально разрешенный размер краевого узла двоичного дерева.- MinBTSize: The minimum allowed size of the edge node of the binary tree.

[0134] В одном примере структуры разбиения QTBT, размер CTU устанавливается равным 128×128 отсчетов яркости с двумя соответствующими блоками 64×64 отсчетов цветности, MinQTSize устанавливается равным 16×16, MaxBTSize устанавливается равным 64×64, MinBTSize (для обеих ширины и высоты) устанавливается равным 4×4, и MaxBTDepth устанавливается равным 4. Сначала разбиение в виде квадрадерева применяется к CTU для генерации краевых узлов квадрадерева. Краевые узлы квадрадерева могут иметь размер от 16×16 (т.е. MinQTSize) до 128×128 (т.е. размера CTU). Если краевой узел квадрадерева имеет размер 128×128, он не будет дополнительно делиться в виде двоичного дерева, поскольку размер превышает MaxBTSize (т.е. 64×64). В противном случае краевой узел квадрадерева может дополнительно разбиваться в виде двоичного дерева. Поэтому краевой узел квадрадерева также является корневым узлом для двоичного дерева, и он имеет глубину двоичного дерева, равную 0.[0134] In one example of a QTBT partitioning structure, the CTU size is set to 128x128 luma samples with two corresponding blocks of 64x64 chrominance samples, MinQTSize is set to 16x16, MaxBTSize is set to 64x64, MinBTSize (for both width and height ) is set to 4×4, and MaxBTDepth is set to 4. First, quadtree partitioning is applied to the CTU to generate edge quadtree nodes. The edge nodes of the quadtree may have a size from 16x16 (ie MinQTSize) to 128x128 (ie CTU size). If a quadtree edge node has a size of 128x128, it will not be further divided as a binary tree because the size exceeds MaxBTSize (ie 64x64). Otherwise, the edge node of the quadtree may be further split as a binary tree. Therefore, the edge node of the quadtree is also the root node for the binary tree, and it has a binary tree depth of 0.

[0135] Когда глубина двоичного дерева достигает MaxBTDepth (т.е. 4), дополнительное разделение не предусмотрено. Когда узел двоичного дерева имеет ширину, равную MinBTSize (т.е. 4), дополнительное горизонтальное разделение не предусмотрено. Аналогично, когда узел двоичного дерева имеет высоту, равную MinBTSize, дополнительное вертикальное разделение не предусмотрено. Краевые узлы двоичного дерева дополнительно обрабатываются посредством обработки предсказания и преобразования без какого-либо дополнительного разбиения. Согласно варианту осуществления, максимальный размер CTU составляют 256×256 отсчетов яркости.[0135] When the depth of the binary tree reaches MaxBTDepth (ie 4), no further division is provided. When a binary tree node has a width equal to MinBTSize (ie 4), no additional horizontal split is provided. Similarly, when a binary tree node has a height equal to MinBTSize, no additional vertical split is provided. The edge nodes of the binary tree are further processed through prediction and transformation processing without any further splitting. According to an embodiment, the maximum CTU size is 256×256 luminance samples.

[0136] На фиг. 9А и 9В, сплошные линии указывают разделение в виде квадрадерева и пунктирные линии указывают разделение в виде двоичного дерева. В каждом разделении (т.е. не краевой) узла двоичного дерева, один флаг сигнализируется для указания используемого типа разделения (т.е. горизонтального или вертикального). Например, 0 указывает горизонтальное разделение, и 1 указывает вертикальное разделение. Для разделения в виде квадрадерева, нет необходимости указывать тип разделения, поскольку разделение в виде квадрадерева всегда делит блок как горизонтально, так и вертикально для создания 4 субблоков одинакового размера.[0136] FIG. 9A and 9B, solid lines indicate quadtree partitioning and dotted lines indicate binary tree partitioning. At each split (ie, non-edge) of a binary tree node, one flag is signaled to indicate the type of split to use (ie, horizontal or vertical). For example, 0 indicates a horizontal split and 1 indicates a vertical split. For a quadtree split, it is not necessary to specify a split type, because a quadtree split always divides a block both horizontally and vertically to create 4 equally sized subblocks.

[0137] В некоторых вариантах осуществления, схема QTBT поддерживает гибкость, чтобы яркость и цветность имели отдельные структуры QTBT. Например, для Р- и В-слайсов, блоки яркости и цветности в одной CTU совместно используют одну и ту же структуру QTBT. Однако, для I-слайсов, СТВ яркости разбивается на CU согласно структуре QTBT, и блоки цветности разбиваются на CU цветности другой структурой QTBT. Таким образом, CU в I-слайсе состоит из блока кодирования компоненты яркости или блоков кодирования двух компонент цветности, и CU в Р- или В-слайсе состоит из блоков кодирования всех трех цветовых компонент.[0137] In some embodiments, the QTBT schema maintains the flexibility that luma and chrominance have separate QTBT structures. For example, for P and B slices, the luma and chrominance units in the same CTU share the same QTBT structure. However, for I-slices, the luma CTB is partitioned into CUs according to the QTBT structure, and the chrominance blocks are partitioned into chroma CUs by another QTBT structure. Thus, a CU in an I slice consists of a luma component coding block or two chroma component coding blocks, and a CU in a P or B slice consists of all three color component coding blocks.

[0138] В некоторых вариантах осуществления, внешнее предсказание для малых блоков ограничено для уменьшения доступа к памяти компенсации движения. Например, двойное предсказание не поддерживается для блоков 4×8 и 8×4, и внешнее предсказание не поддерживается для блоков 4×4.[0138] In some embodiments, inter-prediction for small blocks is limited to reduce motion compensation memory access. For example, dual prediction is not supported for 4x8 and 8x4 blocks, and inter prediction is not supported for 4x4 blocks.

[0139] 3. Структура разбиения блока в виде троичного дерева (ТТ)[0139] 3. Trinity Tree (TT) Block Break Structure

[0140] В некоторых вариантах осуществления, для разбиения изображения используется структура многотипного дерева (МТТ). Структура МТТ является более гибкой структурой дерева, чем структура QTBT. В МТТ, помимо квадрадерева и двоичного дерева, применяются горизонтальное центрально-боковое троичное дерево и вертикальное центрально-боковое троичное дерево, показанные на фиг. 9С и фиг. 9D, соответственно. Разбиение в виде троичного дерева может дополнять разбиение в виде квадрадерева и двоичного дерева. Например, троичное дерево разбиение способно захватывать объекты, находящиеся в центре блок, тогда как квадрадерево и двоичное дерево могут разделять, пересекая центры блоков. Ширина и высота разбиений, полученных посредством троичных деревьев, являются степенями 2, что избавляет от необходимости в дополнительном разбиении преобразования.[0140] In some embodiments, a multi-type tree (MTT) structure is used to partition an image. The MTT structure is a more flexible tree structure than the QTBT structure. In addition to the quadtree and binary tree, the MTT uses the horizontal center-side ternary tree and the vertical center-side ternary tree shown in FIG. 9C and FIG. 9D, respectively. Ternary tree partitioning can complement quadtree and binary tree partitioning. For example, a ternary split tree can capture objects that are in the center of a block, while a quadtree and a binary tree can split by crossing the centers of the blocks. The width and height of the partitions obtained by ternary trees are powers of 2, which eliminates the need for additional transformation partitioning.

[0141] В примере, конструкция двухуровневого дерева в основном мотивирована снижением сложности. Например, сложность обхода дерева составляет TD, где Т обозначает количество типов разделения, и D - глубина дерева.[0141] In the example, the two-level tree design is mainly motivated by the reduction in complexity. For example, the tree traversal complexity is T D , where T is the number of split types and D is the depth of the tree.

[0142] 4. Примеры первичного преобразования[0142] 4. Primary Conversion Examples

[0143] В некоторых вариантах осуществления, например, в HEVC, в качестве первичных преобразований используются 4-точечное, 8-точечное, 16-точечное и 32-точечное преобразования DCT-2. На фиг. 10A-10D показаны матрицы ядра преобразования 4-точечного, 8-точечного, 16-точечного и 32-точечного DCT-2, соответственно. Элементы этих матриц ядра преобразования могут быть представлены с использованием 8-битовых целых чисел, и поэтому эти матрицы ядра преобразования именуются 8-битовыми ядрами преобразования. Как показано, матрица ядра преобразования меньшего DCT-2 является частью матрицы большего DCT-2.[0143] In some embodiments, such as HEVC, 4-point, 8-point, 16-point, and 32-point DCT-2 transforms are used as primary transforms. In FIG. 10A-10D show the transform kernel matrices of the 4-point, 8-point, 16-point, and 32-point DCT-2, respectively. The elements of these transformation kernel matrices can be represented using 8-bit integers, and therefore these transformation kernel matrices are referred to as 8-bit transformation kernels. As shown, the transformation kernel matrix of the smaller DCT-2 is part of the matrix of the larger DCT-2.

[0144] Матрицы ядра DCT-2 демонстрируют характеристики симметрии/антисимметрии. Соответственно, так называемая реализация "частичной бабочки" может поддерживаться для уменьшения количества счетчиков операции (операций умножения, сложения/вычитания, сдвигов). Идентичные результаты умножения матриц можно получать с использованием реализации частичной бабочки.[0144] DCT-2 core matrices exhibit symmetry/antisymmetry characteristics. Accordingly, a so-called "partial butterfly" implementation can be supported to reduce the number of operation counters (multiplications, additions/subtractions, shifts). The identical results of matrix multiplication can be obtained using the partial butterfly implementation.

[0145] 5. Дополнительные примеры первичного преобразования[0145] 5. Additional Primary Transform Examples

[0146] В некоторых вариантах осуществления, помимо вышеописанных 4-точечного, 8-точечного, 16-точечного и 32-точечного преобразований DCT-2, используются дополнительные 2-точечное и 64-точечное DCT-2. На фиг. 11А-11Е показана матрица 64×64 ядра преобразования 64-точечного преобразования DCT-2.[0146] In some embodiments, in addition to the 4-point, 8-point, 16-point, and 32-point DCT-2 transformations described above, additional 2-point and 64-point DCT-2 transformations are used. In FIG. 11A-11E show a 64x64 matrix of a 64-point DCT-2 transform kernel.

[0147] В некоторых вариантах осуществления, помимо преобразований DCT-2 и 4×4 DST-7, для кодирования остатка обоих интер- и интра-кодированных блоков используется адаптивное множественное преобразование (АМТ) (также известное как расширенное множественное преобразование (ЕМТ, enhanced multiple transform), или выбор множественных преобразований (MTS, multiple transform selection)). АМТ использует множественные выбранные преобразования из семейств дискретного косинусного преобразования (DCT) / дискретного синусного преобразования (DST) помимо преобразования DCT-2, например, матриц ядра преобразования DST-7 или преобразования DCT-8. На фиг. 12 показаны базисные функции преобразования из выбранных преобразований DST/DCT.[0147] In some embodiments, in addition to the DCT-2 and 4x4 DST-7 transforms, an adaptive multiple transform (AMT) (also known as enhanced multiple transform (EMT) is used to encode the remainder of both inter- and intra-coded blocks). multiple transform), or the choice of multiple transformations (MTS, multiple transform selection)). The AMT uses multiple selected transforms from the Discrete Cosine Transform (DCT) / Discrete Sine Transform (DST) families in addition to the DCT-2 transform, such as the DST-7 transform kernel matrices or the DCT-8 transform. In FIG. 12 shows the basis transform functions from the selected DST/DCT transforms.

[0148] В некоторых вариантах осуществления, матрицы ядра преобразования DST/DCT, используемые в АМТ, представлены в 8-битовом формате. В некоторых вариантах осуществления, АМТ применяется к CU, где и, ширина и высота меньше или равна 32. Применять ли АМТ, может управляться флагом (например, mts_flag). Например, когда mts_flag равен 0, для кодирования остаточного блока применяется только DCT-2. Когда mts_flag равен 1, индекс (например, mts_idx), может дополнительно сигнализироваться с использованием 2 бинов для указания горизонтального и вертикального преобразований, подлежащих использованию.[0148] In some embodiments, the DST/DCT transform kernel matrices used in the AMT are in 8-bit format. In some embodiments, an AMT is applied to a CU where u, width, and height are less than or equal to 32. Whether or not an AMT is applied may be controlled by a flag (eg, mts_flag). For example, when mts_flag is 0, only DCT-2 is used to encode the residual block. When mts_flag is 1, an index (eg, mts_idx) may be further signaled using 2 bins to indicate the horizontal and vertical transformations to be used.

[0149] На фиг. 13 показана таблица (1300), иллюстрирующая отношение отображения между значением индекса (например, mts_idx) и соответствующими горизонтальными или вертикальными преобразованиями. Строка (1301), где mts_idx имеет значение -1, соответствует сценарию, где флаг (например, mts_flag) равен 0, и используется преобразование DCT-2. Строки (1302)-(1305) где mts_idx имеет значение 0, 1, 2 или 3 соответствуют сценарию, где mts_flag равен 1. В двух правых столбцах таблицы (1300), 0 обозначает тип преобразования DCT-2, 1 обозначает тип преобразования DST-7, и 2 обозначает тип преобразования DCT 8.[0149] FIG. 13 is a table (1300) illustrating the mapping relationship between an index value (eg, mts_idx) and corresponding horizontal or vertical transformations. Line (1301) where mts_idx is -1 corresponds to a scenario where the flag (eg mts_flag) is 0 and DCT-2 is used. Rows (1302)-(1305) where mts_idx is 0, 1, 2, or 3 correspond to the scenario where mts_flag is 1. In the two right columns of table (1300), 0 denotes the DCT-2 transform type, 1 denotes the DST- 7 and 2 denotes the type of DCT 8 conversion.

[0150] На фиг. 14A-14D показаны матрицы ядра преобразования DST-7. На фиг. 15A-15D показаны матрицы ядра преобразования DCT-8.[0150] In FIG. 14A-14D show DST-7 transform kernel matrices. In FIG. 15A-15D show DCT-8 transform kernel matrices.

[0151] 6. Режим кодирования с интра-субразбиением (ISP)[0151] 6. Intra-subdivision (ISP) coding mode

[0152] В некоторых вариантах осуществления используется режим кодирования с интра-субразбиением (ISP). В режиме кодирования с ISP, внутренне предсказанный блок яркости можно разбивать вертикально или горизонтально на 2 или 4 субчасти. Количество субчастей может зависеть от размера блока. На фиг. 16 показано количество субчастей в зависимости от размера блока. На фиг. 17 показан пример, где блок 4×8 или 8×4 разбивается на две субчасти. На фиг. 18 показан пример, где блок размером более 4×8 или 8×4 разбивается на четыре субчасти. В примере, все субчасти удовлетворяют условие наличия по меньшей мере 16 отсчетов. В примере, ISP не применяется к компонентам цветности.[0152] In some embodiments, an intra-subdivision (ISP) coding mode is used. In the ISP coding mode, the intra-predicted luma block can be split vertically or horizontally into 2 or 4 subparts. The number of subparts may depend on the size of the block. In FIG. 16 shows the number of sub-parts depending on the block size. In FIG. 17 shows an example where a 4x8 or 8x4 block is split into two sub-parts. In FIG. 18 shows an example where a block larger than 4×8 or 8×4 is divided into four sub-parts. In the example, all subparts satisfy the condition of having at least 16 samples. In the example, ISP does not apply to chrominance components.

[0153] В примере, для каждой из субчастей, на которые разбит блок кодирования, остаточный сигнал генерируется посредством энтропийного декодирования соответствующих коэффициентов, отправленных с кодера и затем их обратного квантования и обратного преобразования. Затем, первая из субчастей внутреннее предсказывается для генерации сигнала предсказания. Сигнал предсказания прибавляется к соответствующему остаточному сигналу первого разбиения для получения соответствующих реконструированных отсчетов. Затем реконструированные значения отсчета первого разбиения могут быть доступны для генерации предсказания второй из субчастей. Этот процесс может повторяться разбиение за разбиением, пока не будут реконструированы все субчасти из блока кодирования. В примере, все субчасти совместно используют один и тот же интра-режим.[0153] In the example, for each of the subparts into which the coding block is divided, a residual signal is generated by entropy decoding the respective coefficients sent from the encoder and then dequantizing and inverse transforming them. Then, the first of the subparts is internally predicted to generate a prediction signal. The prediction signal is added to the corresponding first split residual signal to obtain the corresponding reconstructed samples. The reconstructed sample values of the first split may then be available to generate a prediction of the second of the subparts. This process can be repeated split by split until all subparts from the coding block have been reconstructed. In the example, all subparts share the same intra mode.

[0154] Согласно варианту осуществления, режим кодирования с ISP тестируется только с интра-режимами, которые являются частью списка наиболее вероятных режимов (МРМ, most probable mode). Соответственно, если блок использует ISP, то флаг МРМ может предполагаться единице. Кроме того, когда ISP используется для определенного блока, то соответствующий список МРМ будет модифицироваться для исключения DC режима и для отдания приоритета горизонтальным интра-режимам для горизонтального разделения ISP и вертикальным интра-режимам для вертикального.[0154] In an embodiment, the ISP encoding mode is only tested with intra modes that are part of the most probable mode (MPM) list. Accordingly, if the block uses an ISP, then the MPM flag may be assumed to be one. In addition, when an ISP is used for a particular block, the corresponding MPM list will be modified to exclude the DC mode and to give priority to horizontal intra modes for horizontal ISP separation and vertical intra modes for vertical.

[0155] В режиме кодирования с ISP, каждое разбиение можно рассматривать как TU, поскольку преобразование и реконструкция осуществляются по отдельности для каждой субчасти.[0155] In the ISP coding mode, each partition can be considered as a TU since the transformation and reconstruction are performed separately for each sub-part.

[0156] На фиг. 19А-19 В показан пример синтаксических элементов (1900), сигнализируемых для режима кодирования с ISP. Как показано в кадре (1910), синтаксический элемент, например, intra_subpartitions_mode_flag, указывает, используется ли ISP. Синтаксический элемент, например, intra_subpartitions_split_flag, указывает направление разбиения (вертикальное или горизонтальное).[0156] FIG. 19A-19B show an example of syntax elements (1900) signaled for ISP coding mode. As shown in frame (1910), a syntax element such as intra_subpartitions_mode_flag indicates whether an ISP is being used. A syntax element, such as intra_subpartitions_split_flag, specifies the splitting direction (vertical or horizontal).

[0157] 7. Преобразование субблоков (SBT)[0157] 7. Subblock Transform (SBT)

[0158] В некоторых вариантах осуществления, используется преобразование субблоков (SBT), также именуемое пространственно изменяющимся преобразованием (SVT, spatially varying transform). SBT можно применять к остаткам внешнего предсказания. В некоторых примерах, остаточный блок включен в блок кодирования и меньше блока кодирования. Таким образом размер преобразования в SBT меньше размера блока кодирования. Для области, не покрытой остаточным блоком, можно предположить нулевой остаток, и, таким образом, обработка преобразования на осуществляется.[0158] In some embodiments, a subblock transform (SBT), also referred to as a spatially varying transform (SVT), is used. SBT can be applied to inter prediction residuals. In some examples, the residual block is included in the coding block and is smaller than the coding block. Thus, the size of the transform in SBT is smaller than the size of the coding block. For the area not covered by the residual block, zero residual can be assumed, and thus no conversion processing is performed.

[0159] На фиг. 20A-20D показаны типы субблока (SVT-H, SVT-V) (например, горизонтального или вертикального разбиения), размеры и позиции (например, левая половина, левая четверть, правая половина, правая четверть, верхняя половина, верхняя четверть, нижняя половина, нижняя четверть), поддерживаемые в SBT. Заштрихованные области, обозначенные буквой "А", являются остаточными блоками с преобразованием, и другие области предполагается нулевым остатком без преобразования.[0159] In FIG. 20A-20D show sub-block types (SVT-H, SVT-V) (e.g., horizontal or vertical splits), sizes, and positions (e.g., left half, left quarter, right half, right quarter, top half, top quarter, bottom half , lower quarter) supported in SBT. The shaded areas labeled "A" are residual blocks with transformation, and other regions are assumed to be zero residual without transformation.

[0160] В порядке примера, на фиг. 21A-21I показаны изменения, внесенные в текст спецификации стандарта видеокодирования (например, VVC) при использовании SBT. Добавленные тексты показаны в рамках (2101)-(2113). Как показано, дополнительные синтаксические элементы, например, дополнительные служебные биты cu_sbt_flag, cu_sbt_quad_flag, cusbthorizontalHag и cu_sbt_pos_flag, могут сигнализироваться для указания типа субблока (горизонтальный или вертикальный), размера (половина или четверть) и позиции (левая, правая, верхняя или нижняя), соответственно.[0160] By way of example, in FIG. 21A-21I show changes made to the specification text of a video coding standard (eg, VVC) when using SBT. Added texts are shown in frames (2101)-(2113). As shown, additional syntax elements, such as additional overhead bits cu_sbt_flag, cu_sbt_quad_flag, cusbthorizontalHag, and cu_sbt_pos_flag, may be signaled to indicate the sub-block type (horizontal or vertical), size (half or quarter), and position (left, right, top, or bottom), respectively.

[0161] 8. YUV-форматы[0161] 8. YUV formats

[0162] На фиг. 22 показаны разные YUV-форматы (например, 4:4:4, 4:2:2, 4:1:1 и 4:2:0), используемые в некоторых вариантах осуществления. В примере, внутреннее предсказание на основе кросс-компонентной линейной модели используется для формата 4:2:0. Для получения прореженного отсчета яркости, соответствующего отсчету цветности, как показано на фиг. 22, можно применять шестиотводный интерполяционный фильтр. В примере, прореженный отсчет яркости Rec'L[х, у] можно вычислить из близлежащих реконструированных отсчетов яркости (обозначенных RecL[x, у]), следующим образом:[0162] In FIG. 22 shows different YUV formats (eg, 4:4:4, 4:2:2, 4:1:1, and 4:2:0) used in some embodiments. In the example, intra-prediction based on a cross-component linear model is used for a 4:2:0 format. To obtain a decimated luminance sample corresponding to the chrominance sample, as shown in FIG. 22, a six-tap interpolation filter can be applied. In the example, the decimated luminance sample Rec' L [x, y] can be computed from nearby reconstructed luminance samples (denoted Rec L [x, y]), as follows:

Rec'L[х,у]=(2×RecL-[2х, 2y]+2×RecL[2х,2у+1]+Rec' L [x, y]=(2×Rec L -[2x, 2y]+2×Rec L [2x, 2y+1]+

RecL[2x-1,2y]+RecL [2x+1,2y]+Rec L [2x-1,2y]+Rec L [2x+1,2y]+

RecL[2x-1,2y+l]+RecL[2x+1,2y+1]+4)>>3Rec L [2x-1,2y+l]+Rec L [2x+1,2y+1]+4)>>3

Прореженный отсчет яркости Rec'L[x, у] может использоваться для предсказания отсчета цветности с использованием режима кросс-компонентной линейной модели.The decimated luma sample Rec' L [x, y] can be used to predict the chrominance sample using the cross-component linear model mode.

[0163] 9. Единица данных виртуального конвейера (VPDU)[0163] 9. Virtual Pipeline Data Unit (VPDU)

[0164] Единицы данных виртуального конвейера (VPDU) можно определить как неперекрывающиеся единицы яркости (L) М×М / цветности (С) N×N в изображении. В некоторых аппаратных реализациях декодера, последовательные VPDU обрабатываются одновременно множеством ступеней конвейера. Разные ступени одновременно обрабатывают разные VPDU. Размер VPDU может быть примерно пропорционален размеру буфера на ступенях конвейера, благодаря чему желательно поддерживать размер VPDU на определенном уровне (например, 64×64 или менее). В некоторых декодерах размер VPDU задается равным максимальному размеру единицы преобразования (TU). Увеличение максимального размера TU от 32×32-L/16xl6-C в HEVC до 64×64-L/32×32-C в современном VVC может дать выигрыш в кодировании, что ожидаемо приводит к 4-кратному увеличению размера VPDU по сравнению с HEVC. Однако структуры ВТ и ТТ, которые применяются в VVC для достижения дополнительных выигрышей в кодировании, можно рекурсивно применять к блокам дерева кодирования 128×128-L/64×64-C, что приводит к 16-кратному увеличению размера VPDU (128×128-L/64×64-C) по сравнению с HEVC.[0164] Virtual Pipeline Data Units (VPDUs) can be defined as non-overlapping units of luma (L) MxM / chrominance (C) NxN in an image. In some decoder hardware implementations, successive VPDUs are processed simultaneously by multiple pipeline stages. Different stages simultaneously process different VPDUs. The size of the VPDU may be approximately proportional to the size of the buffer in the stages of the pipeline, so it is desirable to keep the size of the VPDU at a certain level (eg, 64x64 or less). In some decoders, the VPDU size is set to the maximum Transform Unit (TU) size. Increasing the maximum TU size from 32x32-L/16xl6-C in HEVC to 64x64-L/32x32-C in modern VVC can result in a coding gain, which is expected to result in a 4x increase in VPDU size compared to HEVC. However, the BT and TT structures that VVC uses to achieve additional coding gains can be recursively applied to 128x128-L/64x64-C coding tree blocks, resulting in a 16-fold increase in VPDU size (128x128- L/64×64-C) compared to HEVC.

[0165] На фиг. 23 показаны некоторые запрещенные разбиения ТТ и ВТ.[0165] FIG. 23 shows some forbidden partitions of TT and BT.

[0166] Для поддержания размера VPDU равным 64×64 отсчета яркости, в некоторых вариантах осуществления применяются некоторые ограничения разбиения (с модификацией сигнализации синтаксиса):[0166] In order to maintain a VPDU size of 64x64 luma samples, in some embodiments, some partitioning constraints apply (with syntax signaling modification):

- разделение ТТ не разрешено для CU, когда ширина или высота, или и ширина, и высота равны 128.- TT split is not allowed for CU when width or height or both width and height are 128.

- для CU 128×N с N≤64 (т.е. когда ширина равна 128, и высота меньше 128), горизонтальное разделение ВТ не разрешено.- for CU 128×N with N≤64 (i.e. when the width is 128 and the height is less than 128), the horizontal division of the BT is not allowed.

- для CU N×128 с N≤64 (т.е. когда высота равна 128, и ширина меньше 128), вертикальное разделение ВТ не разрешено.- for N×128 CUs with N≤64 (i.e. when the height is 128 and the width is less than 128), vertical separation of the BT is not allowed.

[0167] III. Методы разбиения и обработки блока преобразования[0167] III. Transform block splitting and processing methods

[0168] В некоторых вариантах осуществления используется фиксированный максимально допустимый размер единицы преобразования (TU) или максимальный размер TU (например, 64×64 пикселя или отсчета). В некоторых вариантах осуществления применяются регулируемые или настраиваемые максимальные размеры TU, поскольку максимальный размер TU может оказывать влияние на сложность оборудования, например, для реализации кодера (например, размер промежуточного буфера конвейера, количество умножителей и пр.). Например, помимо размера 64×64 отсчета, максимальный размер TU может принимать другие значения, например, 32×32 отсчета, 16×16 отсчетов и т.п.[0168] In some embodiments, a fixed maximum allowable transform unit (TU) size or maximum TU size (eg, 64x64 pixels or samples) is used. In some embodiments, adjustable or configurable maximum TU sizes are used, since the maximum TU size may affect the complexity of the hardware, for example, for encoder implementation (eg, pipeline intermediate buffer size, number of multipliers, etc.). For example, in addition to the size of 64x64 samples, the maximum TU size can take on other values, such as 32x32 samples, 16x16 samples, and the like.

[0169] В некоторых стандартах видео может использоваться SBT и ISP. Например, в SBT, флаг SPS, например, sps_sbt_max_size_64_flag, сигнализируется для указания, является ли наибольший размер SBT длиной 32 или длиной 64. Когда sps_sbt_max_size_64_flag равен TRUE (т.е. наибольший размер SBT является длиной 64), и максимальный размер TU составляет 32 точки, может инициироваться отказ кодера. В целом, размер "длина L" или "L точек" означает максимальный размер CU, TU, СВ, ТВ, VPDU и т.п.Например, когда максимальный размер TU составляет 32 точки или длину 32, ширина и высота TU меньше или равны 32.[0169] In some video standards, SBT and ISP may be used. For example, in SBT, an SPS flag, such as sps_sbt_max_size_64_flag, is signaled to indicate whether the largest SBT size is length 32 or length 64. When sps_sbt_max_size_64_flag is TRUE (i.e., the largest SBT size is length 64), and the maximum TU size is 32 point, encoder failure may be triggered. In general, the size "length L" or "L dots" means the maximum size of CU, TU, CB, TB, VPDU, etc. For example, when the maximum size of a TU is 32 dots or the length is 32, the width and height of the TU are less than or equal to 32.

[0170] В некоторых вариантах осуществления, режим ISP разрешен для различных размеров CU, однако когда максимальный размер TU задается меньшим 64, может возникать конфликт, осуществляется ли разделение с неявным преобразованием или осуществляется разделение с явным преобразованием с использованием ISP с сигнализацией. Например, когда максимальный размер TU равен 16, для CU 64×16, без ISP, CU может неявно делиться на четыре TU 16×16. С ISP, CU 64x16 может делиться с вертикальным ISP и, таким образом, может делиться на четыре TU 16×16, но с использованием сигнализации.[0170] In some embodiments, the ISP mode is enabled for various CU sizes, however, when the maximum TU size is set to less than 64, there may be a conflict as to whether splitting with implicit translation or splitting explicitly using ISP with signaling. For example, when the maximum TU size is 16, for a 64x16 CU without an ISP, the CU may be implicitly divided into four 16x16 TUs. With an ISP, a 64x16 CU can share with a vertical ISP and thus can be divided into four 16x16 TUs, but using signaling.

[0171] Когда максимальный размер TU меньше 64×64, порядок обработки TU требуется координировать с реализацией VPDU.[0171] When the maximum TU size is less than 64x64, the processing order of the TU needs to be coordinated with the VPDU implementation.

[0172] Описанные здесь варианты осуществления могут использоваться по отдельности или объединяться в любом порядке. Дополнительно, варианты осуществления могут быть реализованы схемой обработки (например, одним или более процессорами или одной или более интегральными схемами) в кодере, декодере и т.п. В одном примере, один или более процессоров выполняют программу, которая хранится на компьютерно-считываемом носителе.[0172] The embodiments described herein may be used individually or combined in any order. Additionally, embodiments may be implemented by processing circuitry (eg, one or more processors or one or more integrated circuits) in an encoder, decoder, or the like. In one example, one or more processors execute a program that is stored on a computer-readable medium.

[0173] В описании изобретения, элемент высокоуровневого синтаксис (HLS, high-level syntax) может означать набор параметров видео (VPS, Video Parameter Set), набор параметров последовательности (SPS, Sequence Parameter Set), набор параметров изображения (PPS, Picture Parameter Set), заголовок слайса, заголовок тайла, заголовок группы тайлов и т.п. Заголовок CTU может относиться к синтаксическому(им) элементу(ам), сигнализируемому(ым) для CTU, например, в качестве информации заголовка. В примере, размер CTU является максимальным размером CU.[0173] In the description of the invention, the high-level syntax element (HLS, high-level syntax) can mean a video parameter set (VPS, Video Parameter Set), a sequence parameter set (SPS, Sequence Parameter Set), a picture parameter set (PPS, Picture Parameter Set), slice header, tile header, tile group header, etc. The CTU header may refer to the syntax element(s) signaled to the CTU, for example, as header information. In the example, the CTU size is the maximum CU size.

[0174] В целом, когда размер яркости (представленный отсчетами яркости) определенной единицы (например, TU, CU), известен, можно получить соответствующий размер цветности, который задается количеством отсчетов цветности. В примере, используется YUV-формат 4:2:0, и CU имеет размер CU 64×64 отсчетов яркости (или 64×64-L). Соответственно, CU имеет размер CU 32×32 отсчета цветности (или 32×32-С). Размер CU может обозначаться 64×64-L, 32×32-С или 64×64-L/32×32-C. Аналогично, TU имеет размер TU 64×64 отсчета яркости (или 64×64-L). Соответственно, TU имеет размер TU 32×32 отсчета цветности (или 32×32-С). Размер TU может обозначаться 64×64-L, 32×32-С или 64×64-L/32×32-C. Например, TU включает в себя блок преобразования яркости (ТВ) и два ТВ цветности. ТВ яркости имеет размер 64×64-L, и каждый из ТВ цветности имеет размер 32×32-С. В целом, варианты осуществления и способы, описанные для CU или TU, могут быть надлежащим образом адаптированы к СВ и ТВ, соответственно.[0174] In general, when the luminance size (represented by luminance samples) of a particular unit (eg, TU, CU) is known, a corresponding chrominance size can be obtained, which is given by the number of chrominance samples. In the example, the YUV format is 4:2:0 and the CU has a CU size of 64x64 luma samples (or 64x64-L). Accordingly, the CU has a CU size of 32×32 chroma samples (or 32×32-C). The CU size may be referred to as 64x64-L, 32x32-C, or 64x64-L/32x32-C. Similarly, a TU has a TU size of 64x64 luminance samples (or 64x64-L). Accordingly, the TU has a TU size of 32x32 chroma samples (or 32x32-C). The TU size may be referred to as 64x64-L, 32x32-C, or 64x64-L/32x32-C. For example, a TU includes a luma conversion (TB) unit and two chrominance TVs. The luminance TV has a size of 64x64-L, and each of the chrominance TVs has a size of 32x32-C. In general, the embodiments and methods described for CU or TU can be appropriately adapted to CB and TV, respectively.

[0175] CU может включать в себя блок яркости 64×64-L и два блока цветности 32×32-С. В нижеследующем описании размер TU представлен с использованием отсчетов яркости в TU. Например, максимальный размер TU М отсчетов означает максимальный размер TU М отсчетов яркости. Аналогично, другие размеры, например, размер VPDU и размер CU, также представлены с использованием соответствующих отсчетов яркости в соответствующих единицах, например, VPDU и CU, соответственно. Конечно, размер TU, размер VPDU, размер CU и т.п. можно представить с использованием отсчетов цветности или комбинации отсчетов яркости и цветности.[0175] The CU may include a 64x64-L luma block and two 32x32-C chrominance blocks. In the following description, the size of a TU is represented using the luminance samples in the TU. For example, the maximum size TU M samples means the maximum size TU M luma samples. Likewise, other sizes, such as VPDU size and CU size, are also represented using the respective luminance samples in appropriate units, such as VPDU and CU, respectively. Of course, TU size, VPDU size, CU size, etc. can be represented using chrominance samples or a combination of luma and chrominance samples.

[0176] Размер блока может относиться к ширине, высоте или площади блока. Например, максимальный размер TU может относиться к ширине, высоте или площади максимальной TU. В целом, TU, CU, VPDU и т.п. может иметь любую подходящую форму, включая прямоугольную форму, квадратную форму, L-обратную форму или любую подходящую форму. В случае неправильной формы блока, например, L-образной формы, размер блока может указывать площадь блока.[0176] The block size may refer to the width, height, or area of the block. For example, the maximum TU size may refer to the width, height, or area of the maximum TU. In general, TU, CU, VPDU, etc. may be any suitable shape, including rectangular, square, L-shaped, or any suitable shape. In the case of an irregularly shaped block, such as an L-shape, the block size may indicate the area of the block.

[0177] В некоторых вариантах осуществления, размер VPDU и/или максимальный размер TU могут сигнализироваться в битовом потоке кодированного видео, например, в SPS и PPS. Как описано выше, размер VPDU и/или максимальный размер TU могут сигнализироваться в отсчетах яркости. Альтернативно, размер VPDU и/или максимальный размер TU могут сигнализироваться в отсчетах цветности.[0177] In some embodiments, the VPDU size and/or the maximum TU size may be signaled in the coded video bitstream, such as in SPS and PPS. As described above, the VPDU size and/or maximum TU size may be signaled in luma samples. Alternatively, the VPDU size and/or the maximum TU size may be signaled in the chrominance samples.

[0178] В некоторых вариантах осуществления, размер VPDU и/или максимальный размер TU может храниться на кодере и/или декодере, таким образом, размер VPDU и/или максимальный размер TU не сигнализируются. В одном примере, размер VPDU и/или максимальный размер TU могут храниться в определениях профиля и/или уровня. Размер VPDU и/или максимальный размер TU могут храниться в виде отсчетов яркости или цветности.[0178] In some embodiments, the VPDU size and/or maximum TU size may be stored at the encoder and/or decoder, so the VPDU size and/or maximum TU size is not signaled. In one example, the VPDU size and/or the maximum TU size may be stored in the profile and/or layer definitions. The VPDU size and/or maximum TU size may be stored as luminance or chrominance samples.

[0179] В некоторых вариантах осуществления, VPDU совместно используют одинаковый размер, но могут иметь разные формы. Например, когда размер VPDU равен 4096 отсчетов яркости, VPDU может иметь форму квадрата 64×64 или форму прямоугольника 32×128. VPDU также может иметь другие формы, например, L-образную форму, при условии, что размер VPDU равен 4096 отсчетов яркости. Вышеприведенное описание также применимо к определенным TU.[0179] In some embodiments, VPDUs share the same size but may have different shapes. For example, when the size of the VPDU is 4096 luminance samples, the VPDU may be in the shape of a 64x64 square or a 32x128 rectangle. The VPDU may also have other shapes, such as L-shape, as long as the size of the VPDU is 4096 luminance samples. The above description also applies to certain TUs.

[0180] 1. Пример А[0180] 1. Example A

[0181] Согласно аспектам изобретения, максимально допустимый размер TU (также именуемый максимальным размером TU) составляет М отсчетов (например, размер М×М отсчетов). В примере, максимальная ширина и максимальная высота TU равна М. В примере, максимальная площадь TU равна М×М. Размер единицы данных обработки (например, размер VPDU) составляет K отсчетов (например, K×K отсчетов). В примере, максимальная ширина и максимальная высота единицы данных обработки равна K. В примере, максимальная площадь единицы данных обработки равна K×K. CU размерами W×H имеет ширину W отсчетов и высоту Н отсчетов. CU можно разбить на множественные суб-единицы, именуемые суб-единицами обработки (SPU), на основании размера CU и размера K единицы данных обработки. CU можно разбить на SPU с использованием любой подходящий структуры разбиения или комбинации любых подходящих структур разбиения, например, QTBT, QT, ВТ, ТТ или их комбинации. SPU могут иметь одинаковый размер или разные размеры.[0181] According to aspects of the invention, the maximum allowable TU size (also referred to as the maximum TU size) is M samples (eg, MxM sample size). In the example, the maximum width and maximum height of the TU is M. In the example, the maximum area of the TU is M×M. The processing data unit size (eg, VPDU size) is K samples (eg, K×K samples). In the example, the maximum width and maximum height of the processing data unit is K. In the example, the maximum area of the processing data unit is K×K. A W×H CU has a width of W samples and a height of H samples. A CU may be partitioned into multiple sub-units, referred to as sub-processing units (SPUs), based on the size of the CU and the size K of the processing data unit. The CU may be partitioned into SPUs using any suitable partitioning structure, or a combination of any suitable partitioning structures, such as QTBT, QT, BT, TT, or combinations thereof. SPUs can be the same size or different sizes.

[0182] Согласно варианту осуществления, CU разбивается на SPU, когда ширина W или высота Н больше K. В примере, SPU имеют одинаковый размер (т.е. размер SPU), и каждая SPU имеет размер Min(W, K) × Min(H, K) отсчетов. Таким образом, ширина каждой SPU составляет минимум из W и K, и высота SPU составляет минимум из Н и K. В некоторых примерах, до разбиения CU может определяться, осуществлять ли разбиение CU, на основании размера CU и размера K единицы данных обработки.[0182] According to an embodiment, a CU is partitioned into SPUs when the width W or the height H is greater than K. In the example, the SPUs are the same size (i.e., SPU size), and each SPU has a size of Min(W, K) × Min (H, K) samples. Thus, the width of each SPU is the minimum of W and K, and the height of the SPU is the minimum of H and K. In some examples, prior to splitting the CU, it may be determined whether to split the CU based on the size of the CU and the size of K of the processing data unit.

[0183] SPU в CU можно дополнительно разбивать на TU размером, например, М×М отсчетов. В некоторых примерах, SPU можно разбить на TU размером Min(W, K, М) × Min(H, K, М). В некоторых примерах, до разбиения SPU может определяться, осуществлять ли разбиение SPU, на основании размера SPU и максимального размера TU М. SPU можно разбивать с использованием любой подходящий структуры разбиения или комбинации любых подходящих структур разбиения, например, QTBT, QT, ВТ, ТТ или их комбинации. Согласно аспектам изобретения, одна или более структур разбиения для разбиения SPU может определяться на основании размера SPU и максимального размера TU М. В примере, SPU можно рекурсивно делить на TU с использованием определенных одной или более структур разбиения.[0183] SPUs in a CU can be further divided into TUs of size, for example, M×M samples. In some examples, the SPU may be partitioned into TUs of size Min(W, K, M) × Min(H, K, M). In some examples, prior to splitting the SPU, it may be determined whether to split the SPU based on the size of the SPU and the maximum TU size M. The SPU may be split using any suitable split structure or combination of any suitable split structures, e.g., QTBT, QT, BT, TT or their combinations. According to aspects of the invention, one or more partition structures for partitioning an SPU may be determined based on the size of the SPU and the maximum TU size M. In an example, the SPU may be recursively divided into TUs using the defined one or more partition structures.

[0184] В примере, когда ширина и высота SPU больше, чем максимальный размер TU М, SPU делится на TU размером МхМ с использованием структуры разбиения в виде квадрадерева. SPU можно рекурсивно делить на TU с использованием структуры разбиения в виде квадрадерева.[0184] In an example, when the width and height of the SPU is larger than the maximum TU size M, the SPU is divided into TUs of size MxM using a quadtree partitioning structure. SPUs can be recursively divided into TUs using a quadtree partitioning structure.

[0185] В примере, когда ширина SPU больше М, и высота SPU равна М, SPU делится на TU размером М×М с использованием структуры вертикального разбиения в виде двоичного дерева. Например, М равно 32, и SPU имеет размер 64×32. Таким образом, ширина SPU равна 64 и высота SPU равна 32. Соответственно, структура вертикального разбиения в виде двоичного дерева может использоваться для разделения SPU на две TU 32×32. SPU можно рекурсивно делить на TU с использованием структуры вертикального разбиения в виде двоичного дерева.[0185] In an example where the width of the SPU is greater than M and the height of the SPU is M, the SPU is divided into M×M TUs using a binary tree vertical partition structure. For example, M is 32 and the SPU has a size of 64x32. Thus, the width of the SPU is 64 and the height of the SPU is 32. Accordingly, a binary tree vertical partition structure can be used to partition the SPU into two 32x32 TUs. SPUs can be recursively divided into TUs using a vertical partitioning structure in the form of a binary tree.

[0186] В примере, когда ширина SPU больше М, и высота SPU меньше М, SPU может делиться на TU с использованием структуры вертикального разбиения в виде двоичного дерева, где ширина TU равна М, и высота TU равна высоте SPU.[0186] In an example where the SPU width is greater than M and the SPU height is less than M, the SPU may be divided into TUs using a binary tree vertical partitioning structure where the TU width is M and the TU height is equal to the SPU height.

[0187] В примере, когда высота SPU больше М, и ширина SPU равна М, SPU делится на TU размером М×М с использованием структуры горизонтального разбиения в виде двоичного дерева. SPU можно рекурсивно делить на TU с использованием структуры горизонтального разбиения в виде двоичного дерева. Например, М равно 32, и SPU имеет размер 32×64. Таким образом, ширина SPU равна 32 и высота SPU равна 64. Соответственно, структура горизонтального разбиения в виде двоичного дерева может использоваться для разделения SPU на две TU 32×32.[0187] In an example where the height of the SPU is greater than M and the width of the SPU is M, the SPU is divided into M×M TUs using a horizontal binary tree partition structure. SPUs can be recursively divided into TUs using a horizontal binary tree partitioning structure. For example, M is 32 and the SPU is 32×64. Thus, the width of the SPU is 32 and the height of the SPU is 64. Accordingly, a horizontal binary tree partition structure can be used to partition the SPU into two 32x32 TUs.

[0188] Когда высота SPU больше М, и ширина SPU меньше М, SPU может делиться на TU с использованием структуры горизонтального разбиения в виде двоичного дерева, где высота TU равна М, и ширина TU равна ширине SPU.[0188] When the height of the SPU is greater than M and the width of the SPU is less than M, the SPU may be divided into TUs using a horizontal binary tree partitioning structure, where the height of the TU is equal to M and the width of the TU is equal to the width of the SPU.

[0189] Синтаксис дерева преобразования на фиг. 24 демонстрирует пример разделения SPU, и порядок обработки, используемый для обработки TU.[0189] The syntax of the transformation tree in FIG. 24 shows an example of splitting the SPU, and the processing order used to process the TU.

[0190] В примере, CU размером W×H можно разбивать в два этапа. На первом этапе, CU разбивается на SPU, где каждая SPU имеет размер Min(W, K) × Min(H, K). Затем, на втором этапе, каждая SPU дополнительно разбивается на TU, где каждая TU имеет размер М×М.[0190] In the example, a W×H CU can be split in two steps. In the first step, the CU is partitioned into SPUs, where each SPU has the size Min(W, K) × Min(H, K). Then, in a second step, each SPU is further partitioned into TUs, where each TU has a size of MxM.

[0191] При обработке TU в CU, SPU в CU могут сканироваться и обрабатываться в первом порядке сканирования (также именуемом первым порядком). Дополнительно, в каждой из SPU, TU могут сканироваться и обрабатываться во втором порядке (также именуемом вторым порядком).[0191] When processing TUs in a CU, SPUs in a CU may be scanned and processed in a first scan order (also referred to as first order). Additionally, in each of the SPUs, TUs may be scanned and processed in second order (also referred to as second order).

[0192] В различных вариантах осуществления, первый порядок для обработки SPU может быть растровым порядком сканирования, вертикальным порядком сканирования (например, сканирует SPU по столбцам слева направо или наоборот), зигзагообразным порядком, диагональным порядком сканирования и т.п.[0192] In various embodiments, the first order for processing the SPU may be a raster scan order, a vertical scan order (eg, scans the SPU in columns from left to right or vice versa), a zigzag order, a diagonal scan order, and the like.

[0193] В различных вариантах осуществления, второй порядок для обработки TU в каждой SPU может быть растровым порядком сканирования, вертикальным порядком сканирования (например, сканирует TU по столбцам слева направо или наоборот), зигзагообразным порядком, диагональным порядком сканирования и т.п.[0193] In various embodiments, the second order for processing the TUs in each SPU may be raster scan order, vertical scan order (e.g., scans the TU in columns from left to right or vice versa), zigzag order, diagonal scan order, and the like.

[0194] Первый порядок и второй порядок могут быть одинаковыми или разными в разных вариантах осуществления. Например, первый порядок для обработки SPU и второй порядок для обработки ТВ в каждой из SPU являются растровым порядком сканирования согласно варианту осуществления.[0194] The first order and the second order may be the same or different in different embodiments. For example, the first order for SPU processing and the second order for TV processing in each of the SPUs are the raster scan order according to the embodiment.

[0195] 2. Пример В[0195] 2. Example B

[0196] На фиг. 25 показана CU (2510) размером WxH отсчетов, где W=128, и Н=64. Максимальный размер TU М равен 32 отсчетам. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Сначала CU (2510) делят на первую SPU 64×64 (2520) и вторую SPU 64×64 (2530). Затем первая SPU (2520) и вторая SPU (2530) могут дополнительно разбиваться HaTU 0-7, каждая из которых имеет размер М×М отсчетов. TU 0-3 включены в первую SPU (2520), и TU 4-7 включены во вторую SPU (2530).[0196] FIG. 25 shows a CU (2510) with sample size WxH where W=128 and H=64. The maximum TU M size is 32 samples. The processing data unit size K, eg the VPDU size, is 64 samples. First, CU (2510) is divided into a first SPU 64×64 (2520) and a second SPU 64×64 (2530). Then, the first SPU (2520) and the second SPU (2530) may be further partitioned by HaTU 0-7, each having a size of MxM samples. TUs 0-3 are included in the first SPU (2520) and TUs 4-7 are included in the second SPU (2530).

[0197] Согласно первому порядку, сначала первая SPU (2520) может обрабатываться, а затем вторая SPU (2530). В первой SPU (2520) или второй SPU (2530), второй порядок, используемый для обработки TU 0-3 или 4-7, является растровым порядком сканирования. Соответственно, TU 0-7 обрабатываются в порядке, указанном стрелкой (2551). Первый порядок и/или второй порядок может определяться явно (например, посредством сигнализации с кодера в декодер) или неявно.[0197] According to the first order, first the first SPU (2520) can be processed, and then the second SPU (2530). In the first SPU (2520) or the second SPU (2530), the second order used to process TUs 0-3 or 4-7 is the raster scan order. Accordingly, TUs 0-7 are processed in the order indicated by the arrow (2551). The first order and/or the second order may be specified explicitly (eg, via encoder-to-decoder signaling) or implicitly.

[0198] В некоторых примерах, разбиение CU на SPU, где каждая из SPU дополнительно включает в себя TU, как описано выше, повышает эффективность кодирования. Согласно фиг. 25, в примере, первой SPU (2520) является первая VPDU, и второй SPU (2530) является вторая VPDU. Каждая из первой VPDU (или первой SPU (2520)) и второй VPDU (или второй SPU (2530)) может последовательно проходить через многоступенчатый конвейер, включающий в себя первую ступень (например, энтропийного декодирования), вторую ступень (например, деквантования), третью ступень (например, обратного преобразования) и т.п. Согласно первому порядку, показанному на фиг. 25, первую SPU (2520) следует обрабатывать до второй SPU (2530), таким образом, первая SPU (2520) обрабатывается на первой ступени и затем поступает на вторую ступень. В примере, когда первая SPU (2520) обрабатывается на второй ступени, вторая SPU (2530) обрабатывается на первой ступени для повышения эффективности кодирования. Затем первая SPU (2520) поступает на третью ступень, и вторая SPU (2530) может поступать на вторую ступень. Когда первая SPU (2520) обрабатывается на третьей ступени, вторая SPU (2530) может обрабатываться на второй ступени. Вышеприведенное описание базируется на использовании VPDU и многоступенчатого конвейера в порядке примера и может быть надлежащим образом адаптировано к другим архитектурам или способам видеокодирования. Вышеприведенное описание можно адаптировать к случаю, когда первая SPU (2520) включена в первую VPDU, и вторая SPU (2530) включена во вторую VPDU. По меньшей мере часть обработки SPU на разных ступенях осуществляется одновременно.[0198] In some examples, partitioning a CU into SPUs, where each of the SPUs further includes a TU, as described above, improves coding efficiency. According to FIG. 25, in the example, the first SPU (2520) is the first VPDU and the second SPU (2530) is the second VPDU. Each of the first VPDU (or first SPU (2520)) and the second VPDU (or second SPU (2530)) may sequentially pass through a multi-stage pipeline, including a first stage (eg, entropy decoding), a second stage (eg, dequantization), the third stage (for example, inverse transformation), etc. According to the first order shown in FIG. 25, the first SPU (2520) should be processed before the second SPU (2530), so the first SPU (2520) is processed in the first stage and then enters the second stage. In an example, when the first SPU (2520) is processed in the second stage, the second SPU (2530) is processed in the first stage to improve coding efficiency. The first SPU (2520) then enters the third stage and the second SPU (2530) may enter the second stage. When the first SPU (2520) is processed in the third stage, the second SPU (2530) may be processed in the second stage. The above description is based on the use of VPDU and multi-stage pipeline by way of example, and may be appropriately adapted to other video coding architectures or methods. The above description can be adapted to the case where the first SPU (2520) is included in the first VPDU and the second SPU (2530) is included in the second VPDU. At least part of the SPU processing in the different stages is performed simultaneously.

[0199] Как описано выше, когда размер SPU больше размера TU, множество TU в CU можно группировать в единицу обработки данных, например, SPU (или VPDU), где SPU могут обрабатываться на многоступенчатом конвейере, который позволяет параллельно обрабатывать (или одновременно обрабатывать) последовательные SPU. В некоторых примерах, описание можно модифицировать следующим образом: CU разбивается на первые единицы. Дополнительно, каждую из первых единиц можно разбить на вторые единицы. Каждая из вторых единиц может делиться на третьи единицы. В примере, размер первых единиц больше размера вторых единиц, и размер вторых единиц больше размера третьих единиц. Такое разбиение может быть полезно, когда первый многоступенчатый конвейер вложен во второй многоступенчатый конвейер.[0199] As described above, when the size of an SPU is larger than the size of a TU, a plurality of TUs in a CU may be grouped into a processing unit, such as an SPU (or VPDU), where the SPUs may be processed in a multi-stage pipeline that allows parallel processing (or simultaneous processing) serial SPUs. In some examples, the description can be modified as follows: CU is broken down into first units. Additionally, each of the first units can be broken down into second units. Each of the second units can be divided into third units. In the example, the size of the first units is larger than the size of the second units, and the size of the second units is larger than the size of the third units. Such a partition can be useful when the first multistage pipeline is nested within the second multistage pipeline.

[0200] 3. Пример С[0200] 3. Example C

[0201] На фиг. 26А показана CU (2610А) размером W×H отсчетов, где W=128, и Н=32. Максимальный размер TU М составляет 16 отсчетов. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Минимум из W и K равен 64, тогда как минимум из Н и K равен 32. Таким образом, размер SPU может определяться равным 64×32 отсчета, например, для выравнивания блоков преобразования с VPDU. CU (2610A) можно разбить на левую SPU (2620А) и правую SPU (2630А), каждая из которых имеет размер 64×32 отсчета. Две SPU (2620А) и (2630А) могут сканироваться и обрабатываться в порядке слева направо.[0201] In FIG. 26A shows a CU (2610A) with WxH samples where W=128 and H=32. The maximum size of TU M is 16 samples. The processing data unit size K, eg the VPDU size, is 64 samples. The minimum of W and K is 64, while the minimum of H and K is 32. Thus, the SPU size may be determined to be 64x32 samples, for example, to align transform units with VPDUs. CU (2610A) can be divided into left SPU (2620A) and right SPU (2630A), each of which has a size of 64×32 samples. The two SPUs (2620A) and (2630A) can be scanned and processed in order from left to right.

[0202] Каждая из двух SPU (2620А) и (2630А) может дополнительно делиться на TU, каждая из которых имеет максимальный размер TU, 16×16 отсчетов. Как показано, левая SPU (2620А) разбивается на TU 0-7, тогда как правая SPU (2630А) разбивается на TU 8-15. В SPU (2620А), TU 0-7 могут обрабатываться в растровом порядке сканирования. В SPU (2630А), TU 8-15 могут обрабатываться в растровом порядке сканирования. Соответственно, TU 0-15 могут сканироваться и обрабатываться в порядке, указанном стрелками (2651А), где сначала обрабатывается TU 0, и TU 15 обрабатывается после обработки TU 0-14.[0202] Each of the two SPUs (2620A) and (2630A) may be further divided into TUs, each having a maximum TU size of 16×16 samples. As shown, the left SPU (2620A) is split into TUs 0-7 while the right SPU (2630A) is split into TUs 8-15. In the SPU (2620A), TUs 0-7 can be processed in raster scan order. In the SPU (2630A), TUs 8-15 can be processed in raster scan order. Accordingly, TU 0-15 may be scanned and processed in the order indicated by the arrows (2651A), where TU 0 is processed first and TU 15 is processed after TU 0-14 is processed.

[0203] 4. Пример D[0203] 4. Example D

[0204] На фиг. 26В показана CU (2610В) размером W×H отсчетов, где W=128, и Н=32. Максимальный размер TU М составляет 16 отсчетов. Размер K единицы данных обработки, например, размер VPDU, составляет 64 отсчета. Аналогично примеру, приведенному на фиг. 25, CU (2610В) можно разбить на две SPU (2620В) и (2630В), каждая из которых может дополнительно разбиваться на TU. SPU (2620В) и (2630В) могут обрабатываться слева направо в том же порядке, что и на фиг. 25. Однако, в отличие от примера, приведенного на фиг. 25, TU 0-7 в SPU (2620В) обрабатываются в зигзагообразном порядке сканирования, и TU 8-15 в SPU (2630В) обрабатываются в зигзагообразном порядке сканирования.[0204] In FIG. 26B shows a CU (2610V) of WxH samples where W=128 and H=32. The maximum size of TU M is 16 samples. The processing data unit size K, eg the VPDU size, is 64 samples. Similar to the example shown in FIG. 25, CU (2610V) can be split into two SPUs (2620V) and (2630V), each of which can be further split into TUs. SPUs (2620B) and (2630B) can be processed from left to right in the same order as in FIG. 25. However, unlike the example shown in FIG. 25, TUs 0-7 in SPU (2620V) are processed in zigzag scan order, and TUs 8-15 in SPU (2630V) are processed in zigzag scan order.

[0205] 5. Пример Е[0205] 5. Example E

[0206] На фиг. 27 показана блок-схема операций, где представлен процесс (2700) разбиения и обработки блок преобразования согласно варианту осуществления изобретения. Процесс (2700) может использоваться при реконструкции блока, кодированного в интра-режиме или интер-режиме. В различных вариантах осуществления, процесс (2700) выполняются схемой обработки, например, схемой обработки на оконечных устройствах (210), (220), (230) и (240), схемой обработки, которая осуществляет функции видеокодера (403), схемой обработки, которая осуществляет функции видеодекодера (310), схемой обработки, которая осуществляет функции видеодекодера (410), схемой обработки, которая осуществляет функции видеокодера (603), и пр. В некоторых вариантах осуществления, процесс (2700) осуществляется в программных инструкциях, таким образом, когда схема обработки выполняет программные инструкции, схема обработки осуществляет процесс (2700). Процесс начинается на этапе (S2701) и переходит к этапу (S2710).[0206] In FIG. 27 is a flowchart showing a process (2700) for splitting and processing a transform block according to an embodiment of the invention. Process (2700) may be used in reconstructing a block encoded in intra mode or inter mode. In various embodiments, the process (2700) is performed by a processing circuit, for example, a processing circuit at terminal devices (210), (220), (230), and (240), a processing circuit that performs the functions of a video encoder (403), a processing circuit, which performs the functions of a video decoder (310), a processing circuit that performs the functions of a video decoder (410), a processing circuit that performs the functions of a video encoder (603), etc. In some embodiments, the process (2700) is performed in program instructions, thus, when the processing circuit executes the program instructions, the processing circuit executes the process (2700). The process starts at step (S2701) and proceeds to step (S2710).

[0207] На этапе (S2710), кодированная информация CU в изображении может декодироваться из битового потока кодированного видео. Кодированная информация может указывать ширину W отсчетов и высоту Н отсчетов CU.[0207] In step (S2710), the encoded CU information in the image may be decoded from the encoded video bitstream. The encoded information may indicate the width W of the samples and the height H of the CU samples.

[0208] На этапе (S2720), CU может разбиваться на SPU, например, когда по меньшей мере одна из ширины W и высоты Н CU больше размера K единицы данных обработки, например, как описано со ссылкой на фиг. 24-26. На основании размера K единицы данных обработки и размера CU, может определяться размер SPU. Ширина SPU может быть наименьшей из W и K, и высота SPU может быть наименьшей из Н и K. Соответственно, CU может разбиваться на SPU, каждая из которых имеет определенные ширину и высоту. Например, когда W равно 128, Н равно 64, и K равно 64, CU может делиться на первую SPU 64×64 и вторую SPU 64×64. Например, единицей обработки данных может быть VPDU, и, таким образом K может быть размером VPDU.[0208] In step (S2720), the CU may be partitioned into SPUs, for example, when at least one of the width W and the height H of the CU is larger than the size K of the processing data unit, for example, as described with reference to FIG. 24-26. Based on the size K of the processing data unit and the size of the CU, the size of the SPU can be determined. The width of the SPU may be the smallest of W and K, and the height of the SPU may be the smallest of H and K. Accordingly, the CU may be partitioned into SPUs, each of which has a certain width and height. For example, when W is 128, H is 64, and K is 64, the CU may be divided into a 64x64 first SPU and a 64x64 second SPU. For example, the processing unit may be a VPDU, and thus K may be the size of the VPDU.

[0209] На этапе (S2730), одна или более структур разбиения для разбиения каждой из SPU может определяться, например, на основании одного или комбинации ширины и высоты SPU и максимального размера TU, составляющего М отсчетов. В примере, по меньшей мере одна из ширины и высоты SPU больше М.[0209] In step (S2730), one or more partition structures for partitioning each of the SPUs may be determined, for example, based on one or a combination of the width and height of the SPU and the maximum TU size of M samples. In the example, at least one of the width and height of the SPU is greater than M.

[0210] Как описано выше, любая подходящая структура разбиения может использоваться для разбиения или разделения каждой из SPU. В примере, когда ширина и высота SPU больше, чем М, одна или более структур разбиения определяется как структура разбиения в виде квадрадерева. В примере, когда ширина SPU больше М, и высота SPU не больше М, одна или более структур разбиения определяется как структура вертикального разбиения в виде двоичного дерева. В примере, когда высота SPU больше М, и ширина SPU не больше М, одна или более структур разбиения определяется как структура горизонтального разбиения в виде двоичного дерева.[0210] As described above, any suitable partitioning structure may be used to partition or partition each of the SPUs. In an example, when the width and height of the SPU is greater than M, one or more partition structures are defined as a quadtree partition structure. In an example, when the width of the SPU is greater than M and the height of the SPU is not greater than M, one or more split structures are defined as a vertical split structure in the form of a binary tree. In an example where the height of the SPU is greater than M and the width of the SPU is not greater than M, one or more partition structures are defined as a horizontal binary tree partition structure.

[0211] На этапе (S2740), каждую из SPU можно разбить на TU на основании определенной одной или более структур разбиения. В примере, соответствующая SPU может рекурсивно разбиваться на TU с использованием определенных одной или более структур разбиения.[0211] In step (S2740), each of the SPUs may be partitioned into TUs based on the determined one or more partition structures. In the example, the corresponding SPU may be recursively partitioned into TUs using one or more partition structures defined.

[0212] На этапе (S2750), TU, полученные разбиением SPU, обрабатываются согласно порядку обработки. Например, SPU могут обрабатываться согласно первому порядку, и TU в каждой из SPU могут обрабатываться согласно второму порядку, как описано выше. Остаточные данные каждой TU может определяться различными операциями декодирования (например, энтропийным декодированием коэффициентов преобразования, обратным квантованием или деквантованием, обратным преобразованием и т.п.). Процесс (2700) может переходить к (S2799) и завершаться.[0212] In step (S2750), the TUs obtained by splitting the SPUs are processed according to the processing order. For example, the SPUs may be processed according to the first order, and the TUs in each of the SPUs may be processed according to the second order, as described above. The residual data of each TU may be determined by various decoding operations (eg, entropy decoding of transform coefficients, inverse quantization or dequantization, inverse transform, etc.). The process (2700) may proceed to (S2799) and end.

[0213] Процесс (2700) описан с использованием CU в порядке примера. Процесс (2700) может быть надлежащим образом адаптирован для СВ, например, блока яркости, блока цветности и т.п. В целях краткости, описание применительно к СВ опущено.[0213] The process (2700) is described using the CU by way of example. Process (2700) may be appropriately adapted for the CB, for example, a luma block, a chrominance block, and the like. For the sake of brevity, the description in relation to the CB is omitted.

[0214] Процесс (2700) может быть надлежащим образом адаптирован. Например, один или более этапов можно модифицировать, исключать или объединять. Например, этапы (S2730) и (S2740) могут объединяться в единый этап. Также можно добавлять дополнительный(е) этап(ы). Порядок выполнения процесса (2700) также можно модифицировать.[0214] The process (2700) can be appropriately adapted. For example, one or more of the steps may be modified, omitted, or combined. For example, steps (S2730) and (S2740) may be combined into a single step. Additional step(s) may also be added. The execution order of the process (2700) can also be modified.

[0215] IV. Компьютерная система[0215] IV. computer system

[0216] Вышеописанные методы могут быть реализованы в виде компьютерного программного обеспечения, использующего компьютерно-считываемые инструкции и физически хранящегося на одном или более компьютерно-считываемых носителях. Например, на фиг. 28 показана компьютерная система (2800), пригодная для реализации некоторых вариантов осуществления раскрытого изобретения.[0216] The above methods may be implemented in computer software using computer-readable instructions and physically stored on one or more computer-readable media. For example, in FIG. 28 shows a computer system (2800) suitable for implementing some embodiments of the disclosed invention.

[0217] Компьютерное программное обеспечение может кодироваться с использованием любого подходящего машинного кода или компьютерного языка, который может подвергаться ассемблированию, компиляции, редактированию связей или аналогичной обработке для создания кода, содержащего инструкции, которые могут выполняться напрямую, или посредством интерпретации, выполнения микрокода и т.п., одним или более компьютерными центральными процессорами (CPU, central processing unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.[0217] Computer software may be coded using any suitable machine code or computer language that may be assembled, compiled, linked, or similarly processed to create code containing instructions that can be executed directly, or through interpretation, execution of microcode, etc. .p., one or more computer central processing units (CPU, central processing unit), graphic processors (GPU, Graphics Processing Unit), etc.

[0218] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства интернета вещей и т.п.[0218] The instructions may be executed on various types of computers or components thereof, including, for example, personal computers, tablet computers, servers, smartphones, gaming devices, IoT devices, and the like.

[0219] Компоненты компьютерной системы (2800), показанные на фиг. 28, носят иллюстративный характер и не призваны налагать какое-либо ограничение на объем применения или функциональные возможности компьютерного программного обеспечения, реализующего варианты осуществления настоящего изобретения. Конфигурацию компонентов также не следует интерпретировать как имеющую какую-либо зависимость или требование в связи с любым одним или комбинацией компонентов, показанных в иллюстративном варианте осуществления компьютерной системы (2800).[0219] The computer system components (2800) shown in FIG. 28 are illustrative in nature and are not intended to impose any limitation on the scope of application or functionality of computer software implementing embodiments of the present invention. The configuration of the components should also not be interpreted as having any dependency or requirement in connection with any one or combination of the components shown in the illustrative embodiment of the computer system (2800).

[0220] Компьютерная система (2800) может включать в себя некоторые устройства ввода интерфейса с человеком. Такое устройство ввода может отвечать за ввод одним или более пользователями посредством, например, тактильного ввода (например, нажатий на клавиши, махов, движений информационной перчатки), аудио-ввода (например, голосового, хлопков), визуального ввода (например, жестов), обонятельного ввода (не показан). Устройства интерфейса также могут использоваться для захвата некоторых информационных носителей, не обязательно напрямую связанных с осознанным вводом человеком, например звука (например, речи, музыки, внешнего звука), изображений (например, отсканированных изображений, фотографических изображений, полученных от камеры неподвижных изображений), видео (например, двухмерного видео, трехмерного видео, включающего в себя стереоскопическое видео).[0220] The computer system (2800) may include some human interface input devices. Such an input device may be responsible for input by one or more users through, for example, tactile input (e.g., keystrokes, waving, glove movements), audio input (e.g., voice, claps), visual input (e.g., gestures), olfactory input (not shown). Interface devices may also be used to capture certain media not necessarily directly related to conscious human input, such as sound (e.g. speech, music, external sound), images (e.g. scanned images, photographic images received from a still camera), video (eg, 2D video, 3D video including stereoscopic video).

[0221] Устройства ввода интерфейса с человеком могут включать в себя один или более из (по одному из изображенных): клавиатуры (2801), мыши (2802), сенсорной панели (2803), сенсорного экрана (2810), информационной перчатки (не показана), джойстика (2805), микрофона (2806), сканера (2807), камеры (2808).[0221] Human interface input devices may include one or more of (one each depicted): keyboard (2801), mouse (2802), touch pad (2803), touch screen (2810), information glove (not shown). ), joystick (2805), microphone (2806), scanner (2807), camera (2808).

[0222] Компьютерная система (2800) также может включать в себя некоторые устройства вывода интерфейса с человеком. Такие устройства вывода могут стимулировать органы чувств одного или более пользователей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода могут включать в себя устройства тактильного вывода (например, тактильной обратной связи посредством сенсорного экрана (2810), информационной перчатки (не показана) или джойстика (2805), но также могут быть устройствами тактильной обратной связи, которые не служат устройствами ввода), устройства вывода аудио (например: громкоговорители (2809), наушники (не показаны)), устройства визуального вывода (например, экраны (2810), в том числе CRT-экраны, LCD-экраны, плазменные экраны, OLED-экраны, каждый с возможностями сенсорного экранного ввода или без них, каждый с возможностями тактильной обратной связи или без них, некоторые из которых способны к двухмерному визуальному выводу или более чем трехмерному выводу посредством, например, стереографического вывода; очков виртуальной реальности (не показаны), голографических дисплеев и дымовых баков (не показаны)) и принтеров (не показаны).[0222] The computer system (2800) may also include some human interface output devices. Such output devices may stimulate the senses of one or more users through, for example, tactile output, sound, light, and smell/taste. Such output devices may include tactile output devices (e.g., haptic feedback via touch screen (2810), data glove (not shown) or joystick (2805), but may also be tactile feedback devices that do not serve as input devices) , audio output devices (for example: speakers (2809), headphones (not shown)), visual output devices (for example, screens (2810), including CRT screens, LCD screens, plasma screens, OLED screens, each with touch screen input capabilities, each with or without tactile feedback capabilities, some of which are capable of 2D visual output or more than 3D output through, for example, stereographic output; virtual reality glasses (not shown), holographic displays, and smoke tanks (not shown)) and printers (not shown).

[0223] Компьютерная система (2800) также может включать в себя доступные человеку запоминающие устройства и связанные с ними носители, например, оптические носители, включающие в себя CD/DVD ROM/RW (2820) с носителями (2821) CD/DVD и т.п., карты (2822) флэш-памяти, сменный жесткий диск или твердотельный диск (2823), традиционные магнитные носители, например, ленту и флоппи-диск (не показан), специализированные устройства на основе ROM/ASIC/PLD, например, защитные аппаратные ключи (не показаны) и т.п.[0223] The computer system (2800) may also include human accessible storage devices and associated media, such as optical media including CD/DVD ROM/RW (2820) with CD/DVD media (2821), etc. .p., flash memory cards (2822), removable hard drive or solid state drive (2823), conventional magnetic media such as tape and floppy disk (not shown), dedicated ROM/ASIC/PLD based devices such as security hardware keys (not shown) and the like.

[0224] Специалисты в данной области техники также должны понимать, что термин "компьютерно-считываемые носители", используемый в связи с раскрытым здесь изобретением, не охватывает среды передачи, несущие волны или другие кратковременные сигналы.[0224] Those skilled in the art should also understand that the term "computer-readable media" as used in connection with the invention disclosed herein does not encompass transmission media, carrier waves, or other short-term signals.

[0225] Компьютерная система (2800) также может включать в себя интерфейс к одной или более сетям связи. Сети могут быть, например, беспроводными, проводными, оптическими. Сети могут быть, дополнительно, локальными, глобальными, городскими, транспортными и промышленными, реального времени, допускающими задержку и т.д. Примеры сетей включают в себя локальные сети, например, Ethernet, беспроводные LAN, сотовые сети, в том числе GSM, 3G, 4G, 5G, LTE и т.п., глобальные цифровые сети проводного или беспроводного телевидения, в том числе кабельное телевидение, спутниковое телевидение и наземное телевещание, транспортные и промышленные включают в себя CANBus и т.д. Некоторые сети обычно требуют внешних адаптеров сетевого интерфейса, которые подключены к некоторым портам данных общего назначения или периферийным шинам (2849) (например, USB-порты компьютерной системы (2800)); другие обычно встраиваются в ядро компьютерной системы (2800) путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему PC или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (2800) может осуществлять связь с другими объектами. Такая связь может быть однонаправленной с возможностью только приема (например, телевещания), однонаправленной с возможностью только передачи (например, CANbus к некоторым устройствам CANbus) или двунаправленной, например, к другим компьютерным системам с использованием локальной или глобальной цифровой сети. Некоторые протоколы и стеки протоколов могут использоваться в каждой из этих сетей и вышеописанных сетевых интерфейсов.[0225] The computer system (2800) may also include an interface to one or more communication networks. Networks can be, for example, wireless, wired, optical. Networks may additionally be local, wide area, metropolitan, transport and industrial, real-time, latency, etc. Examples of networks include local area networks such as Ethernet, wireless LANs, cellular networks including GSM, 3G, 4G, 5G, LTE, etc., digital wide area networks for wired or wireless television, including cable television, satellite TV and terrestrial TV, transport and industrial include CANBus, etc. Some networks typically require external network interface adapters that are connected to some general purpose data ports or peripheral buses (2849) (for example, computer system USB ports (2800)); others are typically built into the core of the computer system (2800) by connecting to a system bus as described below (eg, an Ethernet interface to a PC computer system or a cellular network interface to a smartphone computer system). Using any of these networks, the computer system (2800) can communicate with other entities. Such communication may be unidirectional with receive-only capability (eg broadcast), unidirectional with transmit-only capability (eg CANbus to some CANbus devices), or bidirectional, eg to other computer systems using a local area network or a wide area digital network. Several protocols and protocol stacks may be used on each of these networks and the network interfaces described above.

[0226] Вышеупомянутые устройства человеческого интерфейса, доступные человеку запоминающие устройства и сетевые интерфейсы могут подключаться к ядру (2840) компьютерной системы (2800).[0226] The aforementioned human interface devices, human accessible storage devices, and network interfaces can be connected to the core (2840) of the computer system (2800).

[0227] Ядро (2840) может включать в себя один или более центральных процессоров (CPU) (2841), графические процессоры (GPU) (2842), специализированные программируемые модули обработки в форме вентильных матриц, программируемых пользователем (FPGA, Field Programmable Gate Array) (2843), аппаратные ускорители[0227] The core (2840) may include one or more central processing units (CPUs) (2841), graphics processing units (GPUs) (2842), specialized programmable processing modules in the form of Field Programmable Gate Arrays (FPGAs). ) (2843), hardware accelerators

(2844) для некоторых задач и т.д. Эти устройства, совместно с постоянной памятью (ROM) (2845), оперативной памятью (2846), внутренним хранилищем данных большой емкости, например, внутренними жесткими дисками (2847), недоступными пользователю, SSD и т.п., могут соединяться посредством системной шины (2848). В некоторых компьютерных системах системная шина (2848) может быть доступна в форме одного или более физических разъемов для обеспечения расширений за счет дополнительных CPU, GPU и т.п. Периферийные устройства могут подключаться либо напрямую к системной шине (2848) ядра, либо через периферийную шину (2849). Архитектуры периферийной шины включают в себя PCI, USB и т.п.(2844) for some tasks, etc. These devices, together with read-only memory (ROM) (2845), random access memory (2846), high-capacity internal storage such as internal hard drives (2847) not accessible to the user, SSD, etc., can be connected via the system bus (2848). In some computer systems, the system bus (2848) may be available in the form of one or more physical connectors to allow for expansions with additional CPUs, GPUs, and the like. Peripherals can be connected either directly to the system bus (2848) of the kernel, or via a peripheral bus (2849). Peripheral bus architectures include PCI, USB, and the like.

[0228] CPU (2841), GPU (2842), FPGA (2843) и ускорители (2844) могут выполнять некоторые инструкции, которые совместно могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ROM (2845) или RAM (2846). Переходные данные также могут храниться в RAM (2446), тогда как постоянные данные могут храниться, например, во внутреннем хранилище (2847) данных большой емкости. Быстрое сохранение и извлечение из любого запоминающего устройства может обеспечиваться за счет использования кэш-памяти, которая может быть тесно связана с один или более CPU (2841), GPU (2842), хранилищем (2847) данных большой емкости, ROM (2845), RAM (2846) и т.п.[0228] CPUs (2841), GPUs (2842), FPGAs (2843), and accelerators (2844) may execute some instructions that together may constitute the aforementioned computer code. This computer code may be stored in ROM (2845) or RAM (2846). Transient data may also be stored in RAM (2446), while persistent data may be stored, for example, in an internal mass storage (2847). Fast storage and retrieval from any storage device can be achieved through the use of cache memory, which can be closely associated with one or more CPU (2841), GPU (2842), mass storage (2847), ROM (2845), RAM (2846) etc.

[0229] На компьютерно-считываемых носителях может храниться компьютерный код для осуществления различных компьютерно-реализуемых операций. Носители и компьютерный код могут быть специально созданы в целях настоящего изобретения или могут относиться к хорошо известным и доступным специалистам в области компьютерного программного обеспечения.[0229] Computer-readable media may store computer code for performing various computer-implemented operations. The media and computer code may be specially created for the purposes of the present invention or may be well known and available to those skilled in the art of computer software.

[0230] В порядке примера, но не ограничения, компьютерная система, имеющая архитектуру (2800), и, в частности, ядро (2840) может обеспечивать функциональные возможности благодаря выполнению процессором(ами) (включающим(и) в себя CPU, GPU, FPGA, ускорители и т.п.) программного обеспечения, воплощенного в одном или более материальных компьютерно-считываемых носителей. Такие компьютерно-считываемые носители могут быть носителями, связанными с доступным пользователю хранилищем данных большой емкости, представленным выше, а также некоторым хранилищем ядра (2840), носящим долговременный характер, например, внутренним хранилищем (2847) данных большой емкости или ROM (2845). Программное обеспечение, реализующее различные варианты осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром (2840). Компьютерно-считываемый носитель может включать в себя одно или более запоминающих устройств или микросхем, в соответствии с конкретными нуждами. Программное обеспечение может предписывать ядру (2840) и, в частности, его процессорам (включая CPU, GPU, FPGA и т.п.) выполнять конкретные процессы или конкретные части описанных здесь конкретных процессов, включая задание структур данных, хранящихся в RAM (2846), и модификацию таких структур данных согласно процессам, заданным программным обеспечением. Дополнительно или альтернативно, компьютерная система может обеспечивать функциональные возможности благодаря логике, зашитой или иным образом воплощенной в схеме (например, ускоритель (2844)), который может действовать вместо или совместно с программным обеспечением для выполнения конкретных процессов или конкретных частей описанных здесь конкретных процессов. Ссылка на программное обеспечение может охватывать логику, и наоборот, когда это уместно. Ссылка на компьютерно-считываемые носители может охватывать схему (например, интегральную схему (1С, integrated circuit)), где хранится программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или обе из них, когда это уместно. Настоящее изобретение охватывает любую подходящую комбинацию оборудования и программного обеспечения.[0230] By way of example, and not limitation, a computer system having an architecture (2800), and in particular a core (2840), can provide functionality through execution by processor(s) (including(and) CPU, GPU, FPGAs, accelerators, etc.) software embodied in one or more tangible computer-readable media. Such computer-readable media can be media associated with the user-accessible mass storage described above, as well as some persistent storage in the kernel (2840), such as internal mass storage (2847) or ROM (2845). Software implementing various embodiments of the present invention may be stored on such devices and executed by the core (2840). The computer-readable medium may include one or more memory devices or chips, in accordance with specific needs. The software may cause the core (2840) and in particular its processors (including CPUs, GPUs, FPGAs, etc.) to execute specific processes or specific parts of the specific processes described herein, including setting data structures stored in RAM (2846) , and modifying such data structures according to processes defined by the software. Additionally or alternatively, the computer system may provide functionality through logic hardwired or otherwise embodied in circuitry (e.g., an accelerator (2844)) that may operate in place of or in conjunction with software to perform specific processes or specific portions of the specific processes described herein. A reference to software may cover logic, and vice versa when appropriate. Reference to computer-readable media may encompass a circuit (eg, an integrated circuit) that stores software to execute, a circuit that embodies execution logic, or both, as appropriate. The present invention encompasses any suitable combination of hardware and software.

Приложение А: аббревиатурыAppendix A: Abbreviations

ASIC: специализированная интегральная схемаASIC: Application Specific Integrated Circuit

BMS: набор эталоновBMS: a set of standards

CANBus: шина контроллерной сетиCANBus: controller network bus

CBF: кодированный блок флагCBF: Coded Block Flag

CD: компакт-дискCD: CD

CPU: центральный процессорCPU: central processing unit

CRT: кинескопCRT: kinescope

СТВ: блок дерева кодированияCTB: coding tree block

CTU: единица дерева кодированияCTU: coding tree unit

CU: единица кодированияCU: coding unit

DVD: цифровой видеодискDVD: Digital Video Disc

FPGA: вентильная матрица, программируемая пользователемFPGA: Field Programmable Gate Array

GOP: группа изображенийGOP: group of images

GPU: графические процессорыGPU: GPUs

GSM: глобальная система мобильной связиGSM: Global System for Mobile Communications

HEVC: высокопроизводительное видеокодированиеHEVC: High Performance Video Coding

HRD: гипотетический опорный декодерHRD: Hypothetical Reference Decoder

ISP: интра-субразбиениеISP: intra-subdivision

IС: интегральная схемаIC: integrated circuit

JEM: модель совместного исследованияJEM: collaborative research model

LAN: локальная сетьLAN: local area network

LCD: жидкокристаллический дисплейLCD: liquid crystal display

LTE: проект долгосрочного развития систем связиLTE: a project for the long-term development of communication systems

МРМ: наиболее вероятный режимMRM: most probable mode

MV: вектор движенияMV: motion vector

OLED: органический светодиодOLED: organic light emitting diode

РВ: блок предсказанияRW: prediction block

PCI: межсоединение периферийных компонентовPCI: Peripheral Component Interconnect

PLD: программируемое логическое устройствоPLD: Programmable Logic Device

PU: единица предсказанияPU: prediction unit

RAM: оперативная памятьRAM: random access memory

ROM: постоянная памятьROM: Read Only Memory

SBT: преобразование субблоковSBT: sub-block conversion

SEI: информация дополнительного улучшенияSEI: Additional Improvement Information

SNR: отношение сигнал/шумSNR: signal to noise ratio

SSD: твердотельный приводSSD: solid state drive

TU: единица преобразования,TU: conversion unit,

USB: универсальная последовательная шинаUSB: Universal Serial Bus

VPDU: единица данных виртуального конвейераVPDU: virtual pipeline data unit

VUI: информация пригодности видеоVUI: video suitability information

VVC: универсальное видеокодированиеVVC: Universal Video Coding

[0231] Хотя здесь описано несколько иллюстративных вариантов осуществления, возможны изменения, перестановки и различные эквиваленты для замены, которые находятся в объеме изобретения. Таким образом, специалисты в данной области техники могут предложить многочисленные системы и способы, которые, хотя в явном виде здесь не показаны и не описаны, воплощают принципы изобретения и, таким образом, соответствуют его сущности и объему.[0231] Although several illustrative embodiments are described here, variations, permutations, and various replacement equivalents are possible and are within the scope of the invention. Thus, those skilled in the art can provide numerous systems and methods that, although not explicitly shown or described herein, embody the principles of the invention and thus fall within its spirit and scope.

Claims (39)

1. Способ видеодекодирования в декодере, в котором:1. A video decoding method in a decoder, in which: декодируют кодированную информацию блока кодирования (СВ) в изображении из битового потока кодированного видео, причем кодированная информация указывает ширину СВ, равную W отсчетам, и высоту СВ, равную Н отсчетам;decoding encoded coding block (CB) information in an image from the encoded video bitstream, the encoded information indicating a CB width of W samples and an CB height of H samples; разбивают СВ на субъединицы обработки (SPU), имеющие ширину и высоту, при этом ширина SPU равна минимальному значению из W и K, или высота SPU равна минимальному значению из Н и К, причем по меньшей мере одна из ширины W и высоты Н для СВ больше размера K единицы данных обработки;splitting the CB into processing subunits (SPUs) having a width and height, wherein the SPU width is equal to the minimum value of W and K, or the SPU height is equal to the minimum value of H and K, and at least one of the width W and the height H for CB larger than size K of the processing data unit; определяют структуру разбиения для дополнительного разбиения SPU на основании ширины и высоты SPU и максимального размера единицы преобразования (TU), составляющего М отсчетов, причем по меньшей мере одна из ширины и высоты SPU больше М; иdetermining a partition structure for the additional partition of the SPU based on the width and height of the SPU and a maximum transform unit (TU) size of M samples, wherein at least one of the width and height of the SPU is greater than M; and разбивают каждую из SPU на TU с размерами М×М на основании структуры разбиения, которая была определена.partitioning each of the SPUs into M×M TUs based on a partitioning structure that has been determined. 2. Способ по п. 1, в котором2. The method according to claim 1, in which ширина и высота SPU больше М;the width and height of the SPU is greater than M; при определении структуры разбиения определяют структуру разбиения как структуру разбиения в виде квадродерева; иwhen determining the partition structure, defining the partition structure as a partition structure in the form of a quadtree; and при разбиении SPU на TU разбивают SPU на TU на основании структуры разбиения в виде квадродерева.when splitting the SPU into TUs, split the SPU into TUs based on a quadtree split structure. 3. Способ по п. 1, в котором3. The method according to claim 1, in which ширина SPU больше М, и высота SPU равна М;the width of the SPU is greater than M and the height of the SPU is equal to M; при определении структуры разбиения определяют структуру разбиения как структуру вертикального разбиения в виде двоичного дерева; иwhen determining the partitioning structure, defining the partitioning structure as a vertical partitioning structure in the form of a binary tree; and при разбиении SPU на TU разбивают SPU на TU на основании структуры вертикального разбиения в виде двоичного дерева.when splitting the SPU into TUs, the SPUs are split into TUs based on the vertical splitting structure in the form of a binary tree. 4. Способ по п. 1, в котором4. The method according to claim 1, in which высота SPU больше М, и ширина SPU равна М;the height of the SPU is greater than M and the width of the SPU is equal to M; при определении структуры разбиения определяют структуру разбиения как структуру горизонтального разбиения в виде двоичного дерева; иwhen determining the splitting structure, defining the splitting structure as a horizontal splitting structure in the form of a binary tree; and при разбиении SPU на TU разбивают SPU на TU на основании структуры горизонтального разбиения в виде двоичного дерева.when splitting the SPU into TUs, split the SPU into TUs based on the horizontal split structure as a binary tree. 5. Способ по любому из пп. 1-4, в котором при разбиении SPU на TU рекурсивно разбивают одну из SPU на TU на основании структуры разбиения.5. The method according to any one of paragraphs. 1-4, in which, when partitioning an SPU into TUs, one of the SPUs into TUs is recursively partitioned based on a partition structure. 6. Способ по любому из пп. 1-4, в котором дополнительно: обрабатывают SPU согласно первому порядку сканирования; и обрабатывают TU в каждой из SPU согласно второму порядку сканирования.6. The method according to any one of paragraphs. 1-4, further comprising: processing the SPU according to the first scan order; and processing the TUs in each of the SPUs according to the second scan order. 7. Способ по п. 6, в котором по меньшей мере одним из первого порядка сканирования и второго порядка сканирования является один из (i) растрового порядка сканирования, (ii) вертикального порядка сканирования, (iii) зигзагообразного порядка и (iv) диагонального порядка сканирования.7. The method of claim 6, wherein at least one of the first scan order and the second scan order is one of (i) raster scan order, (ii) vertical scan order, (iii) zigzag order, and (iv) diagonal scan order scanning. 8. Способ по п. 7, в котором первый порядок сканирования и второй порядок сканирования являются растровыми порядками сканирования.8. The method of claim 7, wherein the first scan order and the second scan order are raster scan orders. 9. Способ по п. 2, в котором дополнительно:9. The method according to p. 2, in which additionally: обрабатывают SPU согласно первому порядку сканирования; иprocessing the SPU according to the first order of the scan; and обрабатывают TU в каждой из SPU согласно второму порядку сканирования,processing the TUs in each of the SPUs according to the second scan order, при этом W равно 128, Н равно 64, К равно 64 и М равно 32;wherein W is 128, H is 64, K is 64, and M is 32; первый порядок сканирования является порядком слева направо; иthe first scan order is from left to right; and второй порядок сканирования является растровым порядком сканирования.the second scan order is the raster scan order. 10. Способ по любому из пп. 1-4, в котором10. The method according to any one of paragraphs. 1-4, in which размер К единицы данных обработки указывает размер единицы данных виртуального конвейера (VPDU);the processing data unit size K indicates the size of the virtual pipeline data unit (VPDU); первая из SPU включена в первую VPDU, и вторая из SPU включена во вторую VPDU в изображении; иthe first of the SPUs is included in the first VPDU and the second of the SPUs is included in the second VPDU in the picture; and дополнительно:additionally: после обработки первой VPDU на первой ступени многоступенчатого конвейера, одновременно обрабатывают первую VPDU на второй ступени многоступенчатого конвейера и вторую VPDU на первой ступени многоступенчатого конвейера.after processing the first VPDU at the first stage of the multi-stage pipeline, simultaneously processing the first VPDU at the second stage of the multi-stage pipeline and the second VPDU at the first stage of the multi-stage pipeline. 11. Способ по п. 1, в котором по меньшей мере две TU в одной из SPU конфигурированы для одновременной обработки на разных ступенях многоступенчатого конвейера.11. The method of claim 1, wherein at least two TUs in one of the SPUs are configured to simultaneously process on different stages of a multi-stage pipeline. 12. Способ по п. 1, в котором разбиение СВ содержит:12. The method according to claim 1, in which the partition of the CB contains: выбор структуры разбиения из множества структур разбиения для разбиения СВ на основе сравнения по меньшей мере одной из ширины W и высоты Н блока СВ с максимальным размером М единицы преобразования (TU).selecting a partition structure from a plurality of partition structures for partitioning the CB based on comparing at least one of the width W and the height H of the CB block with a maximum transformation unit (TU) size M. 13. Способ по п. 12, в котором множество структур разбиения содержат по меньшей мере одну из структуры разбиения в виде квадродерева, структуры вертикального разбиения в виде двоичного дерева и структуры горизонтального разбиения в виде двоичного дерева, при этом:13. The method of claim 12, wherein the plurality of partition structures comprise at least one of a quadtree partition structure, a vertical binary tree partition structure, and a horizontal binary tree partition structure, wherein: если ширина W больше М и ширина W больше высоты Н, выбирают структуру вертикального разбиения в виде двоичного дерева для разбиения СВ на две части, каждая из которых имеет размер W/2×Н;if the width W is greater than M and the width W is greater than the height H, selecting a vertical splitting structure in the form of a binary tree to split the CB into two parts, each of which has a size of W/2×H; если высота Н больше М и высота Н больше ширина W, выбирают структуру горизонтального разбиения в виде двоичного дерева для разбиения СВ на две части, каждая из которых имеет размер W×Н/2.if the height H is greater than M and the height H is greater than the width W, a horizontal splitting structure in the form of a binary tree is selected to split the CB into two parts, each of which has a size of W×H/2. 14. Устройство для видеодекодирования, содержащее схему обработки, выполненную с возможностью осуществления способа по любому из пп. 1-13.14. Device for video decoding, containing a processing circuit configured to implement the method according to any one of paragraphs. 1-13.
RU2021129053A 2019-03-22 2020-03-20 Method and apparatus for video encoding RU2780422C1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US62/822,787 2019-03-22
US16/823,831 2020-03-19

Publications (1)

Publication Number Publication Date
RU2780422C1 true RU2780422C1 (en) 2022-09-23

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2607619C2 (en) * 2011-12-15 2017-01-10 ТАГИВАН II ЭлЭлСи Image encoding method, image decoding method, image encoding device, image decoding device and apparatus for encoding and decoding images
WO2017008678A1 (en) * 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd Method of conditional binary tree block partitioning structure for video and image coding
US20180070110A1 (en) * 2016-09-07 2018-03-08 Qualcomm Incorporated Tree-type coding for video coding
WO2018124653A1 (en) * 2016-12-27 2018-07-05 삼성전자 주식회사 Method and device for filtering reference sample in intra-prediction
US20180192076A1 (en) * 2015-06-16 2018-07-05 Sharp Kabushiki Kaisha Image decoding device image coding device
US20180199072A1 (en) * 2017-01-06 2018-07-12 Qualcomm Incorporated Multi-type-tree framework for video coding

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2607619C2 (en) * 2011-12-15 2017-01-10 ТАГИВАН II ЭлЭлСи Image encoding method, image decoding method, image encoding device, image decoding device and apparatus for encoding and decoding images
US20180192076A1 (en) * 2015-06-16 2018-07-05 Sharp Kabushiki Kaisha Image decoding device image coding device
WO2017008678A1 (en) * 2015-07-15 2017-01-19 Mediatek Singapore Pte. Ltd Method of conditional binary tree block partitioning structure for video and image coding
US20180070110A1 (en) * 2016-09-07 2018-03-08 Qualcomm Incorporated Tree-type coding for video coding
WO2018124653A1 (en) * 2016-12-27 2018-07-05 삼성전자 주식회사 Method and device for filtering reference sample in intra-prediction
US20180199072A1 (en) * 2017-01-06 2018-07-12 Qualcomm Incorporated Multi-type-tree framework for video coding

Similar Documents

Publication Publication Date Title
CN113614736A (en) Video coding and decoding method and device
AU2020245322B2 (en) Method and apparatus for video coding
US11032543B2 (en) Method and apparatus for video coding
US20220201307A1 (en) Method and apparatus for video coding
US11677971B2 (en) Method and apparatus for video coding
US20220224939A1 (en) Method and apparatus for video coding
KR20220100726A (en) Method and apparatus for video coding
JP2023546962A (en) Encoding end-of-block flags between components
RU2780422C1 (en) Method and apparatus for video encoding
RU2787810C1 (en) Method and apparatus for colour conversion in versatile video coding (vvc)
RU2779825C1 (en) Method and device for interaction between the internal prediction mode and the block differential pulse-code modulation mode
RU2777188C1 (en) Method and device for video encoding
RU2777394C1 (en) Method and device for video encoding
RU2788835C1 (en) Method and apparatus for encoding video data
RU2779901C1 (en) Method and device for improved implicit conversion selection
RU2784813C1 (en) Method and apparatus for video encoding
RU2777377C1 (en) Unified block vector prediction to compensate for blocks inside the image
RU2780794C1 (en) Simplified method for signalling for the mode of affine linear weighted intra prediction
RU2784906C1 (en) Method and apparatus for cross-component filtration
RU2801587C1 (en) Method and device for video encoding
RU2779931C1 (en) Method and apparatus for transmitting information on the size of a predictor candidate list
KR20230133980A (en) Coefficient sign prediction for transform skipping