[go: up one dir, main page]

RU2820857C2 - Entropy coding of motion vector differences - Google Patents

Entropy coding of motion vector differences Download PDF

Info

Publication number
RU2820857C2
RU2820857C2 RU2022119574A RU2022119574A RU2820857C2 RU 2820857 C2 RU2820857 C2 RU 2820857C2 RU 2022119574 A RU2022119574 A RU 2022119574A RU 2022119574 A RU2022119574 A RU 2022119574A RU 2820857 C2 RU2820857 C2 RU 2820857C2
Authority
RU
Russia
Prior art keywords
bin
motion vector
bins
decoder
entropy
Prior art date
Application number
RU2022119574A
Other languages
Russian (ru)
Other versions
RU2022119574A (en
Inventor
Валери ГЕОРГЕ
Беньямин БРОСС
Хайнер КИРХХОФФЕР
Детлеф МАРПЕ
Тунг НГУЙЕН
Маттиас ПРАЙСС
Миша ЗИКМАНН
Ян ШТЕГЕМАНН
Томас ВИГАНД
Original Assignee
ДжиИ Видео Компрешн, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ДжиИ Видео Компрешн, ЭлЭлСи filed Critical ДжиИ Видео Компрешн, ЭлЭлСи
Publication of RU2022119574A publication Critical patent/RU2022119574A/en
Application granted granted Critical
Publication of RU2820857C2 publication Critical patent/RU2820857C2/en

Links

Images

Abstract

FIELD: physics.
SUBSTANCE: invention relates to video encoding means. Video prediction is encoded by motion-compensated prediction using motion vectors. Motion vectors are predictively encoded by motion vector prediction and motion vector differences generation, wherein motion vector differences represent prediction error with respect to motion vectors. Differences of motion vectors are binarized, so that each binarization includes two binary codes of fixed length based on cutoff value equal to two, and a suffix bin string including an exponential Golomb code having a fixed order, given as one. Each binary code of a fixed length of the prefix bin string indicates whether the absolute value of the difference of the motion vectors is greater than the corresponding fixed value. Binarized values of motion vector differences are encoded into a data stream.
EFFECT: high efficiency of video encoding.
25 cl, 22 dwg

Description

Настоящее изобретение относится к принципу энтропийного кодирования для кодирования видеоданных.The present invention relates to an entropy coding principle for encoding video data.

В технике известны многие видеокодеки. Как правило, эти кодеки уменьшают необходимое количество данных, чтобы представлять видеоконтент, т.е. они сжимают данные. В контексте видеокодирования известно, что сжатие видеоданных выгодно достигается последовательным применением разных методов кодирования: используется предсказание с компенсацией движения, чтобы предсказывать содержимое изображения. Векторы движения, определенные при предсказании с компенсацией движения, а также остаток предсказания, подвергаются энтропийному кодированию без потерь. Чтобы дополнительно уменьшить количество данных сами векторы движения подвергаются предсказанию, так что только разности векторов движения, представляющие остаток предсказания вектора движения, должны энтропийно кодироваться. В H.264, например, применяется только что кратко изложенная процедура, чтобы передавать информацию о разностях векторов движения. В частности, разности векторов движения бинаризуются в строки бинов (контейнеров), соответствующие комбинации усеченного унарного кода и, от некоторого значения отсечки, экспоненциального кода Голомба. Тогда как бины экспоненциального кода Голомба легко кодируются с использованием режима равновероятного обхода с фиксированной вероятностью 0,5, для первых бинов обеспечиваются несколько контекстов. Значение отсечки выбирается равным девяти. Следовательно, обеспечивается большое количество контекстов для кодирования разностей векторов движения.Many video codecs are known in the art. Typically, these codecs reduce the amount of data required to represent video content, i.e. they compress data. In the context of video encoding, it is known that video compression is advantageously achieved by sequentially applying different encoding techniques: motion-compensated prediction is used to predict the content of the image. The motion vectors determined by the motion-compensated prediction, as well as the remainder of the prediction, are subject to lossless entropy encoding. To further reduce the amount of data, the motion vectors themselves are subject to prediction, so that only the motion vector differences representing the remainder of the motion vector prediction need to be entropy encoded. H.264, for example, uses the procedure just outlined to convey motion vector difference information. In particular, the motion vector differences are binarized into strings of bins (containers) corresponding to a combination of a truncated unary code and, from some cutoff value, an exponential Golomb code. While exponential Golomb code bins are easily encoded using the equiprobable walk mode with a fixed probability of 0.5, multiple contexts are provided for the first bins. The cutoff value is chosen to be nine. Therefore, a large number of contexts are provided for encoding motion vector differences.

Обеспечение большого количества контекстов, однако, не только увеличивает сложность кодирования, но также может оказывать отрицательное влияние на эффективность кодирования: если контекст посещается очень редко, не выполняется эффективно вероятностная адаптация, т.е. адаптация оценки вероятности, ассоциированной с соответствующим контекстом во время причины энтропийного кодирования. Следовательно, примененные не надлежащим образом оценки вероятности оценивают фактическую статистику символов. Кроме того, если для некоторого бина бинаризации обеспечивается несколько контекстов, выбор между ними может потребовать инспектирование значений соседних бинов/синтаксических элементов, необходимость чего может препятствовать выполнению процесса декодирования. С другой стороны, если количество контекстов обеспечивается слишком малым, бины с сильно изменяющейся фактической статистикой символов группируются вместе в одном контексте и, следовательно, оценка вероятности, ассоциированная с этим контекстом, не кодирует эффективно бины, ассоциированные с ним.Providing a large number of contexts, however, not only increases encoding complexity, but can also have a negative impact on encoding efficiency: if the context is visited very rarely, probabilistic adaptation is not performed effectively, i.e. adapting the probability estimate associated with the corresponding context during entropy encoding reason. Consequently, probability estimates that are not properly applied estimate the actual symbol statistics. Additionally, if multiple contexts are provided for a given binarization bin, choosing between them may require inspecting the values of adjacent bins/syntactic elements, which may interfere with the decoding process. On the other hand, if the number of contexts is provided too small, bins with highly varying actual character statistics are grouped together in one context and, therefore, the probability estimate associated with that context does not effectively encode the bins associated with it.

Существует текущая потребность в дальнейшем повышении эффективности кодирования энтропийного кодирования разностей векторов движения.There is a current need to further improve the coding efficiency of entropy coding of motion vector differences.

Следовательно, задачей настоящего изобретения является обеспечение такого принципа кодирования.Therefore, it is an object of the present invention to provide such a coding principle.

Данная задача достигается объектом независимых пунктов формулы изобретения, приложенных к данному документу.This object is achieved by the subject of the independent claims appended to this document.

Основным решением настоящего изобретения является то, что эффективность кодирования энтропийного кодирования разностей векторов движения может быть дополнительно повышена посредством снижения значения отсечки, до которого используется усеченный унарный код, чтобы бинаризировать разности векторов движения, до двух, так что имеется только две позиции бинов усеченного унарного кода, и, если порядок единицы используется для экспоненциального кода Голомба для бинаризации разностей векторов движения от значения отсечки, и, если, дополнительно, точно один контекст обеспечивается для двух позиций бинов усеченного унарного кода, соответственно, так что не является необходимым выбор контекста, основанный на значениях бина или синтаксического элемента соседних блоков изображения, и исключается слишком мелкая классификация бинов в этих позициях бинов в контексты, так что вероятностная адаптация работает надлежащим образом, и, если одинаковые контексты используются для горизонтальных и вертикальных составляющих, тем самым дополнительно уменьшая отрицательные эффекты слишком мелкого подразделения контекста.The main solution of the present invention is that the coding efficiency of entropy encoding of motion vector differences can be further improved by reducing the cutoff value to which the truncated unary code is used to binarize the motion vector differences to two, so that there are only two bin positions of the truncated unary code , and, if the order of one is used for the exponential Golomb code to binarize the motion vector differences from the cutoff value, and if, additionally, exactly one context is provided for the two bin positions of the truncated unary code, respectively, so that it is not necessary to select a context based on values of a bin or syntactic element of adjacent image blocks, and over-fine classification of bins at these bin positions into contexts is avoided, so that probabilistic adaptation works as expected, and if the same contexts are used for horizontal and vertical components, thereby further reducing the negative effects of over-fine divisions of context.

Кроме того, было обнаружено, что только что упомянутые установки в отношении энтропийного кодирования разностей векторов движения являются особенно ценными при объединении их с улучшенными способами предсказания векторов движения и уменьшения необходимого количества разностей векторов движения, подлежащих передаче. Например, могут обеспечиваться многочисленные предикторы вектора движения, чтобы получать упорядоченный список предикторов вектора движения, и индекс этого списка предикторов вектора движения может использоваться, чтобы определять фактический предиктор вектора движения, остаток предсказания которого представляется рассматриваемой разностью вектора движения. Хотя информация об используемом индексе списка должна выводиться из потока данных на декодирующей стороне, общее качество предсказания векторов движения повышается, и, следовательно, величина разностей векторов движения дополнительно уменьшается, так что в целом эффективность кодирования дополнительно повышается, и уменьшение значения отсечки и общее использование контекста для горизонтальных и вертикальных составляющих разностей векторов движения соответствуют такому улучшенному предсказанию вектора движения. С другой стороны, может использоваться слияние, чтобы уменьшить количество разностей векторов движения, подлежащих передаче в потоке данных: с этой целью, информация слияния может передаваться в потоке данных, сигнализируя блокам декодера о подразделении блоков, которые группируются в группу блоков. Разности векторов движения затем могут передаваться в потоке данных в единицах этих объединенных групп вместо индивидуальных блоков, таким образом уменьшая количество разностей векторов движения, которые необходимо передавать. Так как эта кластеризация блоков уменьшает взаимную корреляцию между соседними разностями векторов движения, только что упомянутое исключение обеспечения нескольких контекстов для одной позиции бина предотвращает очень мелкую классификацию схемы энтропийного кодирования в контексты в зависимости от соседних разностей векторов движения. Вместо этого, принцип слияния уже использует взаимную корреляцию между разностями векторов движения соседних блоков, и, следовательно, является достаточным один контекст для одной позиции бина - один и тот же для горизонтальной и вертикальной составляющих.In addition, it has been found that the just mentioned techniques for entropy encoding of motion vector differences are particularly valuable when combined with improved methods for predicting motion vectors and reducing the required number of motion vector differences to be transmitted. For example, multiple motion vector predictors may be provided to obtain an ordered list of motion vector predictors, and an index of this list of motion vector predictors may be used to determine the actual motion vector predictor whose prediction remainder is represented by the motion vector difference under consideration. Although information about the used list index must be inferred from the data stream at the decoding side, the overall quality of motion vector prediction is improved, and therefore the magnitude of motion vector differences is further reduced, so that overall coding efficiency is further improved, and the cutoff value and overall context utilization are reduced for the horizontal and vertical components of the motion vector differences correspond to this improved motion vector prediction. On the other hand, fusion may be used to reduce the number of motion vector differences to be transmitted in the data stream: to this end, fusion information may be transmitted in the data stream, signaling the decoder blocks to subdivide the blocks, which are grouped into a group of blocks. The motion vector differences can then be transmitted in the data stream in units of these combined groups instead of individual blocks, thereby reducing the number of motion vector differences that need to be transmitted. Since this clustering of blocks reduces the cross-correlation between adjacent motion vector differences, the just mentioned exception of providing multiple contexts for a single bin position prevents the entropy encoding scheme from very fine-grained classification into contexts depending on adjacent motion vector differences. Instead, the fusion principle already exploits the cross-correlation between the motion vector differences of adjacent blocks, and therefore one context for one bin position is sufficient - the same for the horizontal and vertical components.

Предпочтительные варианты осуществления настоящей заявки описываются ниже в отношении фигур, среди которых:Preferred embodiments of the present application are described below with respect to the figures, including:

фиг. 1 изображает блок-схему кодера согласно варианту осуществления;fig. 1 is a block diagram of an encoder according to an embodiment;

фиг. 2a-2c схематически изображают разные подразделения массива элементов дискретизации, такого как изображение, на блоки;fig. 2a-2c schematically depict various subdivisions of a bin array, such as an image, into blocks;

фиг. 3 изображает блок-схему декодера согласно варианту осуществления;fig. 3 is a block diagram of a decoder according to an embodiment;

фиг. 4 изображает более подробно блок-схему кодера согласно варианту осуществления;fig. 4 is a block diagram of an encoder according to an embodiment in more detail;

фиг. 5 изображает более подробно блок-схему декодера согласно варианту осуществления;fig. 5 shows in more detail a block diagram of a decoder according to an embodiment;

фиг. 6 схематическим иллюстрирует преобразование блока из пространственной области в спектральную область, результирующий блок преобразования и его повторное преобразование;fig. 6 schematically illustrates the transformation of a block from the spatial domain to the spectral domain, the resulting transform block, and its reconversion;

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

фиг. 8 изображает блок-схему декодера, пригодного для декодирования битового потока, генерируемого кодером по фиг. 8, согласно варианту осуществления;fig. 8 is a block diagram of a decoder suitable for decoding a bit stream generated by the encoder of FIG. 8, according to an embodiment;

фиг. 9 изображает схематическую диаграмму, иллюстрирующую пакет данных с мультиплексированными частичными битовыми потоками согласно варианту осуществления;fig. 9 is a schematic diagram illustrating a data packet with multiplexed partial bit streams according to an embodiment;

фиг. 10 изображает схематическую диаграмму, иллюстрирующую пакет данных с альтернативным сегментированием, использующим сегменты фиксированного размера, согласно другому варианту осуществления;fig. 10 is a schematic diagram illustrating a data packet with alternative segmentation using fixed size segments, according to another embodiment;

фиг. 11 изображает декодер, поддерживающий переключение режимов, согласно варианту осуществления;fig. 11 shows a decoder supporting mode switching according to an embodiment;

фиг. 12 изображает декодер, поддерживающий переключение режимов, согласно другому варианту осуществления;fig. 12 shows a decoder supporting mode switching according to another embodiment;

фиг. 13 изображает кодер, соответствующий декодеру по фиг. 11, согласно варианту осуществления;fig. 13 shows an encoder corresponding to the decoder of FIG. 11, according to an embodiment;

фиг. 14 изображает кодер, соответствующий декодеру по фиг. 12, согласно варианту осуществления;fig. 14 shows an encoder corresponding to the decoder of FIG. 12, according to an embodiment;

фиг. 15 изображает отображение pStateCtx и fullCtxState/256**E**;fig. 15 shows the display of pStateCtx and fullCtxState/256**E**;

фиг. 16 изображает декодер согласно варианту осуществления настоящего изобретения; иfig. 16 shows a decoder according to an embodiment of the present invention; And

фиг. 17 изображает кодер согласно варианту осуществления настоящего изобретения.fig. 17 depicts an encoder according to an embodiment of the present invention.

Фиг. 18 схематически изображает бинаризацию разности векторов движения согласно варианту осуществления настоящего изобретения;Fig. 18 schematically shows a binarization of a motion vector difference according to an embodiment of the present invention;

фиг. 19 схематически иллюстрирует принцип слияния согласно варианту осуществления; иfig. 19 schematically illustrates the merging principle according to the embodiment; And

фиг. 20 схематически иллюстрирует схему предсказания вектора движения согласно варианту осуществления.fig. 20 schematically illustrates a motion vector prediction circuit according to an embodiment.

Отмечается, что при описании фигур, элементы, встречающиеся на нескольких из этих фигур, обозначаются одинаковой ссылочной позицией на каждой из этих фигур, и исключается повторное описание этих элементов, что касается функциональных возможностей, чтобы исключить необязательные повторения. Тем не менее, функциональные возможности и описания, обеспечиваемые в отношении одной фигуры, также применимы к другим фигурам, если только в явной форме не указано противоположное.It is noted that in describing the figures, elements appearing in more than one of these figures are designated by the same reference numeral in each of these figures, and repeated description of these elements with respect to functionality is avoided so as to avoid unnecessary repetition. However, functionality and descriptions provided with respect to one figure also apply to other figures, unless expressly stated to the contrary.

Ниже сначала описываются варианты осуществления общего принципа видеокодирования, в отношении фиг. 1-10. Фиг. 1-6 относятся к части видеокодека, работающей на уровне синтаксиса. Последующие фиг. 8-10 относятся к вариантам осуществления для части кода, относящегося к преобразованию потока синтаксических элементов в поток данных и наоборот. Затем описываются конкретные аспекты и варианты осуществления настоящего изобретения в виде возможных реализаций общего принципа, представительно кратко изложенного в отношении фиг. 1-10.Below, embodiments of the general video encoding principle will first be described with respect to FIGS. 1-10. Fig. 1-6 refer to the part of the video codec that operates at the syntax level. Subsequent figs. 8-10 relate to embodiments for a portion of code related to converting a stream of syntax elements to a stream of data and vice versa. Specific aspects and embodiments of the present invention are then described in terms of possible implementations of the general principle briefly outlined in relation to FIG. 1-10.

Фиг. 1 изображает пример кодера 10, в котором могут быть реализованы аспекты настоящей заявки.Fig. 1 depicts an example encoder 10 in which aspects of the present application may be implemented.

Кодер кодирует массив элементов 20 дискретизации информации в поток данных. Массив элементов дискретизации информации может представлять элементы дискретизации информации, соответствующие, например, значениям освещенности, значениям цветности, значениям яркости, значениям насыщенности цвета или т.п. Однако элементы дискретизации информации также могут представлять собой значения глубины в случае массива 20 элементов дискретизации, представляющего собой карту глубины, сгенерированную, например, по времени датчика света или т.п.The encoder encodes the array of information sampling elements 20 into a data stream. The information sampling element array may represent information sampling elements corresponding to, for example, illuminance values, chrominance values, luminance values, chroma values, or the like. However, the information bins may also represent depth values in the case of the bin array 20 representing a depth map generated from, for example, light sensor time or the like.

Кодер 10 представляет собой кодер на основе блоков. Т.е. кодер 10 кодирует массив 20 элементов дискретизации в поток 30 данных в единицах блоков 40. Кодирование в единицах блоков 40 не обязательно означает, что кодер 10 кодирует эти блоки 40 совершенно независимо один от другого. Вместо этого кодер 10 может использовать восстановления ранее кодированных блоков, чтобы экстраполировать или внутренне предсказывать остальные блоки, и может использовать степень разбиения блоков для установки параметров кодирования, т.е. для установки метода, которым кодируется каждая область массива элементов дискретизации, соответствующая соответствующему блоку.Encoder 10 is a block-based encoder. Those. encoder 10 encodes the array 20 of samples into a data stream 30 in units of blocks 40. Encoding in units of blocks 40 does not necessarily mean that encoder 10 encodes these blocks 40 completely independently of one another. Instead, encoder 10 may use reconstructions of previously encoded blocks to extrapolate or internally predict remaining blocks, and may use the degree of block partitioning to set encoding parameters, i.e. to set the method by which each bin array region corresponding to the corresponding block is encoded.

Кроме того, кодер 10 представляет собой кодер с преобразованием. Т.е. кодер 10 кодирует блоки 40 посредством использования преобразования, чтобы переносить элементы дискретизации информации в каждом блоке 40 из пространственной области в спектральную область. Может использоваться двумерное преобразование, такое как дискретное косинусное преобразование (DCT) быстрого преобразования Фурье (FFT) или т.п. Предпочтительно, что блоки 40 имеют квадратную форму или прямоугольную форму.In addition, the encoder 10 is a transform encoder. Those. encoder 10 encodes blocks 40 by using a transform to transfer bins of information in each block 40 from the spatial domain to the spectral domain. A two-dimensional transform such as discrete cosine transform (DCT), fast Fourier transform (FFT) or the like may be used. Preferably, the blocks 40 are square or rectangular in shape.

Подразделение массива 20 элементов дискретизации на блоки 40, показанное на фиг. 1, служит просто для целей иллюстрации. Фиг. 1 изображает массив 20 элементов дискретизации с подразделением на обычное двумерное расположение квадратных или прямоугольных блоков 40, которые примыкают друг к другу неперекрывающимся образом. Размер блоков 40 может определяться заранее. Т.е. кодер 10 может не переносить информацию о размере блока блоков 40 в потоке 30 данных на декодирующую сторону. Например, декодер может ожидать заданный размер блока.The subdivision of the sample array 20 into blocks 40 shown in FIG. 1 is merely for illustration purposes. Fig. 1 depicts an array 20 of bins subdivided into a conventional two-dimensional arrangement of square or rectangular blocks 40 that are adjacent to each other in a non-overlapping manner. The size of the blocks 40 may be determined in advance. Those. The encoder 10 may not transfer the block size information of the blocks 40 in the data stream 30 to the decoding side. For example, the decoder may expect a given block size.

Однако возможно несколько альтернатив. Например, блоки могут перекрывать друг друга. Перекрытие, однако, может ограничиваться до такой степени, что каждый блок имеет часть, не перекрываемую никаким соседним блоком, или так, что каждый элемент дискретизации блоков перекрывается по максимуму одним блоком из числа соседних блоков, расположенных рядом друг с другом с текущим блоком по заданному направлению. Последнее означает, что левый и правый соседние блоки могут перекрывать текущий блок, чтобы полностью покрывать текущий блок, но они могут не накладываться друг на друга, и это же применимо к соседям в вертикальном и диагональном направлении.However, several alternatives are possible. For example, blocks can overlap each other. The overlap, however, may be limited to such an extent that each block has a portion not overlapped by any neighboring block, or such that each block bin is overlapped by at most one block from among the neighboring blocks adjacent to each other with the current block for a given direction. The latter means that the left and right neighboring blocks may overlap the current block to completely cover the current block, but they may not overlap each other, and the same applies to neighbors in the vertical and diagonal direction.

В качестве другой альтернативы, подразделение массива 20 элементов дискретизации на блоки 40 может адаптироваться к содержимому массива 20 элементов дискретизации кодером 10, причем информация подразделения об используемом подразделении пересылается на сторону декодера по битовому потоку 30.As another alternative, subdividing the bin array 20 into blocks 40 may be adapted to the contents of the bin array 20 by the encoder 10, with subdivision information about the subdivision used being sent to the decoder side via bitstream 30.

Фиг. 2a-2c изображают разные примеры для подразделения массива 20 элементов дискретизации в блоки 40. Фиг. 2a изображает подразделение на основе квадродерева массива 20 элементов дискретизации в блоки 40 разных размеров, причем типовые блоки обозначаются позициями 40a, 40b, 40c и 40d с увеличивающимся размером. В соответствии с подразделением на фиг. 2a, массив 20 элементов дискретизации сначала делится на обычное двумерное расположение древовидных блоков 40d, которые, в свою очередь, имеют индивидуальную информацию подразделения, ассоциированную с ним, в соответствии с которой некоторый древовидный блок 40d может дополнительно подразделяться или нет в соответствии со структурой квадродерева. Древовидный блок слева от блока 40d, в качестве примера, подразделяется на меньшие блоки в соответствии со структурой квадродерева. Кодер 10 может выполнять одно двумерное преобразование для каждого из блоков, показанных сплошными и пунктирными линиями на фиг. 2a. Другими словами, кодер 10 может преобразовывать массив 20 в единицах подразделения блока.Fig. 2a-2c depict various examples for subdividing the sample array 20 into blocks 40. FIG. 2a depicts a quadtree subdivision of the sample array 20 into blocks 40 of different sizes, with typical blocks designated 40a, 40b, 40c and 40d in increasing size. According to the division in FIG. 2a, the bin array 20 is first divided into a conventional two-dimensional arrangement of tree blocks 40d, which in turn have individual subdivision information associated with it, whereby a certain tree block 40d may or may not be further subdivided according to the quadtree structure. The tree block to the left of block 40d, as an example, is subdivided into smaller blocks according to the quadtree structure. Encoder 10 may perform one two-dimensional transform for each of the blocks shown in solid and dotted lines in FIG. 2a. In other words, encoder 10 may transform array 20 in block subdivision units.

Вместо подразделения на основе квадродерева может использоваться более общее подразделение на основе нескольких деревьев, и количество дочерних узлов на уровень иерархии может отличаться между разными уровнями иерархии.Instead of a quadtree subdivision, a more general multi-tree subdivision may be used, and the number of child nodes per hierarchy level may differ between different hierarchy levels.

Фиг. 2b изображает другой пример для подразделения. В соответствии с фиг. 2b массив 20 элементов дискретизации сначала делится на макроблоки 40b, расположенные в обычном двумерном расположении неперекрывающимся, взаимно примыкающим образом, причем каждый макроблок 40b имеет ассоциированную с ним информацию подразделения, в соответствии с которой макроблок не подразделяется, или, если подразделяется, подразделяется обычным двумерным образом на подблоки равного размера для достижения разных степеней разбиения подразделения для разных макроблоков. Результатом является подразделение массива 20 элементов дискретизации в блоках 40 с разным размером, причем представители разных размеров обозначаются позициями 40a, 40b и 40a’. Как на фиг. 2a, кодер 10 выполняет двумерное преобразование в отношении каждого из блоков, показанных на фиг.2b сплошными и пунктирными линиями. Фиг. 2c описывается ниже.Fig. 2b depicts another example for a subdivision. According to FIG. 2b, the bin array 20 is first divided into macroblocks 40b arranged in a conventional two-dimensional arrangement in a non-overlapping, mutually adjacent manner, with each macroblock 40b having subdivision information associated with it such that the macroblock is not subdivided, or, if subdivided, is subdivided in a conventional two-dimensional manner. into equally sized subblocks to achieve different degrees of subdivision for different macroblocks. The result is a subdivision of the sample array 20 into blocks 40 of different sizes, with representatives of the different sizes designated by positions 40a, 40b and 40a'. As in fig. 2a, encoder 10 performs a two-dimensional transform on each of the blocks shown in solid and dotted lines in FIG. 2b. Fig. 2c is described below.

Фиг. 3 изображает декодер 50, способный декодировать поток 30 данных, сгенерированный кодером 10 для восстановления восстановленной версии 60 массива 20 элементов дискретизации. Декодер 50 извлекает из потока 30 данных блок коэффициентов преобразования для каждого из блоков 40 и восстанавливает восстановленную версию 60 посредством выполнения обратного преобразования в отношении каждого из блоков коэффициентов преобразования.Fig. 3 depicts a decoder 50 capable of decoding a data stream 30 generated by an encoder 10 to reconstruct a reconstructed version 60 of a sample array 20. Decoder 50 extracts from data stream 30 a block of transform coefficients for each of the blocks 40 and reconstructs the reconstructed version 60 by performing an inverse transform on each of the blocks of transform coefficients.

Кодер 10 и декодер 50 могут быть выполнены с возможностью выполнения энтропийного кодирования/декодирования, чтобы вставлять информацию о блоках коэффициентов преобразования в поток данных и извлекать эту информацию из него соответственно. Ниже описываются подробности в этом отношении в соответствии с разными вариантами осуществления. Необходимо отметить, что поток 30 данных необязательно содержит информацию о блоках коэффициентов преобразования для всех блоков 40 массива 20 элементов дискретизации. Вместо этого, так как подмножество блоков 40 может кодироваться в битовый поток 30 другим образом. Например, кодер 10, вместо этого, может принять решение воздержаться от вставки блока коэффициентов преобразования для некоторого блока из блоков 40 со вставкой в битовый поток 30 параметров альтернативного кодирования, которые позволяют декодеру 50 предсказывать или иным образом наполнять соответствующий блок в восстановленной версии 60. Например, кодер 10 может выполнять анализ текстуры, чтобы определять расположение блоков в массиве 20 элементов дискретизации, который может наполняться на стороне декодера декодером посредством синтеза текстуры, и указывать это в битовом потоке соответствующим образом.Encoder 10 and decoder 50 may be configured to perform entropy encoding/decoding to insert transform coefficient block information into and extract information from the data stream, respectively. Details in this regard are described below in accordance with various embodiments. It should be noted that data stream 30 does not necessarily contain information about transform coefficient blocks for all blocks 40 of sample array 20. Instead, as a subset of blocks 40 may be encoded into bitstream 30 in a different manner. For example, encoder 10 may instead decide to refrain from inserting a block of transform coefficients for some block of blocks 40, inserting into bitstream 30 alternative encoding parameters that allow decoder 50 to predict or otherwise populate the corresponding block in the reconstructed version 60. For example, , the encoder 10 may perform texture analysis to determine the arrangement of blocks in the bin array 20, which may be populated at the decoder side by the decoder through texture synthesis, and indicate this in the bitstream accordingly.

Как описывается в отношении следующих фигур, блоки коэффициентов преобразования необязательно представляют представление спектральной области исходных элементов дискретизации информации соответствующего блока 40 массива 20 элементов дискретизации. Вместо этого, такой блок коэффициентов преобразования может представлять представление спектральной области остатка предсказания соответствующего блока 40. Фиг. 4 изображает вариант осуществления для такого кодера. Кодер по фиг. 4 содержит ступень (каскад) 100 преобразования, энтропийный кодер 102, ступень 104 обратного преобразования, предиктор (предсказатель) 106 и вычитатель 108, а также сумматор 110. Вычитатель 108, ступень 100 преобразования и энтропийный кодер 102 соединены последовательно в упомянутом порядке между входом 112 и выходом 114 кодера на фиг. 4. Ступень 104 обратного преобразования, сумматор 110 и предиктор 106 соединены в упомянутом порядке между выходом ступени 100 преобразования и инвертирующим входом вычитателя 108, причем выход предиктора 106 также соединен с другим входом сумматора 110.As described in relation to the following figures, the transform coefficient blocks do not necessarily represent a spectral domain representation of the original bins of information of the corresponding block 40 of the bin array 20. Instead, such a block of transform coefficients may represent a spectral domain representation of the prediction residual of the corresponding block 40. FIG. 4 depicts an embodiment for such an encoder. The encoder according to FIG. 4 contains a transformation stage (cascade) 100, an entropy encoder 102, an inverse transformation stage 104, a predictor (predictor) 106 and a subtractor 108, as well as an adder 110. The subtractor 108, the transformation stage 100 and the entropy encoder 102 are connected in series in the above order between the input 112 and encoder output 114 in FIG. 4. The inverse conversion stage 104, the adder 110 and the predictor 106 are connected in the above order between the output of the conversion stage 100 and the inverting input of the subtractor 108, and the output of the predictor 106 is also connected to the other input of the adder 110.

Кодер по фиг. 4 представляет собой блочный кодер на основе преобразования с предсказанием. Т.е. блоки массива 20 элементов дискретизации, поступающие на вход 112, предсказываются из ранее кодированных и восстановленных частей этого же массива 20 элементов дискретизации или ранее кодированных и восстановленных других массивов элементов дискретизации, которые могут предшествовать или следовать за текущим массивом 20 элементов дискретизации во времени представления. Предсказание выполняется предиктором 106. Вычитатель 108 вычитает предсказание из такого исходного блока, и ступень 100 преобразования выполняет двумерное преобразование остатков предсказания. Само двумерное преобразование или последующая мера в ступени 100 преобразования могут приводить к квантованию коэффициентов преобразования в блоках коэффициентов преобразования. Квантованные блоки коэффициентов преобразования кодируются без потерь, например, посредством энтропийного кодирования в энтропийном кодере 102, причем результирующий поток данных выводится на выходе 114. Ступень 104 обратного преобразования восстанавливает квантованный остаток, и сумматор 110, в свою очередь, объединяет восстановленный остаток с соответствующим предсказанием для получения восстановленных элементов дискретизации информации, основываясь на которых предиктор 106 может предсказывать вышеупомянутые кодируемые в настоящий момент блоки предсказания. Предиктор 106 может использовать разные режимы предсказания, такие как режимы внутреннего предсказания и режимы внешнего предсказания, чтобы предсказывать блоки, и параметры предсказания направляются энтропийному кодеру 102 для вставки в поток данных. Для каждого блока предсказания с внешним предсказанием соответствующие данные движения вставляются в битовый поток при помощи энтропийного кодера 114, чтобы предоставить возможность декодирующей стороне повторно выполнить предсказание. Данные движения для блока предсказания изображения могут включать в себя часть синтаксиса, включающую в себя синтаксический элемент, представляющий разность вектора движения, дифференциально кодирующую вектор движения для текущего блока предсказания относительно предиктора вектора движения, полученного, например, посредством заданного способа из векторов движения соседних, уже кодированных блоков предсказания.The encoder according to FIG. 4 is a block encoder based on predictive transform. Those. blocks of sample array 20 arriving at input 112 are predicted from previously encoded and reconstructed portions of the same sample array 20 or previously encoded and reconstructed other sample arrays that may precede or follow the current sample array 20 in presentation time. The prediction is performed by predictor 106. Subtractor 108 subtracts the prediction from such source block, and transformation stage 100 performs a two-dimensional transformation of the prediction residuals. The two-dimensional transform itself or a subsequent measure in transform stage 100 may result in quantization of transform coefficients in transform coefficient blocks. The quantized blocks of transform coefficients are losslessly encoded, for example, by entropy encoding in entropy encoder 102, with the resulting data stream output at output 114. Inverse transform stage 104 reconstructs the quantized remainder, and adder 110 in turn combines the reconstructed residual with the corresponding prediction for obtaining reconstructed information samples based on which the predictor 106 can predict the aforementioned currently encoded prediction blocks. The predictor 106 may use different prediction modes, such as intra prediction modes and inter prediction modes, to predict blocks, and the prediction parameters are sent to the entropy encoder 102 for insertion into the data stream. For each inter-prediction block, corresponding motion data is inserted into the bitstream by the entropy encoder 114 to enable the decoding side to re-predict. The motion data for an image prediction block may include a syntax portion including a syntax element representing a motion vector difference differentially encoding a motion vector for the current prediction block relative to a motion vector predictor obtained, for example, by a predetermined method from the motion vectors of adjacent, already coded prediction blocks.

Т.е. согласно варианту осуществления по фиг. 4 блоки коэффициентов преобразования представляют спектральное представление остатка массива элементов дискретизации, а не его фактические элементы дискретизации информации. Т.е. согласно варианту осуществления по фиг. 4 последовательность синтаксических элементов может поступать в энтропийный кодер 102 для энтропийного кодирования в поток 114 данных. Последовательность синтаксических элементов может содержать синтаксические элементы разностей векторов движения для блоков внешнего предсказания и синтаксические элементы, касающиеся карты значимостей, указывающей позиции значимых уровней коэффициентов преобразования, а также синтаксические элементы, определяющие сами значимые уровни коэффициентов преобразования, для блоков преобразования.Those. according to the embodiment of FIG. 4, the transform coefficient blocks represent the spectral representation of the remainder of the sample array, rather than its actual information samples. Those. according to the embodiment of FIG. 4, a sequence of syntax elements may be provided to entropy encoder 102 for entropy encoding into data stream 114. The sequence of syntactic elements may comprise syntactic elements of motion vector differences for the inter-prediction blocks and syntactic elements relating to a saliency map indicating the positions of the significant levels of the transform coefficients, as well as syntactic elements defining the significant levels of the transform coefficients themselves for the transform blocks.

Необходимо отметить, что несколько альтернатив существует для варианта осуществления по фиг. 4, причем некоторые из них были описаны в вводной части описания изобретения, описание которых включено в описание фиг. 4 настоящего документа.It should be noted that several alternatives exist for the embodiment of FIG. 4, some of which were described in the introductory part of the description of the invention, the description of which is included in the description of FIG. 4 of this document.

Фиг. 5 изображает декодер, способный декодировать поток данных, генерируемый кодером по фиг. 4. Декодер по фиг. 5 содержит энтропийный декодер 150, ступень 152 обратного преобразования, сумматор 154 и предиктор 156. Энтропийный декодер 150, ступень 152 обратного преобразования и сумматор 154 последовательно соединены между входом 158 и выходом 160 декодера по фиг. 5 в упомянутом порядке. Другой выход энтропийного декодера 150 соединен с предиктором 156, который, в свою очередь, подсоединен между выходом сумматора 154 и другим его входом. Энтропийный декодер 150 извлекает из потока данных, поступающего в декодер по фиг. 5 на входе 158, блоки коэффициентов преобразования, причем обратное преобразование применяется к блокам коэффициентов преобразования в ступени 152 для получения сигнала остатка. Сигнал остатка объединяется с предсказанием от предиктора 156 в сумматоре 154 для получения восстановленного блока восстановленной версии массива элементов дискретизации на выходе 160. Основываясь на восстановленных версиях, предиктор 156 генерирует предсказания, таким образом восстанавливая предсказания, выполняемые предиктором 106 на стороне кодера. Для получения таких же предсказаний, что и те, которые используются на стороне кодера, предиктор 156 использует параметры предсказания, которые энтропийный декодер 150 также получает из потока данных на входе 158.Fig. 5 depicts a decoder capable of decoding the data stream generated by the encoder of FIG. 4. Decoder according to FIG. 5 includes an entropy decoder 150, an inverse transform stage 152, an adder 154, and a predictor 156. The entropy decoder 150, an inverse transform stage 152, and an adder 154 are connected in series between an input 158 and an output 160 of the decoder of FIG. 5 in the order mentioned. Another output of the entropy decoder 150 is connected to a predictor 156, which in turn is connected between the output of the adder 154 and its other input. Entropy decoder 150 extracts from the data stream entering the decoder of FIG. 5 at input 158, transform coefficient blocks, with an inverse transform applied to the transform coefficient blocks in stage 152 to produce a remainder signal. The residual signal is combined with the prediction from predictor 156 in adder 154 to produce a reconstructed block of the reconstructed version of the bin array at output 160. Based on the reconstructed versions, predictor 156 generates predictions, thereby reconstructing the predictions performed by encoder-side predictor 106. To obtain the same predictions as those used on the encoder side, predictor 156 uses prediction parameters that entropy decoder 150 also receives from the data stream at input 158.

Необходимо отметить, что в вышеописанных вариантах осуществления пространственная степень разбиения, с которой выполняется предсказание и преобразование остатка, не должна быть равной друг другу. Это показано на фиг. 2C. Эта фигура изображает подразделение для блоков предсказания степени разбиения предсказания сплошными линиями и степень разбиения остатка - пунктирными линиями. Как можно видеть, подразделения могут выбираться кодером независимо друг от друга. Более точно, синтаксис потока данных может учитывать определение подразделения остатка независимо от подразделения предсказания. Альтернативно, подразделение остатка может представлять собой расширение подразделения предсказания, так что каждый блок остатка или равен блоку предсказания или представляет собой надлежащее подмножество его. Это показано на фиг. 2a и фиг. 2b, например, где снова степень разбиения предсказания показана сплошными линиями и степень разбиения остатка - пунктирными линиями. Т.е. на фиг. 2a-2c все блоки, имеющие ссылочную позицию, ассоциированную с ними, будут блоками остатка, для которых будет выполняться одно двумерное преобразование, тогда как блоки со сплошными линиями большего размера, охватывающие блоки 40a с пунктирными линиями, например, будут блоками предсказания, для которых установка параметров предсказания выполняется индивидуально.It should be noted that in the above-described embodiments, the spatial degree of partitioning with which prediction and transformation of the remainder are performed need not be equal to each other. This is shown in Fig. 2C. This figure depicts the subdivision for prediction blocks of the degree of prediction partitioning with solid lines and the degree of partitioning of the remainder with dashed lines. As can be seen, the divisions can be selected independently of each other by the encoder. More precisely, the data flow syntax may respect the definition of the remainder division independently of the prediction division. Alternatively, the remainder division may be an extension of the prediction division such that each residue block is either equal to or a proper subset of the prediction block. This is shown in Fig. 2a and fig. 2b, for example, where again the degree of prediction partitioning is shown by solid lines and the degree of partitioning of the remainder by dotted lines. Those. in fig. 2a-2c, all blocks having a reference position associated with them will be residual blocks for which one 2D transform will be performed, while larger solid line blocks enclosing dotted line blocks 40a, for example, will be prediction blocks for which Prediction parameters are set individually.

Вышеупомянутые варианты осуществления имеют в общем то, что блок (элементов дискретизации остатка или исходных элементов дискретизации) должен преобразовываться на стороне кодера в блок коэффициентов преобразования, который, в свою очередь, должен обратно преобразовываться в восстановленный блок элементов дискретизации на стороне декодера. Это изображено на фиг. 6. Фиг. 6 изображает блок 200 элементов дискретизации. В случае фиг. 6, этот блок 200 в качестве примера является квадратным и имеет 4×4 элементов 202 дискретизации в размере. Элементы 202 дискретизации регулярно располагаются по горизонтальному направлению x и по вертикальному направлению y. Посредством вышеупомянутого двумерного преобразования T, блок 200 преобразуется в спектральную область, а именно, в блок 204 коэффициентов 206 преобразования, причем блок 204 преобразования имеет такой же размер, что и блок 200. Т.е. блок 204 преобразования имеет столько коэффициентов 206 преобразования, сколько блок 200 имеет элементов дискретизации как в горизонтальном направлении, так и вертикальном направлении. Однако так как преобразование T представляет собой спектральное преобразование, позиции коэффициентов 206 преобразования в блоке 204 преобразования не соответствуют пространственным позициям, но скорее спектральным составляющим содержимого блока 200. В частности, горизонтальная ось блока 204 преобразования соответствует оси, вдоль которой спектральная частота в горизонтальном направлении монотонно увеличивается, в то время как вертикальная ось соответствует оси, вдоль которой пространственная частота в вертикальном направлении монотонно увеличивается, причем коэффициент преобразования составляющей постоянного тока (DC) располагается в углу - здесь, в качестве примера, верхний левый угол - блока 204, так что в нижнем правом углу располагается коэффициент 206 преобразования, соответствующий наибольшей частоте как в горизонтальном, так и в вертикальном направлении. Пренебрегая пространственным направлением, пространственная частота, к которой принадлежит некоторый коэффициент 206 преобразования, как правило увеличивается от верхнего левого угла к нижнему правому углу. Посредством обратного преобразования T-1, блок 204 преобразования переносится из спектральной области в пространственную область, чтобы повторно получить копию 208 блока 200. В случае отсутствия введения потерь квантования при преобразовании, восстановление будет совершенным.The above embodiments have in general that a block (of residual bins or original bins) must be converted at the encoder side into a block of transform coefficients, which in turn must be converted back into a reconstructed block of bins at the decoder side. This is shown in FIG. 6. Fig. 6 depicts a block 200 of bins. In the case of FIG. 6, this example block 200 is square and has 4×4 sampling elements 202 in size. The sampling elements 202 are regularly arranged along the horizontal x direction and vertical y direction. Through the above two-dimensional transform T, the block 200 is transformed into the spectral domain, namely, into a block 204 of transform coefficients 206, the transform block 204 having the same size as the block 200. That is, the transform block 204 has as many transform coefficients 206 as the block 200 has bins in both the horizontal direction and the vertical direction. However, since the transform T is a spectral transform, the positions of the transform coefficients 206 in the transform block 204 do not correspond to spatial positions, but rather to the spectral components of the contents of the block 200. In particular, the horizontal axis of the transform block 204 corresponds to the axis along which the spectral frequency in the horizontal direction monotonically increases, while the vertical axis corresponds to the axis along which the spatial frequency in the vertical direction increases monotonically, with the conversion coefficient of the direct current (DC) component located in the corner - here, as an example, the upper left corner - of block 204, so that in In the lower right corner is a conversion factor 206 corresponding to the highest frequency in both the horizontal and vertical directions. Neglecting spatial direction, the spatial frequency to which a certain transform coefficient 206 belongs generally increases from the upper left corner to the lower right corner. By inversely transforming T -1 , transform block 204 is transferred from the spectral domain to the spatial domain to reacquire a copy 208 of block 200. In the absence of introducing quantization loss in the transform, the reconstruction will be perfect.

Как уже отмечено выше, можно видеть на фиг. 6, что большие размеры блока у блока 200 увеличивают спектральное разрешение результирующего спектрального представления 204. С другой стороны, шум квантования стремится распространиться по всему блоку 208, и, таким образом, резкие и очень локализованные объекты в блоках 200 стремятся привести к отклонениям повторно преобразованного блока относительно исходного блока 200 из-за шума квантования. Главным преимуществом использования больших блоков является, однако, то, что отношение между количеством значимых, т.е. ненулевых (квантованных) коэффициентов преобразования, т.е. уровней, с одной стороны, и количеством незначимых коэффициентов преобразования, с другой стороны, может уменьшаться в больших блоках по сравнению с меньшими блоками, тем самым позволяя получить лучшую эффективность кодирования. Другими словами, часто значимые уровни коэффициентов преобразования, т.е. коэффициенты преобразования, не квантованные в нуль, редко распределяются по блоку 204 преобразования. Вследствие этого, согласно вариантам осуществления, описанным более подробно ниже, позиции значимых уровней коэффициентов преобразования сигнализируются в потоке данных посредством карты значимостей. Отдельно от нее, значения значимого коэффициента преобразования, т.е. уровней коэффициентов преобразования в случае, когда коэффициенты преобразования квантуются, передаются в потоке данных.As noted above, it can be seen in FIG. 6 that the larger block sizes of block 200 increase the spectral resolution of the resulting spectral representation 204. On the other hand, quantization noise tends to propagate throughout block 208, and thus sharp and highly localized objects in blocks 200 tend to cause deviations in the re-converted block relative to the original block 200 due to quantization noise. The main advantage of using large blocks, however, is that the ratio between the number of significant ones, i.e. non-zero (quantized) conversion coefficients, i.e. levels on the one hand, and the number of insignificant transform coefficients on the other hand, can be reduced in larger blocks compared to smaller blocks, thereby allowing better coding efficiency to be obtained. In other words, often significant levels of conversion coefficients, i.e. transform coefficients not quantized to zero are rarely distributed across transform block 204. Consequently, according to embodiments described in more detail below, the positions of significant levels of transform coefficients are signaled in the data stream by means of a significance map. Separately from it, the values of the significant conversion coefficient, i.e. levels of conversion coefficients in the case when the conversion coefficients are quantized and transmitted in the data stream.

Все кодеры и декодеры, описанные выше, таким образом, выполнены с возможностью работы с некоторым синтаксисом синтаксических элементов. Т.е. вышеупомянутые синтаксические элементы, такие как уровни коэффициентов преобразования, синтаксические элементы, касающиеся карты значимостей блоков преобразования, синтаксические элементы данных движения, касающиеся блоков внешнего предсказания, и т.п., как предполагается, располагаются последовательно в потоке данных заданным образом. Такой заданный образ может представляться в виде псевдокода, как, например, сделано в стандарте H.264 или других видеокодеках.All encoders and decoders described above are thus configured to operate with some syntax of syntax elements. Those. the above-mentioned syntax elements such as transform coefficient levels, syntax elements relating to the significance map of transform blocks, motion data syntax elements relating to inter prediction blocks, and the like are assumed to be arranged sequentially in the data stream in a predetermined manner. Such a given image can be represented as pseudocode, as, for example, is done in the H.264 standard or other video codecs.

Другими словами, вышеупомянутое описание, имеющее дело главным образом с преобразованием мультимедийных данных, здесь, в качестве примера, видеоданные, в последовательность синтаксических элементов в соответствии с предварительно определенной синтаксической структурой, задающей некоторые типы синтаксических элементов, его семантикой и порядком среди них. Энтропийный кодер и энтропийный декодер по фиг. 4 и 5 может быть выполнен с возможностью работы, и может быть структурирован, как кратко изложено ниже. Они отвечают за выполнение преобразования между последовательностью синтаксических элементов и потоком данных, т.е. потоком символов или битов.In other words, the above description deals primarily with the transformation of multimedia data, here video data as an example, into a sequence of syntactic elements in accordance with a predefined syntactic structure specifying certain types of syntactic elements, its semantics and the order among them. The entropy encoder and entropy decoder of FIG. 4 and 5 may be operable, and may be structured as summarized below. They are responsible for performing the transformation between a sequence of syntax elements and a data stream, i.e. a stream of characters or bits.

Энтропийный кодер согласно варианту осуществления изображен на фиг. 7. Кодер без потерь преобразует поток синтаксических элементов 301 в множество из двух или более частичных битовых потоков 312.An entropy encoder according to an embodiment is shown in FIG. 7. The lossless encoder converts the syntax element stream 301 into a plurality of two or more partial bit streams 312.

В предпочтительном варианте осуществления изобретения каждый синтаксический элемент 301 ассоциируется с категорией множества из одной или нескольких категорий, т.е. типом синтаксического элемента. В качестве примера, категории могут задавать тип синтаксического элемента. В контексте гибридного видеокодирования отдельная категория может ассоциироваться с режимами кодирования макроблоков, режимами кодирования блоков, индексами опорного изображения, разностями векторов движения, флагами подразделения, флагами кодированного блока, параметрами квантования, уровнями коэффициентов преобразования и т.д. В других областях применения, таких как аудио, речь, текст, документ или обычное кодирование данных, возможны разные категоризации синтаксических элементов.In a preferred embodiment of the invention, each syntax element 301 is associated with a category of a set of one or more categories, i.e. type of syntactic element. As an example, categories can specify the type of syntactic element. In the context of hybrid video coding, a separate category may be associated with macroblock coding modes, block coding modes, reference picture indices, motion vector differences, subdivision flags, coded block flags, quantization parameters, transform coefficient levels, etc. In other application domains, such as audio, speech, text, document, or general data encoding, different categorizations of syntactic elements are possible.

Обычно, каждый синтаксический элемент может принимать значение конечного или счетно-бесконечного множества значений, где множество возможных значений синтаксического элемента может различаться для разных категорий синтаксических элементов. Например, имеются двоичные синтаксические элементы, а также целочисленные.Typically, each syntactic element can take on a finite or countably infinite set of values, where the set of possible values for a syntactic element may vary for different categories of syntactic elements. For example, there are binary syntax elements as well as integer ones.

Для уменьшения сложности алгоритма кодирования и декодирования и для предоставления возможности общей разработки кодирования и декодирования для разных синтаксических элементов и категорий синтаксических элементов, синтаксические элементы 301 преобразуются в упорядоченные множества двоичных решений, и эти двоичные решения затем обрабатываются простыми алгоритмами двоичного кодирования. Поэтому, бинаризатор 302 биективно (взаимно-однозначно) отображает значение каждого синтаксического элемента 301 на последовательность (или строку или слово) бинов 303. Последовательность бинов 303 представляет множество упорядоченных двоичных решений. Каждый бин 303 или двоичное решение может принимать одно значение из множества из двух значений, например, одно из значений 0 и 1. Схема бинаризации может быть разной для разных категорий синтаксических элементов. Схема бинаризации для конкретной категории синтаксических элементов может зависеть от множества возможных значений синтаксических элемента и/или других свойств синтаксического элемента для конкретной категории.To reduce the complexity of the encoding and decoding algorithm and to enable general encoding and decoding design for different syntax elements and categories of syntax elements, syntax elements 301 are converted into ordered sets of binary solutions, and these binary solutions are then processed by simple binary encoding algorithms. Therefore, binarizer 302 bijectively (one-to-one) maps the value of each syntax element 301 to a sequence (either string or word) of bins 303. The sequence of bins 303 represents a set of ordered binary solutions. Each bin 303 or binary decision may take one value from a set of two values, for example, one of the values 0 and 1. The binarization scheme may be different for different categories of syntactic elements. The binarization scheme for a particular category of syntactic elements may depend on the set of possible values of the syntactic element and/or other properties of the syntactic element for a particular category.

Таблица 1 иллюстрирует три примерные схемы бинаризации для счетно-бесконечных множеств. Схемы бинаризации для счетно-бесконечных множеств также могут применимы для конечных множеств значений синтаксических элементов. В частности для больших конечных множеств значений синтаксических элементов может быть незначительной неэффективность (являющаяся результатом неиспользованных последовательностей бинов), но универсальность таких схем бинаризации обеспечивает преимущество в смысле сложности и требований к памяти. Для малых конечных множеств значений синтаксических элементов часто бывает предпочтительным (в смысле эффективности кодирования) адаптировать схему бинаризации к количеству возможных значений символов.Table 1 illustrates three example binarization schemes for countably infinite sets. Binarization schemes for countably infinite sets can also be applied to finite sets of values of syntactic elements. Particularly for large finite sets of syntactic element values, there may be little inefficiency (resulting from unused bin sequences), but the generality of such binarization schemes provides an advantage in terms of complexity and memory requirements. For small finite sets of syntactic element values, it is often preferable (in terms of encoding efficiency) to adapt the binarization scheme to the number of possible symbol values.

Таблица 2 иллюстрирует три примерные схемы бинаризации для конечных множеств из 8 значений. Схемы бинаризации для конечных множеств могут быть выведены из универсальных схем бинаризации для счетно-бесконечных множеств посредством модифицирования некоторых последовательностей бинов таким образом, что конечные множества последовательностей бинов представляют код без избыточности (и потенциально переупорядочение последовательностей бинов). В качестве примера, схема усеченной унарной бинаризации в таблице 2 была создана посредством модифицирования последовательности бинов для синтаксического элемента 7 универсальной унарной бинаризации (см. таблицу 1). Усеченная и переупорядоченная экспоненциальная бинаризация Голомба порядка 0 в таблице 2 была создана посредством модифицирования последовательности бинов для синтаксического элемента 7 универсальной экспоненциальной бинаризации Голомба порядка 0 (см. таблица 1) и посредством переупорядочения последовательностей бинов (усеченная последовательность бинов для символа 7 была назначена символу 1). Для конечных множеств синтаксических элементов также возможно использование несистематических/неуниверсальных схем бинаризации, как приведено в качестве примера в последнем столбце таблицы 2.Table 2 illustrates three example binarization schemes for finite sets of 8 values. Binarization schemes for finite sets can be derived from universal binarization schemes for countably infinite sets by modifying some sequences of bins such that finite sets of sequences of bins represent code without redundancy (and potentially a reordering of the sequences of bins). As an example, the truncated unary binarization scheme in Table 2 was created by modifying the sequence of bins for syntax element 7 of the universal unary binarization (see Table 1). The truncated and reordered Golomb exponential binarization of order 0 in Table 2 was created by modifying the bin sequence for syntax element 7 of the universal exponential Golomb binarization of order 0 (see Table 1) and by reordering the bin sequences (the truncated bin sequence for character 7 was assigned to character 1) . For finite sets of syntactic elements, it is also possible to use non-systematic/non-universal binarization schemes, as exemplified in the last column of Table 2.

Каждый бин 303 последовательности бинов, создаваемых бинаризатором 302, подается в средство 304 назначения параметра в последовательном порядке. Средство назначения параметра назначает множество из одного или нескольких параметров каждому бину 303 и выводит бин с ассоциированным множеством параметров 305. Множество параметров определяется точно одинаковым образом в кодере и декодере. Множество параметров может состоять из одного или нескольких из следующих параметров:Each bin 303 of the sequence of bins produced by the binarizer 302 is supplied to the parameter assigner 304 in sequential order. The parameter assigner assigns a set of one or more parameters to each bin 303 and outputs a bin with an associated set of parameters 305. The set of parameters is determined in exactly the same way in the encoder and decoder. The set of parameters may consist of one or more of the following parameters:

В частности, средство 304 назначения параметра может быть выполнено с возможностью назначения текущему бину 303 контекстной модели. Например, средство 304 назначения параметра может выбирать один из доступных индексов контекста для текущего бина 303. Доступное множество контекстов для текущего бина 303 может зависеть от типа бина, который, в свою очередь, может определяться типом/категорией синтаксического элемента 301, бинаризация какого текущего бина 303 является частью и позицией текущего бина 303 в последней бинаризации. Выбор контекста из числа доступного множества контекстов может зависеть от предыдущих бинов и синтаксических элементов, ассоциированных с последним. Каждый из этих контекстов имеет вероятностную модель, ассоциированную с ним, т.е. меру для оценки вероятности для одного из двух возможных значений бина для текущего бина. Вероятностная модель, в частности, может представлять собой меру для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина, причем вероятностная модель дополнительно определяется идентификатором, задающим оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего бина 303. В случае, когда доступен только один контекст для текущего бина, может быть исключен выбор контекста. Как более подробно изложено ниже, средство 304 назначения параметра также может выполнять адаптацию вероятностной модели, чтобы адаптировать вероятностные модели, ассоциированные с различными контекстами, с фактической статистикой бинов соответствующих бинов, принадлежащих соответствующим контекстам.In particular, the parameter assigner 304 may be configured to assign the current bean 303 a context model. For example, the parameter assigner 304 may select one of the available context indexes for the current bean 303. The available set of contexts for the current bean 303 may depend on the type of the bean, which in turn may be determined by the type/category of the syntax element 301 that the current bean is binarizing. 303 is the part and position of the current bin 303 in the last binarization. The choice of context from among the available set of contexts may depend on previous bins and syntactic elements associated with the latter. Each of these contexts has a probabilistic model associated with it, i.e. a measure to estimate the probability for one of two possible bin values for the current bin. The probabilistic model, in particular, may be a measure for estimating the probability of a less likely or more likely bin value for the current bin, wherein the probabilistic model is further defined by an identifier specifying an estimate of which of two possible bin values represents the less likely or more likely bin value for current bean 303. In the case where only one context is available for the current bean, context selection may be omitted. As discussed in more detail below, the parameter assigner 304 may also perform probabilistic model adaptation to adapt the probabilistic models associated with various contexts with the actual bin statistics of the corresponding bins belonging to the respective contexts.

Как также более подробно описано ниже, средство 304 назначения параметра может работать по-разному в зависимости от активизированного режима высокой эффективности (HE) или режима низкой сложности (LC). В обоих режимах вероятностная модель ассоциирует текущий бин 303 с любым из кодеров 310 бина, как изложено ниже, но режим работы средства 304 назначения параметра стремится быть менее сложным в режиме LC, причем, однако, эффективность кодирования повышается в режиме высокой эффективности из-за того, что средство 304 назначения параметра вызывает более точную адаптацию ассоциирования индивидуальных бинов 310 с индивидуальными кодерами 310 со статистикой бинов, тем самым оптимизируя энтропию относительно режима LC.As also described in more detail below, the parameter assigner 304 may operate differently depending on whether the High Efficiency (HE) mode or the Low Complexity (LC) mode is activated. In both modes, the probabilistic model associates the current bin 303 with any of the bin encoders 310, as set forth below, but the mode of operation of the parameter assigner 304 tends to be less complex in the LC mode, however, the encoding efficiency is improved in the high efficiency mode because that the parameter assigner 304 causes the association of individual bins 310 with individual encoders 310 to be more accurately adapted to the bin statistics, thereby optimizing entropy relative to the LC mode.

Каждый бин с ассоциированным множеством параметров 305, который представляет собой выходной результат средства 304 назначения параметра, подается в селектор 306 буфера бинов. Селектор 306 буфера бинов потенциально модифицирует значение введенного бина 305, основываясь на значении введенного бина и ассоциированных параметрах 305, и подает выводимый бин 307 - с потенциально модифицированным значением - в один из двух или более буферов 308 бинов. Буфер 308 бинов, на который посылается выводимый бин 307, определяется на основе значения вводимого бина 305 и/или значения ассоциированных параметров 305.Each bin with an associated set of parameters 305, which is the output of the parameter assigner 304, is supplied to a bin buffer selector 306. The bin buffer selector 306 potentially modifies the value of the input bin 305 based on the value of the input bin and associated parameters 305, and supplies the output bin 307—with the potentially modified value—to one of two or more bin buffers 308. The bin buffer 308 to which output bin 307 is sent is determined based on the value of input bin 305 and/or the value of associated parameters 305.

В предпочтительном варианте осуществления изобретения селектор 306 буфера бинов не модифицирует значение бина, т.е. выводимый бин 307 всегда имеет одно и тоже значение, что и вводимый бин 305. В другом предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет значение 307 выводимого бина, основываясь на значении 305 вводимого бина и ассоциированной мере для оценки вероятности для одного из двух возможных значений бина для текущего бина. В предпочтительном варианте осуществления изобретения значение 307 выводимого бина устанавливается равным значению 305 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего бина меньше (или меньше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего бина больше или равна (или больше) конкретного порога, значение 307 выводимого бина модифицируется (т.е. устанавливается на противоположное значение значению вводимого бина). В другом предпочтительном варианте осуществления изобретения значение 307 выводимого бина устанавливается равным значению 305 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего бина больше (или больше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего бина меньше или равна (или меньше) конкретному порогу, значение 307 выводимого бина модифицируется (т.е. устанавливается на противоположное значение значению вводимого бина). В предпочтительном варианте осуществления изобретения значение порога соответствует значению 0,5 для оцененной вероятности для обоих возможных значений бина.In the preferred embodiment of the invention, the bin buffer selector 306 does not modify the value of the bin, i.e. the output bin 307 always has the same value as the input bin 305. In another preferred embodiment of the invention, the bin buffer selector 306 determines the output bin value 307 based on the input bin value 305 and the associated probability estimate for one of the two possible values. bin for the current bin. In a preferred embodiment of the invention, the output bin value 307 is set equal to the input bin value 305 if the measure for the probability for one of the two possible bin values for the current bin is less than (or less than or equal to) a particular threshold; if the measure for the probability for one of the two possible bin values for the current bin is greater than or equal to (or greater than) a particular threshold, the output bin value 307 is modified (ie, set to the opposite value of the input bin value). In another preferred embodiment of the invention, the output bin value 307 is set equal to the input bin value 305 if the measure for the probability for one of the two possible bin values for the current bin is greater than (or greater than or equal to) a particular threshold; if the measure for the probability for one of the two possible bin values for the current bin is less than or equal to (or less than) a particular threshold, the output bin value 307 is modified (ie, set to the opposite value of the input bin value). In a preferred embodiment of the invention, the threshold value corresponds to a value of 0.5 for the estimated probability for both possible bin values.

В другом предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет значение 307 выводимого бина, основываясь на значении 305 вводимого бина и ассоциированном идентификаторе, задающим оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего бина. В предпочтительном варианте осуществления изобретения значение 307 выводимого бина устанавливается равным значению 305 вводимого бина, если идентификатор задает, что первое из двух возможных значений бина представляет менее вероятное (или более вероятное) значение бина для текущего бина, и значение 307 выводимого бина модифицируется (т.е. устанавливается на противоположное значение значению вводимого бина), если идентификатор задает, что второе из двух возможных значений бина представляет менее вероятное (или более вероятное) значение бина для текущего бина.In another preferred embodiment of the invention, the bin buffer selector 306 determines the output bin value 307 based on the input bin value 305 and an associated identifier specifying an estimate of which of two possible bin values represents the less likely or more likely bin value for the current bin. In a preferred embodiment of the invention, the output bin value 307 is set equal to the input bin value 305 if the identifier specifies that the first of two possible bin values represents a less likely (or more likely) bin value for the current bin, and the output bin value 307 is modified (i.e., e. is set to the opposite value of the input bin's value) if the identifier specifies that the second of two possible bin values represents the less likely (or more likely) bin value for the current bin.

В предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет буфер 308 бинов, на который посылается выводимый бин 307, основываясь на ассоциированной мере для оценки вероятности для одного из двух возможных значений бина для текущего бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для одного из двух возможных значений бина является конечным, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением для оценки вероятности для одного из двух возможных значений бина, где разные значения для меры для оценки вероятности для одного из двух возможных значений бина могут ассоциироваться с одним и тем же буфером 308 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для одного из двух возможных значений бина разделяется на несколько интервалов, селектор 306 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для одного из двух возможных значений бина, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 308 бинов. В предпочтительном варианте осуществления изобретения вводимые бины 305 с противоположными мерами для оценки вероятности для одного из двух возможных значений бина (противоположной мерой являются те, которые представляют оценки P и 1-P вероятности) подаются в один и тот же буфер 308 бинов. В другом предпочтительном варианте осуществления изобретения ассоциирование меры для оценки вероятности для одного из двух возможных значений бина для текущего бина с конкретным буфером бинов адаптируется во времени, например, чтобы гарантировать, что созданные частичные битовые потоки имеют подобные скорости передачи битов. Кроме того, индекс интервала также называется индексом pipe (энтропия разделения интервала вероятности), тогда как индекс pipe вместе с индексом уточнения, и флаг, указывающий более вероятное значение бина, индексирует фактическую вероятностную модель, т.е. оценку вероятности.In a preferred embodiment of the invention, bin buffer selector 306 determines bin buffer 308 to which output bin 307 is sent based on an associated measure for estimating the probability for one of two possible bin values for the current bin. In a preferred embodiment of the invention, the set of possible values for the probability estimate measure for one of the two possible bin values is finite, and the bin buffer selector 306 contains a table that associates exactly one bin buffer 308 with each possible probability estimate value for one of the two possible values. bin values, where different values for the probability estimate measure for one of two possible bin values may be associated with the same bin buffer 308. In another preferred embodiment of the invention, the range of possible values for the probability measure for one of two possible bin values is divided into several bins, the bin buffer selector 306 determines the bin index for the current probability measure for one of the two possible bin values, and the selector 306 The bin buffer contains a table that associates exactly one bin buffer 308 with each possible value for the bin index, where different values for the bin index may be associated with the same bin buffer 308. In a preferred embodiment of the invention, the input bins 305 with opposing measures for estimating the probability for one of two possible bin values (the opposing measures being those representing P and 1-P probability estimates) are fed into the same bin buffer 308. In another preferred embodiment of the invention, associating a measure for estimating the probability for one of two possible bin values for the current bin with a particular bin buffer is time-adapted, for example, to ensure that the generated partial bitstreams have similar bit rates. In addition, the interval index is also called the pipe index (entropy of division of the probability interval), while the pipe index, together with the refinement index, and the flag indicating the more likely value of the bin, indexes the actual probability model, i.e. probability assessment.

В другом предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет буфер 308 бинов, на который посылается выводимый бин 307, основываясь на ассоциированной мере для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина является конечным, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением оценки вероятности для менее вероятного или более вероятного значения бина, где разные значения для меры для оценки вероятности для менее вероятного или более вероятного значения бина могут ассоциироваться с одним и тем же буфером 308 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина разделяется на несколько интервалов, селектор 306 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для менее вероятного или более вероятного значения бина, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 308 бинов. В другом предпочтительном варианте осуществления ассоциирование меры для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина с конкретным буфером бинов адаптируется во времени, например, чтобы гарантировать, что создаваемые частичные битовые потоки имеют подобные скорости передачи битов.In another preferred embodiment of the invention, bin buffer selector 306 determines bin buffer 308 to which output bin 307 is sent based on an associated measure for estimating the likelihood of a less likely or more likely bin value for the current bin. In a preferred embodiment of the invention, the set of possible values for the probability estimate measure for a less likely or more likely bin value is finite, and the bin buffer selector 306 contains a table that associates exactly one bin buffer 308 with each possible probability estimate value for the less likely or more likely value. probable bin value, where different values for the probability measure for a less likely or more likely bin value may be associated with the same bin buffer 308. In another preferred embodiment of the invention, the range of possible values for the probability measure for a less likely or more likely bin value is divided into several bins, the bin buffer selector 306 determines the bin index for the current probability measure for the less likely or more likely bin value, and The bin buffer selector 306 contains a table that associates exactly one bin buffer 308 with each possible value for the bin index, where different values for the bin index may be associated with the same bin buffer 308. In another preferred embodiment, associating a measure for estimating the probability of a less likely or more likely bin value for the current bin with a particular bin buffer is time-adapted, for example, to ensure that the partial bitstreams produced have similar bit rates.

Каждый из двух или более буферов 308 бинов соединен с точно одним кодером 310 бинов, и каждый кодер бинов соединен только с одним буфером 308 бинов. Каждый кодер 310 бинов считывает бины из ассоциированного буфера 308 бинов и преобразует последовательность бинов 309 в кодовое слово 311, которое представляет последовательность битов. Буферы 308 бинов представляют буферы «первым пришел - первым обслужен»; бины, которые подаются позже (в последовательном порядке) в буфер 308 бинов, не кодируются перед бинами, которые подаются ранее (в последовательном порядке) в буфер бинов. Кодовые слова 311, которые представляют собой выходной результат конкретного кодера 310 бинов, записываются в конкретный частичный битовый поток 312. Общий алгоритм кодирования преобразует синтаксические элементы 301 в два или более частичных битовых потока 312, где количество частичных битовых потоков равно количеству буферов бинов и кодеров бинов. В предпочтительном варианте осуществления изобретения кодер 310 бинов преобразует изменяемое количество бинов 309 в кодовое слово 311 с изменяемым количеством битов. Одним преимуществом вышеупомянутых и ниже кратко изложенных вариантов осуществления изобретения является то, что кодирование бинов может выполняться параллельно (например, для разных групп мер вероятности), что уменьшает время обработки для нескольких реализаций.Each of two or more bin buffers 308 is connected to exactly one bin encoder 310, and each bin encoder is connected to exactly one bin buffer 308. Each bin encoder 310 reads bins from an associated bin buffer 308 and converts the sequence of bins 309 into a codeword 311 that represents the sequence of bits. Bin buffers 308 represent first-in, first-out buffers; bins that are fed later (in sequential order) into bin buffer 308 are not encoded before bins that are fed earlier (in sequential order) into the bin buffer. Codewords 311, which are the output of a particular bin encoder 310, are written to a particular partial bitstream 312. The general encoding algorithm converts syntax elements 301 into two or more partial bitstreams 312, where the number of partial bitstreams is equal to the number of bin buffers and bin encoders . In a preferred embodiment of the invention, bin encoder 310 converts the variable number of bins 309 into a variable number of bits codeword 311. One advantage of the above and below summarized embodiments of the invention is that bin encoding can be performed in parallel (eg, for different groups of probability measures), which reduces processing time for multiple implementations.

Другим преимуществом вариантов осуществления изобретения является то, что кодирование бинов, которое выполняется кодерами 310 бинов, может быть конкретно разработано для разных множеств параметров 305. В частности, кодирование бинов и кодирование могут быть оптимизированы (в смысле эффективности и/или сложности кодирования) для разных групп оцененных вероятностей. С одной стороны, это предоставляет возможность уменьшить сложность кодирования/декодирования, и, с другой стороны, это позволяет получить повышение эффективности кодирования. В предпочтительном варианте осуществления изобретения кодеры 310 бинов реализуют разные алгоритмы кодирования (т.е. отображение последовательностей бинов в кодовые слова) для разных групп мер для оценки вероятности для одного из двух возможных значений 305 бина для текущего бина. В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов реализуют разные алгоритмы кодирования для разных групп мер для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина.Another advantage of embodiments of the invention is that the bin encoding that is performed by the bin encoders 310 can be specifically designed for different parameter sets 305. In particular, the bin encoding and encoding can be optimized (in terms of encoding efficiency and/or complexity) for different groups of estimated probabilities. On the one hand, this makes it possible to reduce the complexity of encoding/decoding, and on the other hand, it makes it possible to obtain an increase in encoding efficiency. In a preferred embodiment of the invention, bin encoders 310 implement different encoding algorithms (ie, mapping sequences of bins to codewords) for different groups of measures to estimate the probability for one of two possible bin values 305 for the current bin. In another preferred embodiment of the invention, bin encoders 310 implement different encoding algorithms for different groups of measures to estimate the probability for a less likely or more likely bin value for the current bin.

В предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности вводимых бинов 309 в кодовые слова 310. Такое отображение может быть эффективно реализовано и не требует сложного механизма арифметического кодирования. Обратное отображение кодовых слов в последовательности бинов (что выполняется в декодере) должно быть уникальным, чтобы гарантировать совершенное декодирование вводимой последовательности, но отображение последовательностей 309 бинов в кодовые слова 310 необязательно должно быть уникальным, т.е. возможно, что конкретная последовательность бинов может отображаться на более чем одну последовательность кодовых слов. В предпочтительном варианте осуществления изобретения отображение последовательностей вводимых бинов 309 в кодовые слова 310 является биективным. В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности переменной длины вводимых бинов 309 в кодовые слова 310 переменной длины. В предпочтительном варианте осуществления изобретения выводимые кодовые слова представляют коды без избыточности, такие как общие коды Хаффмана или канонические коды Хаффмана.In a preferred embodiment of the invention, bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map sequences of input bins 309 to codewords 310. Such mapping can be implemented efficiently and does not require a complex arithmetic encoding mechanism. The reverse mapping of codewords to a sequence of bins (which is done at the decoder) must be unique to ensure perfect decoding of the input sequence, but the mapping of bin sequences 309 to codewords 310 need not be unique, i.e. it is possible that a particular sequence of bins may map to more than one sequence of codewords. In a preferred embodiment of the invention, the mapping of sequences of input bins 309 to codewords 310 is bijective. In another preferred embodiment of the invention, bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map variable-length sequences of input bins 309 to variable-length codewords 310. In a preferred embodiment of the invention, the output codewords represent non-redundancy codes, such as general Huffman codes or canonical Huffman codes.

В таблице 3 изображены два примера для биективного отображения последовательностей бинов в коды без избыточности. В другом предпочтительном варианте осуществления изобретения выводимые кодовые слова представляют избыточные коды, пригодные для обнаружения ошибок и восстановления при ошибках. В другом предпочтительном варианте осуществления изобретения выводимые кодовые слова представляют коды шифрования, пригодные для шифрования синтаксических элементов.Table 3 shows two examples for bijectively mapping sequences of bins into codes without redundancy. In another preferred embodiment of the invention, the output codewords represent redundant codes useful for error detection and error recovery. In another preferred embodiment of the invention, the output codewords represent encryption codes suitable for encrypting syntax elements.

В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности переменной длины вводимых бинов 309 в кодовые слова 310 фиксированной длины. В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности фиксированной длины вводимых бинов 309 в кодовые слова 310 переменной длины.In another preferred embodiment of the invention, bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map variable-length sequences of input bins 309 to fixed-length codewords 310. In another preferred embodiment of the invention, bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map fixed-length sequences of input bins 309 to variable-length codewords 310.

Декодер согласно варианту осуществления изобретения изображен на фиг. 8. Декодер выполняет, в основном, операции, обратные кодеру, так что (ранее кодированная) последовательность синтаксических элементов 327 декодируется из множества из двух или нескольких частичных битовых потоков 324. Декодер включает в себя два разных потока обработки: поток для запроса данных, который повторяет поток данных кодера, и поток данных, который представляет обратное потока данных кодера. На иллюстрации на фиг. 8 пунктирные стрелки представляют поток запросов данных, тогда как сплошные стрелки представляют поток данных. Стандартные блоки декодера, в основном, повторяют стандартные блоки кодера, но реализуют обратные операции.A decoder according to an embodiment of the invention is shown in FIG. 8. The decoder performs essentially the inverse of the encoder such that the (previously encoded) sequence of syntax elements 327 is decoded from a plurality of two or more partial bitstreams 324. The decoder includes two different processing threads: a thread for requesting data, which repeats the encoder data stream, and a data stream that represents the reverse of the encoder data stream. In the illustration in FIG. 8, the dotted arrows represent the data request flow, while the solid arrows represent the data flow. The decoder building blocks are basically the same as the encoder building blocks, but implement the reverse operations.

Декодирование синтаксического элемента запускается запросом нового декодируемого синтаксического элемента 313, который посылается на бинаризатор 314. В предпочтительном варианте осуществления изобретения каждый запрос нового декодируемого синтаксического элемента 313 ассоциируется с категорией множества из одной или нескольких категорий. Категория, которая ассоциируется с запросом синтаксического элемента, является той же, что и категория, которая была ассоциирована с соответствующим синтаксическим элементом во время кодирования.Decoding of a syntax element is triggered by a request for a new decodable syntax element 313, which is sent to the binarizer 314. In a preferred embodiment of the invention, each request for a new decodable syntax element 313 is associated with a category of the set of one or more categories. The category that is associated with a syntactic element query is the same as the category that was associated with the corresponding syntactic element at encoding time.

Бинаризатор 314 отображает запрос синтаксического элемента 313 на один или несколько запросов бина, которые посылаются на средство 316 назначения параметра. В качестве окончательного ответа на запрос бина, который посылается средству 316 назначения параметра бинаризатором 314, бинаризатор 314 принимает декодируемый бин 326 от селектора 318 буфера бинов. Бинаризатор 314 сравнивает принятую последовательность декодируемых бинов 326 с последовательностями бинов конкретной схемы бинаризации для запрашиваемого синтаксического элемента, и, если принятая последовательность декодируемых бинов 26 совпадает с бинаризацией синтаксического элемента, бинаризатор освобождает свой буфер бинов и выводит декодируемый синтаксический элемент в качестве окончательного ответа на запрос нового декодируемого символа. Если уже принятая последовательность декодируемых бинов не совпадает ни с какой из последовательностей бинов для схемы бинаризации для запрашиваемого синтаксического элемента, бинаризатор посылает другой запрос бина средству назначения параметра до тех пор, пока последовательность декодируемых бинов не будет совпадать с одной из последовательностей бинов схемы бинаризации для запрашиваемого синтаксического элемента. Для каждого запроса синтаксического элемента декодер использует одну и туже схему бинаризации, которая использовалась для кодирования соответствующего синтаксического элемента. Схема бинаризации может быть разной для разных категорий синтаксических элементов. Схема бинаризации для конкретной категории синтаксических элементов может зависеть от множества возможных значений синтаксического элемента и/или других свойств синтаксических элементов для конкретной категории.The binarizer 314 maps the request of the syntax element 313 to one or more bean requests that are sent to the parameter assigner 316. As a final response to the bean request that is sent to the parameter assigner 316 by the binarizer 314, the binarizer 314 receives the decoded bean 326 from the bean buffer selector 318. The binarizer 314 compares the received sequence of decodable bins 326 with the binarizations of a particular binarization scheme for the requested syntax element, and if the received sequence of decodable bins 26 matches the binarization of the syntax element, the binarizer frees its bin buffer and outputs the decodable syntax element as the final response to the request for a new one. decoded symbol. If the already received sequence of decodable bins does not match any of the bean sequences for the binarization scheme for the requested syntax element, the binarizer sends another bean request to the parameter assigner until the sequence of decoded bins matches one of the sequence of binarization schemes for the requested syntax element. syntactic element. For each syntax element request, the decoder uses the same binarization scheme that was used to encode the corresponding syntax element. The binarization scheme may be different for different categories of syntactic elements. The binarization scheme for a particular category of syntactic elements may depend on the set of possible meanings of the syntactic element and/or other properties of the syntactic elements for a particular category.

Средство 316 назначения параметра назначает множество из одного или нескольких параметров каждому запросу бина и посылает запрос бина с ассоциированным множеством параметров селектору буфера бинов. Множество параметров, которое назначается запрашиваемому бину средством назначения параметра, является тем же, которое было назначено соответствующему бину во время кодирования. Множество параметров может состоять из одного или нескольких параметров, которые упомянуты при описании кодера на фиг. 7.The parameter assigner 316 assigns a set of one or more parameters to each bean request and sends the bean request with the associated set of parameters to the bean buffer selector. The set of parameters that is assigned to the requested bean by the parameter assigner is the same one that was assigned to the corresponding bean during encoding. The plurality of parameters may be composed of one or more parameters that are mentioned in the description of the encoder in FIG. 7.

В предпочтительном варианте осуществления изобретения средство 316 назначения параметра ассоциирует каждый запрос бина с теми же параметрами, что и делало средство 304 назначения, т.е. контекст и его ассоциированная мера для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина, такую как мера для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина и идентификатор, задающий оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего запрашиваемого бина.In the preferred embodiment of the invention, the parameter assigner 316 associates each bean request with the same parameters as the assigner 304 did, i.e. context and its associated measure for estimating the probability for one of two possible bin values for the current queried bin, such as a measure for estimating the probability for the less likely or more likely bin value for the current queried bin, and an identifier specifying an estimate of which of the two possible bin values represents the less likely or more likely bin value for the currently requested bin.

Средство 316 назначения параметра может определять одну или несколько из вышеупомянутых мер вероятности (мера для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина, мера для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина, идентификатор, задающий оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего запрашиваемого бина), основываясь на множестве из одного или нескольких уже декодированных символов. Определение мер вероятности для конкретного запроса бина повторяет процесс в кодере для соответствующего бина. Декодированные символы, которые используются для определения мер вероятности, могут включать в себя один или несколько уже декодированных символов этой же категории символов, один или несколько уже декодированных символов этой же категории символов, которая соответствует множествам данных (таким как блоки или группы элементов дискретизации) соседних пространственных и/или временных расположений (в отношении множества данных, ассоциированного с текущим запросом синтаксического элемента), или один или несколько уже декодированных символов разных категорий символов, которые соответствуют множествам данных этого же и/или соседних пространственных и/или временных расположений (в отношении к множеству данных, ассоциированному с текущим запросом синтаксического элемента).The parameter assigner 316 may define one or more of the above probability measures (a measure for estimating the probability for one of two possible bin values for the current queried bin, a measure for estimating the probability for the less likely or more likely bin value for the current queried bin, an identifier specifying an estimate of which of two possible bin values represents the less likely or more likely bin value for the currently requested bin) based on a set of one or more symbols already decoded. Determining probability measures for a particular bin query repeats the process in the encoder for the corresponding bin. The decoded symbols that are used to determine the probability measures may include one or more already decoded symbols of the same symbol category, one or more already decoded symbols of the same symbol category that corresponds to data sets (such as blocks or bin groups) of adjacent spatial and/or temporal locations (with respect to the data set associated with the current syntactic element request), or one or more already decoded symbols of different symbol categories that correspond to data sets of the same and/or neighboring spatial and/or temporal locations (with respect to to the data set associated with the current syntax element request).

Каждый запрос бина с ассоциированным множеством параметров 317, который представляет собой выходной результат средство 316 назначения параметра, подается на селектор 318 буфера бинов. Основываясь на ассоциированном множестве параметров 317, селектор 318 буфера бинов посылает запрос бина 319 одному из двух или более буферов 320 бинов и принимает декодированный бин 325 от выбранного буфера 320 бинов. Декодированный вводимый бин 325 потенциально модифицируется, и декодированный выводимый бин 326 - с потенциально модифицированным значением - посылается на бинаризатор 314 в качестве окончательного ответа на запрос бина с ассоциированным множеством параметров 317.Each bean request with an associated set of parameters 317, which is the output of the parameter assigner 316, is supplied to a bean buffer selector 318. Based on the associated set of parameters 317, the bin buffer selector 318 sends a bin request 319 to one of two or more bin buffers 320 and receives a decoded bin 325 from the selected bin buffer 320. The decoded input bin 325 is potentially modified, and the decoded output bin 326—with the potentially modified value—is sent to binarizer 314 as a final response to the bean request with an associated set of parameters 317.

Буфер 320 бинов, на который направляется запрос бина, выбирается таким же образом, что и буфер бинов, на который был послан выводимый бин селектора буфера бинов на стороне кодера.The bin buffer 320 to which the bin request is sent is selected in the same manner as the bin buffer to which the encoder-side bin buffer selector output bin was sent.

В предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет буфер 320 бинов, на который посылается запрос бина 319, основываясь на ассоциированной мере для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для одного из двух возможных значений бина является конечным, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением оценки вероятности для одного из двух возможных значений бина, где разные значения для меры для оценки вероятности для одного из двух возможных значений бина могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для одного из двух возможных значений бина разделяется на несколько интервалов, селектор 318 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для одного из двух возможных значений бина, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 320 бинов. В предпочтительном варианте осуществления изобретения запросы бинов 317 с противоположными мерами для оценки вероятности для одного из двух возможных значений бина (противоположной мерой являются те, которые представляют оценки P и 1-P вероятности) направляются одному и тому же буферу 320 бинов. В другом предпочтительном варианте осуществления изобретения ассоциирование меры для оценки вероятности для одного из двух возможных значений бина для текущего запроса бина с конкретным буфером бинов адаптируется во времени.In a preferred embodiment of the invention, bin buffer selector 318 determines bin buffer 320 to which bin request 319 is sent based on an associated measure for estimating the probability for one of two possible bin values for the currently requested bin. In a preferred embodiment of the invention, the set of possible values for a probability estimate measure for one of the two possible bin values is finite, and the bin buffer selector 318 contains a table that associates exactly one bin buffer 320 with each possible probability estimate value for one of the two possible values. bin, where different values for the probability measure for one of two possible bin values may be associated with the same bin buffer 320. In another preferred embodiment of the invention, the range of possible values for the probability measure for one of two possible bin values is divided into several bins, the bin buffer selector 318 determines the bin index for the current probability measure for one of the two possible bin values, and the selector 318 The bin buffer contains a table that associates exactly one bin buffer 320 with each possible value for the bin index, where different values for the bin index can be associated with the same bin buffer 320. In a preferred embodiment of the invention, requests for bins 317 with opposing measures to estimate the probability for one of two possible bin values (the opposing measures being those representing P and 1-P probability estimates) are sent to the same bin buffer 320. In another preferred embodiment of the invention, associating a measure for estimating the probability for one of two possible bin values for the current bin request with a particular bin buffer is time-adapted.

В другом предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет буфер 320 бинов, на который посылается запрос бина 319, основываясь на ассоциированной мере для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина является конечным, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением оценки вероятности для менее вероятного или более вероятного значения бина, где разные значения для меры для оценки вероятности для менее вероятного или более вероятного значения бина могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина разделяется на несколько интервалов, селектор 318 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для менее вероятного или более вероятного значения бина, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения ассоциирование меры для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запроса бина с конкретным буфером бинов адаптируется во времени.In another preferred embodiment of the invention, bin buffer selector 318 determines bin buffer 320 to which bin request 319 is sent based on an associated measure for assessing the likelihood of a less likely or more likely bin value for the currently requested bin. In a preferred embodiment of the invention, the set of possible values for the probability estimate measure for a less likely or more likely bin value is finite, and the bin buffer selector 318 contains a table that associates exactly one bin buffer 320 with each possible probability estimate value for the less likely or more likely value. probable bin value, where different values for the probability measure for a less likely or more likely bin value may be associated with the same bin buffer 320. In another preferred embodiment of the invention, the range of possible values for the probability measure for a less likely or more likely bin value is divided into several bins, the bin buffer selector 318 determines the bin index for the current probability measure for the less likely or more likely bin value, and The bin buffer selector 318 contains a table that associates exactly one bin buffer 320 with each possible value for the bin index, where different values for the bin index may be associated with the same bin buffer 320. In another preferred embodiment of the invention, associating a measure for estimating the probability of a less likely or more likely bin value for the current bin request with a particular bin buffer is time-adapted.

После приема декодированного бина 325 от выбранного буфера 320 бинов селектор 318 буфера бинов потенциально модифицирует вводимый бин 325 и посылает выводимый бин 326 - с потенциально модифицированным значением - бинаризатору 314. Отображение вводимого/выводимого бина селектора 318 буфера бинов представляет собой обратное отображению вводимого/выводимого бина селектора буфера бинов на стороне кодера.Upon receiving the decoded bin 325 from the selected bin buffer 320, the bin buffer selector 318 potentially modifies the input bin 325 and sends the output bin 326—with the potentially modified value—to the binarizer 314. The input/output bin mapping of the bin buffer selector 318 is the inverse of the input/output bin mapping. bin buffer selector on the encoder side.

В предпочтительном варианте осуществления изобретения селектор 318 буфера бинов не модифицирует значение бина, т.е. выводимый бин 326 всегда имеет одно и тоже значение, что и вводимый бин 325. В другом предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет значение 326 выводимого бина, основываясь на значении 325 вводимого бина и мере для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина, который ассоциируется с запросом бина 317. В предпочтительном варианте осуществления изобретения значение 326 выводимого бина устанавливается равным значению 325 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего запроса бина меньше (или меньше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего запроса бина больше или равна (или больше) конкретного порога, значение 326 выводимого бина модифицируется (т.е. устанавливается на значение, противоположное значению вводимого бина). В другом предпочтительном варианте осуществления изобретения значение 326 выводимого бина устанавливается равным значению 325 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего запроса бина больше (или больше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего запроса бина меньше или равна (или меньше) конкретного порога, значение 326 выводимого бина модифицируется (т.е. устанавливается на значение, противоположное значению вводимого бина). В предпочтительном варианте осуществления изобретения значение порога соответствует значению 0,5 для оцененной вероятности для обоих возможных значений бина.In the preferred embodiment of the invention, the bin buffer selector 318 does not modify the value of the bin, i.e. the output bin 326 always has the same value as the input bin 325. In another preferred embodiment of the invention, the bin buffer selector 318 determines the output bin value 326 based on the input bin value 325 and a measure for assessing the probability for one of two possible bin values for the current requested bin that is associated with the bin request 317. In a preferred embodiment of the invention, the output bin value 326 is set equal to the input bin value 325 if the measure for the probability for one of the two possible bin values for the current bin request is less than (or less than or equal to) specific threshold; if the measure for the probability for one of the two possible bin values for the current bin query is greater than or equal to (or greater than) a particular threshold, the output bin value 326 is modified (ie, set to the opposite value of the input bin value). In another preferred embodiment of the invention, the output bin value 326 is set equal to the input bin value 325 if the measure for the probability for one of the two possible bin values for the current bin request is greater than (or greater than or equal to) a particular threshold; if the measure for the probability for one of the two possible bin values for the current bin request is less than or equal to (or less than) a particular threshold, the output bin value 326 is modified (ie, set to the opposite value of the input bin value). In a preferred embodiment of the invention, the threshold value corresponds to a value of 0.5 for the estimated probability for both possible bin values.

В другом предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет значение 326 выводимого бина, основываясь на значении 325 вводимого бина и идентификатора, задающего оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего запроса бина, который ассоциируется с запросом бина 317. В предпочтительном варианте осуществления изобретения значение 326 выводимого бина устанавливается равным значению 325 вводимого бина, если идентификатор задает, что первое из двух возможных значений бина представляет менее вероятное (или более вероятное) значение бина для текущего запроса бина, и значение 326 выводимого бина модифицируется (т.е устанавливается на значение, противоположное значению вводимого бина), если идентификатор задает, что второе из двух возможных значений бина представляет менее вероятное (или более вероятное) значение бина для текущего запроса бина.In another preferred embodiment of the invention, the bean buffer selector 318 determines the output bean value 326 based on the input bean value 325 and an identifier specifying an estimate of which of two possible bean values represents the less likely or more likely bean value for the current bean request that is associated with request of bean 317. In the preferred embodiment of the invention, the output bean value 326 is set equal to the input bean value 325 if the identifier specifies that the first of two possible bean values represents the less likely (or more likely) bean value for the current bean request, and the output value 326 A bean is modified (that is, set to the opposite value of the input bean) if the identifier specifies that the second of two possible bean values represents the less likely (or more likely) bean value for the current bean request.

Как описано выше, селектор буфера бинов посылает запрос бина 319 одному из двух или более буферов 320 бинов. Буферы 20 бинов представляют буфер «первый пришел - первым обслужен», на которые подаются последовательности декодированных бинов 321 от подсоединенных декодеров 322 бинов. В качестве ответа на запрос бина 319, который посылается буферу 320 бинов от селектора 318 буфера бинов, буфер 320 бинов удаляет бин из своего содержимого, который был первым подан в буфер 320 бинов, и посылает его на селектор 318 буфера бинов. Бины, которые ранее были посланы буферу 320 бинов, раньше удаляются и посылаются селектору 318 буфера бинов.As described above, the bin buffer selector sends a bin request 319 to one of two or more bin buffers 320. Bin buffers 20 represent a first-in, first-out buffer into which sequences of decoded bins 321 from connected bin decoders 322 are supplied. In response to a request for bean 319 that is sent to bean buffer 320 from bean buffer selector 318, bean buffer 320 removes the bean from its contents that was first supplied to bean buffer 320 and sends it to bean buffer selector 318. Bins that were previously sent to bin buffer 320 are previously removed and sent to bin buffer selector 318.

Каждый из двух или более буферов 320 бинов соединен с точно одним декодером 322 бинов, и каждый декодер бинов соединен только с одним буфером 320 бинов. Каждый декодер 322 бинов считывает кодовые слова 323, которые представляют последовательности битов, из отдельного частичного битового потока 324. Декодер бинов преобразует кодовое слово 323 в последовательность бинов 321, которая посылается на подсоединенный буфер 320 бинов. Общий алгоритм декодирования преобразует два или более частичных битовых потока 324 в несколько декодированных синтаксических элементов, где количество частичных битовых потоков равно количеству буферов бинов и декодеров бинов, и декодирование синтаксических элементов запускается запросами новых синтаксических элементов. В предпочтительном варианте осуществления изобретения декодер 322 бинов преобразует кодовые слова 323 с переменным количеством битов в последовательность переменного количества бинов 321. Одним преимуществом вариантов осуществления изобретения является то, что декодирование бинов из двух или более частичных битовых потоков может выполняться параллельно (например, для разных групп мер вероятности), что уменьшает время обработки для нескольких реализаций.Each of two or more bin buffers 320 is connected to exactly one bin decoder 322, and each bin decoder is connected to exactly one bin buffer 320. Each bin decoder 322 reads codewords 323, which represent sequences of bits, from a separate partial bit stream 324. The bin decoder converts the codeword 323 into a sequence of bins 321, which is sent to an attached bin buffer 320. A general decoding algorithm converts two or more partial bitstreams 324 into multiple decoded syntax elements, where the number of partial bitstreams is equal to the number of bin buffers and bin decoders, and decoding of syntax elements is triggered by requests for new syntax elements. In a preferred embodiment of the invention, bin decoder 322 converts variable-bit codewords 323 into a variable-bin sequence 321. One advantage of embodiments of the invention is that decoding bins from two or more partial bitstreams can be performed in parallel (e.g., for different groups probability measures), which reduces processing time for multiple implementations.

Другим преимуществом вариантов осуществления изобретения является то, что декодирование бинов, которое выполняется декодерами 322 бинов, может быть специально разработано для разных множеств параметров 317. В частности, кодирование и декодирование бинов может оптимизироваться (в смысле эффективности и/или сложности кодирования) для разных групп оцениваемых вероятностей. С одной стороны, это позволяет уменьшить сложность кодирования/декодирования относительно современных алгоритмов энтропийного кодирования с подобной эффективностью кодирования. С другой стороны, это позволяет улучшить эффективность кодирования относительно современных алгоритмов энтропийного кодирования с подобной сложностью кодирования/декодирования. В предпочтительном варианте осуществления изобретения декодеры 322 бинов реализуют разные алгоритмы декодирования (т.е. отображение последовательностей бинов в кодовые слова) для разных групп мер для оценки вероятности для одного из двух возможных значений 317 бина для текущего запроса бина. В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов реализуют разные алгоритмы декодирования для разных групп мер для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина.Another advantage of embodiments of the invention is that the bin decoding that is performed by bin decoders 322 can be specifically designed for different sets of parameters 317. In particular, bin encoding and decoding can be optimized (in terms of encoding efficiency and/or complexity) for different groups estimated probabilities. On the one hand, this makes it possible to reduce the complexity of encoding/decoding relative to modern entropy coding algorithms with similar coding efficiency. On the other hand, this makes it possible to improve the coding efficiency relative to modern entropy coding algorithms with similar encoding/decoding complexity. In a preferred embodiment of the invention, bin decoders 322 implement different decoding algorithms (ie, mapping bin sequences to codewords) for different groups of measures to estimate the probability for one of two possible bin values 317 for the current bin request. In another preferred embodiment of the invention, bin decoders 322 implement different decoding algorithms for different groups of measures to estimate the probability for a less likely or more likely bin value for the currently requested bin.

Декодеры 322 бинов выполняют отображение, обратное соответствующим кодерам бинов на стороне кодера.The bin decoders 322 perform the inverse mapping to the corresponding bin encoders on the encoder side.

В предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 в последовательности бинов 321. Такое отображение может быть эффективно реализовано и не требует сложного механизма арифметического кодирования. Отображение кодовых слов в последовательности бинов должно быть уникальным. В предпочтительном варианте осуществления изобретения отображение кодовых слов 323 в последовательности бинов 321 является биективным. В другом предпочтительном варианте осуществления изобретения декодеры 310 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 переменной длины в последовательности переменной длины бинов 321. В предпочтительном варианте осуществления изобретения вводимые кодовые слова представляют коды без избыточности, такие как общие коды Хаффмана или канонические коды Хаффмана. Два примера для биективного отображения кодов без избыточности в последовательности бинов приведены в таблице 3.In a preferred embodiment of the invention, bin decoders 322—or one or more of the bin decoders—are entropy decoders that directly map codewords 323 to a sequence of bins 321. Such mapping can be efficiently implemented and does not require a complex arithmetic encoding mechanism. The mapping of codewords in a sequence of bins must be unique. In a preferred embodiment of the invention, the mapping of codewords 323 to a sequence of bins 321 is bijective. In another preferred embodiment of the invention, the bin decoders 310—or one or more of the bin decoders—are entropy decoders that directly map variable-length codewords 323 into a sequence of variable-length bins 321. In a preferred embodiment of the invention, the input codewords represent non-redundant codes, such as general Huffman codes or canonical Huffman codes. Two examples for bijectively mapping non-redundant codes into a sequence of bins are given in Table 3.

В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 фиксированной длины на последовательности переменной длины бинов 321. В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 переменной длины на последовательности фиксированной длины бинов 321.In another preferred embodiment, the bin decoders 322—or one or more of the bin decoders—are entropy decoders that directly map fixed-length codewords 323 onto a variable-length sequence of bins 321. In another preferred embodiment, the bin decoders 322 are either one or Several of the bin decoders are entropy decoders that directly map variable-length codewords 323 onto a fixed-length sequence of bins 321.

Таким образом, фиг. 7 и 8 изображают вариант осуществления для кодера для кодирования последовательности символов 3 и декодера для восстановления их. Кодер содержит средство 304 назначения, выполненное с возможностью назначения нескольких параметров 305 каждому символу последовательности символов. Назначение основывается на информации, содержащейся в предыдущих символах последовательности символов, такой как категория синтаксического элемента 1 для представления - такого как бинаризация - к которой принадлежит текущий символ, и который, в соответствии со структурой синтаксиса синтаксических элементов 1, как ожидается в настоящий момент, которое ожидание, в свою очередь, является выводимым из предыстории предыдущих синтаксических элементов 1 и символов 3. Кроме того, кодер содержит множество энтропийных кодеров 10, каждый из которых выполнен с возможностью преобразования символов 3, направляемых в соответствующий энтропийный кодер, в соответствующий битовый поток 312, и селектор 306, выполненный с возможностью направления каждого символа 3 к выбранному одному из множества энтропийных кодеров 10, причем выбор зависит от количества параметров 305, назначенных соответствующему символу 3. Средство 304 назначения может рассматриваться как интегрируемое в селектор 206, чтобы получить соответствующий селектор 502.Thus, FIG. 7 and 8 depict an embodiment for an encoder for encoding a sequence of symbols 3 and a decoder for reconstructing them. The encoder includes an assigner 304 configured to assign multiple parameters 305 to each symbol of the symbol sequence. The assignment is based on information contained in the previous characters of the character sequence, such as the category of syntax element 1 for representation - such as binarization - to which the current character belongs, and which, according to the syntax structure of syntax elements 1, is currently expected to be the expectation, in turn, is inferred from the history of previous syntax elements 1 and symbols 3. In addition, the encoder includes a plurality of entropy encoders 10, each of which is configured to convert symbols 3 sent to a corresponding entropy encoder into a corresponding bit stream 312. and a selector 306 configured to route each symbol 3 to a selected one of a plurality of entropy encoders 10, the choice depending on the number of parameters 305 assigned to the corresponding symbol 3. The assigner 304 can be viewed as being integrated into the selector 206 to obtain a corresponding selector 502.

Декодер для восстановления последовательности символов содержит множество энтропийных декодеров 322, каждый из которых выполнен с возможностью преобразования соответствующего битового потока 323 в символы 321; средство 316 назначения, выполненное с возможностью назначения нескольких параметров 317 каждому символу 315 последовательности символов, подлежащей восстановлению, основываясь на информации, содержащейся в ранее восстановленных символах последовательности символов (см. позиции 326 и 327 на фиг. 8); и селектор 318, выполненный для извлечения каждого символа из последовательности символов, подлежащей восстановлению, от выбранного одного из множества энтропийных декодеров 322, причем выбор зависит от количества параметров, определенных для соответствующего символа. Средство 316 назначения может быть выполнено так, что количество параметров, назначаемых каждому символу, содержит или представляет собой, меру для оценки вероятности распределения среди возможных значений символа, которые соответствующий символ может принимать. Снова, средство 316 назначения и селектор 318 могут рассматриваться как интегрируемые в один блок, селектор 402. Последовательность символов, подлежащих восстановлению, может представлять собой двоичный алфавит, и средство 316 назначения может быть выполнено так, что оценка распределения вероятности состоит из меры для оценки вероятности менее вероятного или более вероятного значения бина из двух возможных значений бина двоичного алфавита и идентификатора, задающего оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина. Средство 316 назначения может быть дополнительно выполнено с возможностью внутреннего назначения контекста каждому символу последовательности символов 315, подлежащих восстановлении, основываясь на информации, содержащейся в ранее восстановленных символах последовательности символов, подлежащих восстановлению, причем каждый контекст имеет соответствующую оценку распределения вероятности, ассоциированную с ним, и адаптации оценки распределения вероятности для каждого контекста фактической статистике символов, основываясь на значениях символа ранее восстановленных символов, которым назначен соответствующий контекст. Контекст может принимать во внимание пространственную зависимость или соседство позиций, к которым принадлежат синтаксические элементы, такие как при кодировании видео или изображений, или даже в таблицах, в случае финансовых применений. Затем мера для оценки распределения вероятности для каждого символа может определяться на основе оценки распределения вероятности, ассоциированной с контекстом, назначенным соответствующему символу, например, посредством квантования, или использования в качестве индекса в соответствующей таблице, оценки распределения вероятности, ассоциированной с контекстом, назначенным с соответствующим символом (в последующих вариантах осуществления, индексируемых индексом pipe вместе с индексом уточнения), одному из множества представителей оценки распределения вероятности (вырезая индекс уточнения), чтобы получить меру для оценки распределения вероятности (индекс pipe индексирует частичный битовый поток 312). Селектор может быть выполнен так, что определяется биективная ассоциация между множеством энтропийных кодеров и множеством представителей оценки распределения вероятности. Селектор 18 может быть выполнен с возможностью изменения во времени отображения квантования из диапазона оценок распределения вероятности в множество представителей оценки распределения вероятности заданным детерминированным образом в зависимости от ранее восстановленных символов последовательности символов. Т.е. селектор 318 может изменять размеры шага квантования, т.е. интервалы распределений вероятности, отображаемых на индивидуальные индексы вероятности, биективно ассоциированные с индивидуальными энтропийными декодерами. Множество энтропийных декодеров 322, в свою очередь, может быть выполнено с возможностью адаптации их способа преобразования символов в битовые потоки, реагируя на изменение в отображении квантования. Например, каждый энтропийный декодер 322 может быть оптимизирован, т.е. может иметь оптимальный коэффициент сжатия, для некоторой оценки распределения вероятности в пределах соответствующего интервала квантования оценки распределения вероятности, и может изменять отображение своих кодовых слов/последовательности символов, чтобы адаптировать позицию этой некоторой оценки распределения вероятности в пределах соответствующего интервала квантования оценки распределения вероятности при изменении последнего, чтобы она была оптимизирована. Селектор может быть выполнен с возможностью изменения отображения квантования, так что скорости, с которыми символы извлекаются из множества энтропийных декодеров, делаются менее рассредоточенными. Что касается бинаризатора 314, отмечается, что он может быть исключен, если синтаксические элементы уже являются двоичными. Кроме того, в зависимости от типа декодера 322 существование буферов 320 не является необходимым. Кроме того, буферы могут интегрироваться в декодеры.The symbol decoder includes a plurality of entropy decoders 322, each of which is configured to convert a corresponding bit stream 323 into symbols 321; an assignment means 316 configured to assign multiple parameters 317 to each symbol 315 of the symbol sequence to be restored based on information contained in the previously restored symbols of the symbol sequence (see numerals 326 and 327 in FIG. 8); and a selector 318 configured to extract each symbol from the symbol sequence to be recovered from a selected one of a plurality of entropy decoders 322, the selection depending on the number of parameters defined for the corresponding symbol. The assigner 316 may be configured such that the number of parameters assigned to each symbol comprises, or represents, a measure for assessing the probability of distribution among the possible symbol values that the corresponding symbol can take. Again, the assignor 316 and the selector 318 may be considered to be integrated into a single block, the selector 402. The sequence of symbols to be recovered may be a binary alphabet, and the assignor 316 may be configured such that the probability distribution estimate consists of a measure for the probability estimate the less likely or more likely bin value of two possible binary alphabet bin values, and an identifier indicating which of the two possible bin values represents the less likely or more likely bin value. The assigner 316 may be further configured to internally assign a context to each symbol of the symbol sequence 315 to be recovered based on information contained in previously restored symbols of the symbol sequence to be recovered, each context having a corresponding probability distribution estimate associated with it, and adapting the probability distribution estimate for each context to the actual symbol statistics based on the symbol values of previously reconstructed symbols to which the corresponding context is assigned. Context may take into account the spatial dependence or proximity of positions to which syntactic elements belong, such as in video or image encoding, or even in tables, in the case of financial applications. A measure for estimating the probability distribution for each symbol can then be determined based on the estimate of the probability distribution associated with the context assigned to the corresponding symbol, for example, by quantization, or using as an index in the corresponding table, the estimate of the probability distribution associated with the context assigned to the corresponding a symbol (in subsequent embodiments, indexed by the pipe index along with the refinement index) to one of a plurality of representatives of the probability distribution estimate (cutting off the refinement index) to obtain a measure for the probability distribution estimate (the pipe index indexes the partial bitstream 312). The selector may be configured to define a bijective association between a plurality of entropy encoders and a plurality of probability distribution estimate representatives. The selector 18 may be configured to change over time the quantization mapping from a range of probability distribution estimates to a set of representatives of the probability distribution estimate in a predetermined deterministic manner depending on the previously reconstructed symbols of the symbol sequence. Those. selector 318 can change the quantization step size, i.e. intervals of probability distributions mapped onto individual probability indices bijectively associated with individual entropy decoders. The plurality of entropy decoders 322, in turn, may be configured to adapt their method of converting symbols to bitstreams in response to a change in the quantization mapping. For example, each entropy decoder 322 may be optimized, i.e. may have an optimal compression ratio, for some probability distribution estimate, within a corresponding probability distribution estimate quantization interval, and may change the mapping of its codewords/symbol sequence to adapt the position of that certain probability distribution estimate within a corresponding probability distribution estimate quantization interval as the latter changes so that it is optimized. The selector may be configured to change the quantization mapping such that the rates at which symbols are extracted from the plurality of entropy decoders are made less spread out. With regard to the binarizer 314, it is noted that it may be omitted if the syntax elements are already binary. In addition, depending on the type of decoder 322, the existence of buffers 320 is not necessary. In addition, buffers can be integrated into decoders.

Завершение конечных последовательностей синтаксических элементовCompletion of finite sequences of syntactic elements

В предпочтительном варианте осуществления изобретения кодирование и декодирование выполняется для конечного множества синтаксических элементов. Часто кодируется некоторое количество данных, такое как неподвижное изображение, кадр или поле видеопоследовательности, слайс изображения, слайс кадра или поля видеопоследовательности или множество последовательных элементов дискретизации аудио и т.д. Для конечных множеств синтаксических элементов, как правило, частичные битовые потоки, которые создаются на стороне кодера, должны завершаться, т.е. необходимо гарантировать, что все синтаксические элементы могут декодироваться из передаваемых или хранимых частичных битовых потоков. После того как последний бин будет вставлен в соответствующий буфер 308 бинов, кодер 310 бинов должен гарантировать, что полное кодовое слово записывается в частичный битовый поток 312. Если кодер 310 бинов представляет энтропийный кодер, который реализует прямое отображение последовательностей бинов в кодовые слова, последовательность бинов, которая сохраняется в буфере бинов после записи последнего бина в буфер бинов, может не представлять последовательность бинов, которая ассоциируется с кодовым словом (т.е. она может представлять префикс двух или более последовательностей бинов, которые ассоциируются с кодовыми словами). В таком случае, любое из кодовых слов, ассоциированное с последовательностью бинов, которая содержит последовательность бинов в буфере бинов в качестве префикса, должна записываться в частичный битовый поток (буфер бинов должен быть очищен). Это может выполняться посредством вставки бинов с конкретным или произвольным значением в буфер бинов до тех пор, пока не будет записано кодовое слово. В предпочтительном варианте осуществления изобретения кодер бинов выбирает одно из кодовых слов с минимальной длиной (в дополнение к свойству, что ассоциированная последовательность бинов должна содержать последовательность бинов в буфере бинов в качестве префикса). На стороне декодера декодер 322 бинов может декодировать больше бинов, чем требуется для последнего кодового слова в частичном битовом потоке; эти бины не запрашиваются селектором 318 буфера бинов и отбрасываются и игнорируются. Декодирование конечного множества символов управляется запросами декодируемых синтаксических элементов; если не запрашивается дальнейший синтаксический элемент для количества данных, декодирование завершается.In a preferred embodiment of the invention, encoding and decoding is performed on a finite set of syntactic elements. Often a quantity of data is encoded, such as a still image, a frame or field of a video sequence, a slice of an image, a slice of a frame or field of a video sequence, or a plurality of sequential audio sampling units, etc. For finite sets of syntax elements, as a rule, partial bitstreams that are created on the encoder side must be terminated, i.e. it is necessary to ensure that all syntax elements can be decoded from transmitted or stored partial bitstreams. After the last bin is inserted into the corresponding bin buffer 308, the bin encoder 310 must ensure that the complete codeword is written to the partial bitstream 312. If the bin encoder 310 represents an entropy encoder that implements a direct mapping of sequences of bins to codewords, the sequence of bins , which is stored in the bean buffer after the last bin is written to the bean buffer, may not represent a sequence of bins that is associated with a codeword (ie, it may represent a prefix of two or more sequences of bins that are associated with codewords). In such a case, any of the codewords associated with a sequence of bins that contains the sequence of bins in the bin buffer as a prefix must be written to the partial bitstream (the bin buffer must be cleared). This can be done by inserting bins with a specific or arbitrary value into the bin buffer until the codeword is written. In a preferred embodiment of the invention, the bin encoder selects one of the codewords with the minimum length (in addition to the property that the associated bin sequence must contain the bin sequence in the bin buffer as a prefix). On the decoder side, bin decoder 322 can decode more bins than required for the last codeword in the partial bitstream; these beans are not requested by the bean buffer selector 318 and are discarded and ignored. The decoding of a finite set of symbols is controlled by queries on the syntax elements being decoded; if no further syntax element is requested for the amount of data, decoding is completed.

Передача и мультиплексирование частичных битовых потоковTransmission and multiplexing of partial bit streams

Частичные битовые потоки 312, которые создаются кодером, могут передаваться отдельно, или они могут мультиплексироваться в единственный битовый поток, или кодовые слова частичных битовых потоков могут перемежаться в единственном битовом потоке.The partial bitstreams 312 that are created by the encoder may be transmitted separately, or they may be multiplexed into a single bitstream, or the codewords of the partial bitstreams may be interleaved into a single bitstream.

В варианте осуществления изобретения каждый частичный битовый поток для некоторого количества данных записывается в один пакет данных. Количество данных может представлять собой произвольное множество синтаксических элементов, такое как неподвижное изображение, поле или кадр видеопоследовательности, слайс неподвижного изображения, слайс поля или кадра видеопоследовательности, или кадр элементов дискретизации аудио, и т.д.In an embodiment of the invention, each partial bitstream for a certain amount of data is written into one data packet. The amount of data may be an arbitrary plurality of syntactic elements, such as a still image, a field or frame of a video sequence, a slice of a still image, a slice of a field or frame of a video sequence, or a frame of audio sampling units, etc.

В другом предпочтительном варианте осуществления изобретения два или более частичных битовых потоков для некоторого количества данных или все частичные битовые потоки для некоторого количества данных мультиплексируются в один пакет данных. Структура пакета данных, который содержит мультиплексированные частичные битовые потоки, изображена на фиг. 9.In another preferred embodiment of the invention, two or more partial bitstreams for an amount of data, or all partial bitstreams for an amount of data, are multiplexed into one data packet. The structure of a data packet that contains multiplexed partial bit streams is shown in FIG. 9.

Пакет 400 данных состоит из заголовка и одного раздела для данных каждого частичного битового потока (для рассматриваемого количества данных). Заголовок 400 пакета данных содержит указания для разделения (остальной части) пакета данных на сегменты данных 402 битового потока. Кроме указаний для разделения заголовок может содержать дополнительную информацию. В предпочтительном варианте осуществления изобретения указания для разделения пакета данных представляют собой расположения начала сегментов данных в единицах битов или байтов или кратных битам или кратным байтам. В предпочтительном варианте осуществления изобретения расположения начала сегментов данных кодируются в виде абсолютных значений в заголовке пакета данных, или относительно начала пакета данных, или относительно конца заголовка, или относительно начала предыдущего пакета данных. В другом предпочтительном варианте осуществления изобретения расположения начала сегментов данных кодируются дифференцированно, т.е. кодируется только разность между фактическим началом сегмента данных и предсказанием для начала сегмента данных. Предсказание может выводиться на основе уже известной или переданной информации, такой как общий размер пакета данных, размер заголовка, количество сегментов данных в пакете данных, расположение начала предшествующих сегментов данных. В предпочтительном варианте осуществления изобретения расположение начала первого пакета данных не кодируется, но выводится на основе размера заголовка пакета данных. На стороне декодера переданные указания о разделах используются для выведения начала сегментов данных. Сегменты данных затем используются в качестве частичных битовых потоков, и данные, содержащиеся в сегментах данных, подаются в соответствующие декодеры бинов в последовательном порядке.Data packet 400 consists of a header and one data section for each partial bitstream (for the amount of data in question). The data packet header 400 contains instructions for dividing the (remainder of) the data packet into bitstream data segments 402. In addition to instructions for separation, the header may contain additional information. In a preferred embodiment of the invention, the indications for dividing a data packet are the locations of the beginning of the data segments in units of bits or bytes or multiples of bits or multiples of bytes. In a preferred embodiment of the invention, the locations of the beginnings of data segments are encoded as absolute values in the data packet header, either relative to the start of the data packet, or relative to the end of the header, or relative to the beginning of the previous data packet. In another preferred embodiment of the invention, the start locations of the data segments are encoded differentially, i.e. Only the difference between the actual start of the data segment and the prediction for the start of the data segment is encoded. The prediction may be derived based on information already known or transmitted, such as the total size of the data packet, the size of the header, the number of data segments in the data packet, the location of the beginning of previous data segments. In a preferred embodiment of the invention, the location of the start of the first data packet is not encoded, but is inferred based on the size of the data packet header. On the decoder side, the passed section instructions are used to infer the beginning of the data segments. The data segments are then used as partial bitstreams, and the data contained in the data segments is supplied to the corresponding bin decoders in sequential order.

Существует несколько альтернатив для мультиплексирования частичных битовых потоков в пакет данных. Одна альтернатива, которая может уменьшать требуемую дополнительную информацию, в частности для случаев, в которых размеры частичных потоков являются очень похожими, изображена на фиг. 10. Полезная нагрузка пакета данных, т.е. пакет 410 данных без заголовка 411, разделяется на сегменты 412 заданным образом. В качестве примера, полезная нагрузка пакета данных может разделяться на сегменты одинакового размера. Затем каждый сегмент ассоциируется с частичным битовым потоком или с первой частью частичного битового потока 413. Если частичный битовый поток больше ассоциированного сегмента данных, его оставшаяся часть 414 размещается в неиспользуемое пространство в конце других сегментов данных. Это может выполняться таким образом, что оставшаяся часть битового потока вставляется в обратном порядке (начиная с конца сегмента данных), что уменьшает дополнительную информацию. Ассоциирование остальных частей частичных битовых потоков с сегментами данных, и, когда более одной остальной части добавляется к сегменту данных, начальная точка для одной или нескольких остальных частей должна сигнализироваться внутри битового потока, например, в заголовке пакета данных.There are several alternatives for multiplexing partial bit streams into a data packet. One alternative that may reduce the required additional information, particularly for cases in which the sizes of the partial streams are very similar, is depicted in FIG. 10. Data packet payload, i.e. data packet 410 without header 411 is divided into segments 412 in a predetermined manner. As an example, the payload of a data packet may be divided into equally sized segments. Each segment is then associated with a partial bitstream or a first portion of the partial bitstream 413. If the partial bitstream is larger than the associated data segment, the remainder of it 414 is allocated to unused space at the end of the other data segments. This can be done in such a way that the remainder of the bit stream is inserted in reverse order (starting from the end of the data segment), thereby reducing additional information. Associate the remaining portions of the partial bitstreams with data segments, and when more than one remaining portion is added to a data segment, the starting point for one or more remaining portions must be signaled within the bitstream, for example in a data packet header.

Перемежение кодовых слов переменной длиныVariable Length Codeword Interleaving

Для некоторых применений вышеописанное мультиплексирование частичных битовых потоков (для некоторого количества синтаксических элементов) в одном пакете данных может иметь следующие недостатки: С одной стороны, для малых пакетов данных количество битов для дополнительной информации, которая требуется для сигнализации разделения, может стать существенным относительно фактических данных в частичных битовых потоках, что, в конце концов, уменьшает эффективность кодирования. С другой стороны, мультиплексирование может не быть подходящим для применений, которые требуют низкой задержки (например, для приложений видеоконференции). С описанным мультиплексированием кодер не может начать передачу пакета данных, перед тем как не будут полностью созданы частичные битовые потоки, так как прежде неизвестны расположения начала разделов. Кроме того, как правило, декодеру приходится ожидать до тех пор, пока он не примет начало последнего сегмента данных, перед тем как он сможет начать декодирование пакета данных. Для применений в качестве систем видеоконференции эти задержки могут добавлять к дополнительной общей задержке системы нескольких изображений (в частности, для скоростей передачи битов, которые близки к скорости передачи битов и для кодеров/декодеров, которые требуют чуть ли не временной интервал между двумя изображениями для кодирования/декодирования изображения), что является критичным для таких приложений. Чтобы преодолеть недостатки для некоторых применений, кодер предпочтительного варианта осуществления изобретения может быть выполнен таким образом, что кодовые слова, которые генерируются двумя или более кодерами бинов, перемежаются в единственный битовый поток. Битовый поток с перемежаемыми кодовыми словами может непосредственно посылаться декодеру (при игнорировании малой задержки буфера, см. ниже). На стороне декодера два или более декодеров бинов считывают кодовые слова непосредственно из битового потока в порядке декодирования; декодирование может начинаться с первым принятым битом. Кроме того, не требуется никакая дополнительная информация для сигнализации мультиплексирования (или перемежения) частичных битовых потоков. Другой путь уменьшения сложности декодера может достигаться тогда, когда декодеры 322 бинов не считывают кодовые слова переменной длины из глобального буфера битов, но, вместо этого, они всегда считывают последовательности фиксированной длины битов из глобального буфера битов и добавляют эти последовательности фиксированной длины битов в локальный буфер битов, где каждый декодер 322 бинов соединен с отдельным локальным буфером битов. Кодовые слова переменной длины затем считываются из локального буфера битов. Следовательно, синтаксический анализ кодовых слов переменной длины может выполняться параллельно, только доступ к последовательностям фиксированной длины битов должен выполняться синхронизированным образом, но такой доступ к последовательностям фиксированной длины битов обычно является очень быстрым, так что общая сложность декодирования может быть уменьшена для некоторых архитектур. Фиксированное количество бинов, которые посылаются в конкретный локальный буфер битов, может быть разным для разных локальных буферов битов, и оно также может изменяться во времени в зависимости от некоторых параметров, таких как события в декодере бинов, буфере бинов или буфере битов. Однако количество битов, которые считываются посредством конкретного доступа, не зависит от фактических битов, которые считываются во время конкретного доступа, что представляет собой важное отличие от считывания кодовых слов переменной длины. Считывание последовательностей фиксированной длины битов запускается некоторыми событиями в буферах бинов, декодерах бинов или локальных буферах битов. В качестве примера, возможно выполнять запрос считывания новой последовательности фиксированной длины битов, когда количество битов, которые присутствуют в подсоединенном буфере битов, падает ниже заданного порога, когда разные пороговые значения могут использоваться для разных буферов битов. В кодере необходимо гарантировать, что последовательности фиксированной длины бинов вставляются в том же порядке в битовый поток, в котором они считываются из битового потока на стороне декодера. Также является возможным объединение этого перемежения последовательностей фиксированной длины с управлением с малой задержкой, подобно тем, которые описаны выше. Ниже описывается предпочтительный вариант осуществления для перемежения последовательностей фиксированной длины битов. В отношении дополнительных подробностей, касающихся последних схем перемежения, ссылка делается на WO2011/128268A1.For some applications, the above-described multiplexing of partial bit streams (for a certain number of syntax elements) in one data packet may have the following disadvantages: On the one hand, for small data packets, the number of bits for additional information that is required for split signaling can become significant relative to the actual data in partial bit streams, which ultimately reduces encoding efficiency. On the other hand, multiplexing may not be suitable for applications that require low latency (for example, videoconferencing applications). With the multiplexing described, the encoder cannot begin transmitting a data packet before the partial bitstreams have been completely created, since the locations of the start of the sections are previously unknown. Additionally, the decoder typically has to wait until it receives the beginning of the last data segment before it can begin decoding the data packet. For applications such as videoconferencing systems, these delays can add to the additional overall latency of a multi-image system (particularly for bit rates that are close to the bit rate and for encoders/decoders that require almost the time interval between two images to encode / image decoding), which is critical for such applications. To overcome the disadvantages for some applications, the encoder of a preferred embodiment of the invention may be configured such that codewords that are generated by two or more bin encoders are interleaved into a single bit stream. The bitstream with interleaved codewords can be sent directly to the decoder (ignoring the low buffer latency, see below). On the decoder side, two or more bin decoders read codewords directly from the bitstream in decoding order; decoding may begin with the first bit received. In addition, no additional information is required to signal the multiplexing (or interleaving) of the partial bit streams. Another way to reduce decoder complexity can be achieved when the bin decoders 322 do not read variable-length codewords from the global bit buffer, but instead, they always read fixed-length bit sequences from the global bit buffer and add these fixed-length bit sequences to the local buffer. bits, where each 322 bin decoder is connected to a separate local bit buffer. The variable length codewords are then read from the local bit buffer. Therefore, parsing of variable-length codewords can be done in parallel, only access to fixed-bit-length sequences must be done in a synchronized manner, but such access to fixed-bit-length sequences is typically very fast, so the overall decoding complexity can be reduced for some architectures. The fixed number of bins that are sent to a particular local bit buffer may be different for different local bit buffers, and it may also vary over time depending on some parameters such as events in the bin decoder, bin buffer, or bit buffer. However, the number of bits that are read by a particular access is independent of the actual bits that are read during a particular access, which is an important difference from reading variable-length codewords. Reading of fixed bit length sequences is triggered by some events in bin buffers, bin decoders, or local bit buffers. As an example, it is possible to issue a read request for a new sequence of fixed bit lengths when the number of bits that are present in the connected bit buffer falls below a given threshold, where different thresholds may be used for different bit buffers. The encoder needs to ensure that fixed-length bin sequences are inserted in the same order into the bitstream in which they are read from the decoder-side bitstream. It is also possible to combine this fixed length sequence interleaving with low latency control, like those described above. A preferred embodiment for interleaving fixed bit length sequences is described below. For further details regarding the latest interleaving schemes, reference is made to WO2011/128268A1.

После описания вариантов осуществления, согласно которым даже ранее кодирование используется для сжатия видеоданных, описывается в качестве еще другого варианта осуществления для реализации вариантов осуществления настоящего изобретения, которое изображает реализацию, особенно эффективную в смысле хорошего компромисса между коэффициентом сжатия, с одной стороны, и таблицей поиска и издержками вычисления, с другой стороны. В частности, нижеследующие варианты осуществления позволяют использовать менее сложные в смысле вычисления коды переменной длины для энтропийного кодирования индивидуальных битовых потоков, и эффективно закрывают части оценки вероятности. В вариантах осуществления, описанных ниже, символы являются двоичной природы, и коды VLC (коды переменной длины), представленные ниже, эффективно закрывают оценку вероятности, представленную, например, посредством RLPS (наименее вероятный символ), проходящего в пределах [0; 0,5].After describing embodiments in which even earlier encoding is used to compress video data, another embodiment for implementing embodiments of the present invention is described, which depicts an implementation that is particularly effective in the sense of a good compromise between the compression ratio on the one hand and the lookup table and computational overhead, on the other hand. In particular, the following embodiments allow the use of less computationally complex variable length codes for entropy encoding of individual bit streams, and effectively close off the probability estimation portions. In the embodiments described below, the symbols are of a binary nature, and the VLC codes (variable length codes) presented below effectively cover the probability estimate represented, for example, by R LPS (least probable symbol) passing within [0; 0.5].

В частности, варианты осуществления, кратко описанные ниже, описывают возможные реализации для индивидуальных энтропийных кодеров 310 и декодеров 322 на фиг. 7-17 соответственно. Они подходят для кодирования бинов, т.е. двоичных символов, так как они имеют место в приложениях сжатия изображения или видео. Следовательно, эти варианты осуществления также применимы к кодированию изображения или видео, где такие двоичные символы разделяются на один или несколько потоков бинов 307, подлежащих кодированию, и битовые потоки 324, подлежащие декодированию соответственно, где каждый такой поток бинов может рассматриваться как реализация процесса Бернулли. Варианты осуществления, описанные ниже, используют один или несколько из объясняемых ниже различных так называемых переменный-в-переменный кодов (v2v-коды) для кодирования потоков бинов. v2v-код может рассматриваться как два беспрефиксных кода с одинаковым количеством кодовых слов. Первичный и вторичный беспрефиксный код. Каждое кодовое слово первичного беспрефиксного кода ассоциируется с одним кодовым словом вторичного беспрефиксного кода. В соответствии с ниже описанными кратко вариантами осуществления по меньшей мере некоторые из кодеров 310 и декодеров 322 работают следующим образом: Для кодирования конкретной последовательности бинов 307, всякий раз когда кодовое слово первичного беспрефиксного кода считывается из буфера 308, соответствующее кодовое слово вторичного беспрефиксного кода записывается в битовый поток 312. Эта же процедура используется для декодирования такого битового потока 324, но первичный и вторичный беспрефиксный код меняются местами. Т.е. для декодирования битового потока 324, всякий раз когда кодовое слово вторичного беспрефиксного кода считывается из соответствующего битового потока 324, соответствующее кодовое слово первичного беспрефиксного кода записывается в буфер 320.In particular, the embodiments briefly described below describe possible implementations for individual entropy encoders 310 and decoders 322 in FIG. 7-17 respectively. They are suitable for encoding bins, i.e. binary characters as they occur in image or video compression applications. Therefore, these embodiments are also applicable to image or video encoding, where such binary symbols are divided into one or more bin streams 307 to be encoded and bit streams 324 to be decoded, respectively, where each such bin stream can be considered an implementation of a Bernoulli process. The embodiments described below use one or more of the various so-called variable-to-variable codes (v2v codes) explained below to encode bin streams. A v2v code can be considered as two prefix-free codes with the same number of codewords. Primary and secondary prefix-free code. Each codeword of the primary unprefixed code is associated with one codeword of the secondary unprefixed code. In accordance with the embodiments briefly described below, at least some of the encoders 310 and decoders 322 operate as follows: To encode a particular sequence of bins 307, whenever a primary unprefixed code codeword is read from buffer 308, a corresponding secondary unprefixed codeword is written to bitstream 312. The same procedure is used to decode such bitstream 324, but the primary and secondary prefix-free code are swapped. Those. to decode bitstream 324, whenever a secondary prefix-free code codeword is read from a corresponding bitstream 324, a corresponding primary prefix-free code codeword is written to buffer 320.

Полезно, что коды, описанные ниже, не требуют таблиц поиска. Коды являются реализуемыми в виде конечных автоматов. v2v-коды, представленные здесь, могут генерироваться простыми правилами построения, такими как, что нет необходимости сохранять большие таблицы для кодовых слов. Вместо этого, простой алгоритм может использоваться для выполнения кодирования или декодирования. Ниже описываются три правила построения, где два из них могут параметризоваться. Они закрывают разные или даже непересекающиеся части вышеупомянутого интервала вероятностей и, следовательно, являются особенно полезными, если используются вместе, например, все три кода параллельно (каждый для разных кодеров/декодеров 11 и 22) или два из них. С описанными ниже правилами построения является возможным разрабатывать набор v2v-кодов, так что для процессов Бернулли с произвольной вероятностью p, один из кодов хорошо работает в отношении избыточной длины кода.Helpfully, the codes described below do not require lookup tables. The codes are implementable as finite state machines. The v2v codes presented here can be generated by simple construction rules, such as that there is no need to store large tables for codewords. Instead, a simple algorithm can be used to perform encoding or decoding. Three construction rules are described below, where two of them can be parameterized. They cover different or even non-overlapping parts of the above probability interval and are therefore particularly useful if used together, for example all three codes in parallel (each for different encoders/decoders 11 and 22) or two of them. With the construction rules described below, it is possible to design a set of v2v codes such that, for Bernoulli processes with arbitrary probability p, one of the codes performs well with respect to excess code length.

Как изложено выше, кодирование и декодирование потоков 312 и 324 соответственно может выполняться или независимо для каждого потока, или перемежаемым образом. Это, однако, не является характерным для представленных классов v2v-кодов, и, поэтому, только кодирование и декодирование конкретного кодового слова описывается для каждого из трех правил построения в нижеследующем. Однако подчеркивается, что все вышеупомянутые варианты осуществления, касающиеся решений с перемежением, также являются пригодными для объединения с описанными в настоящее время кодами или кодерами и декодерами 310 и 322 соответственно.As discussed above, encoding and decoding of streams 312 and 324, respectively, may be performed either independently on a per-stream basis or in an interleaved manner. This, however, is not specific to the presented classes of v2v codes, and therefore only the encoding and decoding of a specific codeword is described for each of the three construction rules in the following. However, it is emphasized that all of the above embodiments regarding interleaved solutions are also suitable for combining with the currently described codes or encoders and decoders 310 and 322, respectively.

Правило построения 1: Коды «pipe (энтропия разделения интервала вероятностей) унарных бинов» или кодеры/декодеры 310 и 322Construction Rule 1: Unary Bin Pipe Codes or Encoders/Decoders 310 and 322

Коды энтропии разделения интервала вероятностей (pipe) унарных бинов представляют собой особую версию так называемых кодов «pipe бинов», т.е. кодов, пригодных для кодирования любого из индивидуальных битовых потоков 12 и 24, причем каждый переносит данные о статистике двоичных символов, принадлежащей некоторому вероятностному подынтервалу вышеупомянутого диапазона вероятности [0; 0,5]. Сначала описывается построение кодов pipe бинов. Код pipe бинов может быть построен из любого беспрефиксного кода с по меньшей мере тремя кодовыми словами. Для образования v2v-кода он использует беспрефиксный код в качестве первичного и вторичного кода, но меняются местами два кодовых слова вторичного беспрефиксного кода. Это означает, что за исключением двух кодовых слов бины записываются в битовый поток неизменными. С этим методом необходимо сохранять только один беспрефиксный код вместе с информацией, какие два кодовых слова меняются местами, и, таким образом, уменьшается потребление памяти. Отметьте, что это имеет смысл только для перестановки кодовых слов разной длины, так как, в противном случае, битовый поток будет иметь такую же длину, что и поток бинов (не учитывая эффекты, которые могут иметь место в конце потока бинов).Unary bin pipe entropy codes are a special version of the so-called “pipe bin” codes, i.e. codes suitable for encoding any of the individual bit streams 12 and 24, each carrying binary symbol statistics data belonging to some probability subinterval of the aforementioned probability range [0; 0.5]. First, the construction of pipe bean codes is described. The pipe bean code can be constructed from any prefix-free code with at least three codewords. To form a v2v code, it uses a prefix-free code as the primary and secondary code, but the two codewords of the secondary prefix-free code are swapped. This means that, with the exception of two codewords, the bins are written unchanged to the bitstream. With this method, only one prefix-free code needs to be stored along with the information which two codewords are swapped, and thus memory consumption is reduced. Note that this only makes sense for permuting codewords of different lengths, since otherwise the bitstream will be the same length as the binstream (ignoring effects that may occur at the end of the binstream).

Вследствие этого правила построения известным свойством кодов pipe бинов является, что, если первичный и вторичный беспрефиксный код переставляется (тогда как отображение кодовых слов сохраняется), результирующий v2v-код является идентичным исходному v2v-коду. Поэтому, алгоритм кодирования и алгоритм декодирования идентичны для кодов pipe бинов.Because of this construction rule, a known property of pipe bean codes is that if the primary and secondary unprefixed code are swapped (while the codeword mapping is preserved), the resulting v2v code is identical to the original v2v code. Therefore, the encoding algorithm and decoding algorithm are identical for pipe bin codes.

Код pipe унарных бинов составляется из специального беспрефиксного кода. Этот специальный беспрефиксный код составляется следующим образом. Сначала беспрефиксный код, состоящий из n унарных кодовых слов генерируется, начиная с «01», «001», «0001», …, пока не будет получено n кодовых слов. n представляет собой параметр для кода pipe унарных бинов. Из самого длинного кодового слова удаляется конечная 1. Это соответствует усеченному унарному коду (но без кодового слова «0»). Затем n-1 унарных кодовых слов генерируется, начиная с «10», «110», «1110», …, пока не будет получено n-1 кодовых слов. Из самого длинного из этих кодовых слов удаляется конечный 0. Множество объединения из этих двух беспрефиксных кодов используется в качестве ввода для генерирования кода pipe унарных бинов. Два кодовых слова, которые переставляются, представляют собой один, состоящий только из 0, и один, состоящий только из 1.The pipe code of unary bins is composed of a special prefix-free code. This special prefix-free code is composed as follows. First, a prefix-free code consisting of n unary codewords is generated, starting with "01", "001", "0001", ..., until n codewords are obtained. n is a parameter for the pipe code of unary bins. The trailing 1 is removed from the longest codeword. This corresponds to a truncated unary code (but without the codeword "0"). Then n-1 unary codewords are generated, starting with "10", "110", "1110", ..., until n-1 codewords are obtained. The longest of these codewords is stripped of the trailing 0. The union set of these two prefix-free codewords is used as input to generate the unary bin code pipe. The two codewords that are swapped are one consisting of only 0s and one consisting of only 1s.

Пример для n=4:Example for n=4:

№ Первичный ВторичныйNo. Primary Secondary

1 0000 1111 0000 111

2 001 00012 001 0001

3 001 0013 001 001

4 01 014 01 01

5 10 105 10 10

6 110 1106 110 110

7 111 00007 111 0000

Правило 2 построения: «Унарный-в-Райс»-коды и унарные-в-Райс-кодеры/декодеры 10 и 22:Construction rule 2: Unary-to-Rice codes and unary-to-Rice encoders/decoders 10 and 22:

Унарный-в-Райс-коды используют усеченный унарный код в качестве первичного кода. Т.е. унарные кодовые слова генерируются, начиная с «1», «01», «001», …, пока не будут сгенерированы 2n+1 кодовых слов и из самого длинного кодового слова удаляется конечная 1. n представляет собой параметр унарного-в-Райс-кода. Вторичный беспрефиксный код составляется из кодовых слов первичного беспрефиксного кода следующим образом. Первичному кодовому слову, состоящему только из 0, назначается кодовое слово «1». Все другие кодовые слова состоят из конкатенации кодового слова «0» с n-битовым двоичным представлением количества 0 соответствующего кодового слова первичного беспрефиксного кода.Unary-to-Rice codes use a truncated unary code as the primary code. Those. unary codewords are generated starting with "1", "01", "001", ..., until 2n +1 codewords have been generated and the trailing 1 is removed from the longest codeword. n is the unary-to-Rice parameter -code. The secondary prefix-free code is composed of the code words of the primary prefix-free code as follows. The primary codeword consisting of only 0s is assigned a codeword of "1". All other codewords consist of the concatenation of a codeword "0" with an n-bit binary representation of the number of 0s of the corresponding codeword of the primary unprefixed code.

Пример для n=3:Example for n=3:

№ Первичный ВторичныйNo. Primary Secondary

1 1 00001 1 0000

2 01 00012 01 0001

3 001 00103 001 0010

4 0001 00114 0001 0011

5 00001 01005 00001 0100

6 000001 01016 000001 0101

7 0000001 01107 0000001 0110

8 00000001 01118 00000001 0111

9 00000000 19 00000000 1

Отметьте, что это идентично отображению бесконечного унарного кода на код Райса с параметром Райса 2n.Note that this is identical to mapping an infinite unary code to a Rice code with a Rice parameter of 2 n .

Правило построения 3: «Трехбиновый» кодConstruction rule 3: “Three-bin” code

Трехбиновый код определяется как:The three-bin code is defined as:

№ Первичный ВторичныйNo. Primary Secondary

1 000 01 000 0

2 001 1002,001,100

3 010 1013 010 101

4 100 1104 100 110

5 110 111005 110 11100

6 101 111016 101 11101

7 011 111107 011 11110

8 111 111118 111 11111

Он имеет свойство, что первичный код (последовательность символов) имеет фиксированную длину (всегда три бина), и кодовые слова сортируются по возрастающим числам 1.It has the property that the primary code (sequence of symbols) has a fixed length (always three bins) and the codewords are sorted in ascending numbers of 1.

Ниже описывается эффективная реализация трехбинового кода. Кодер и декодер для трехбинового кода могут быть реализованы без хранения таблиц следующим образом.An efficient implementation of three-bin code is described below. An encoder and decoder for a three-bin code can be implemented without storing tables as follows.

В кодере (любой из 10) три бина считываются из потока бинов (т.е. 7). Если эти три бина содержат точно одну 1, кодовое слово «1» записывается в битовый поток, за которыми следует два бина, состоящие из двоичного представления позиции 1 (начиная справа с 00). Если три бина содержат точно один 0, кодовое слово «111» записывается в битовый поток, за которым следует два бина, состоящие из двоичного представления позиции 0 (начиная справа с 00). Остальные кодовые слова «000» и «111» отображаются на «0» и «11111» соответственно.In the encoder (any one of 10), three bins are read from a stream of bins (i.e. 7). If these three bins contain exactly one 1, the codeword "1" is written to the bitstream, followed by two bins consisting of the binary representation of the position 1 (starting on the right with 00). If three bins contain exactly one 0, the codeword "111" is written to the bitstream, followed by two bins consisting of the binary representation of the 0 position (starting at the right with 00). The remaining code words "000" and "111" are mapped to "0" and "11111" respectively.

В декодере (любом из 22) один бин или бит считывается из соответствующего битового потока 24. Если он равен «0», кодовое слово «000» декодируется в поток 21 бинов. Если он равен «1», еще два бина считываются из битового потока 24. Если эти два бита не равны «11», они интерпретируются как двоичное представление числа, и два 0 и одна 1 декодируются в битовый поток, так что позиция 1 определяется числом. Если два бита равны «11», еще два бита считываются и интерпретируются как двоичное представление числа. Если это число меньше 3, две 1 и один 0 декодируются, и число определяет позицию 0. Если оно равно 3, «111» декодируется в поток бинов.In a decoder (any one of 22), one bin or bit is read from the corresponding bitstream 24. If it is "0", the codeword "000" is decoded into a stream of 21 bins. If it is equal to "1", two more bins are read from bitstream 24. If these two bits are not equal to "11", they are interpreted as the binary representation of the number, and two 0s and one 1 are decoded into the bitstream, so that the position of 1 is determined by the number . If two bits are equal to "11", two more bits are read and interpreted as the binary representation of the number. If this number is less than 3, two 1s and one 0 are decoded, and the number defines the position of 0. If it is 3, "111" is decoded into a stream of bins.

Ниже описывается эффективная реализация кодов pipe унарных бинов. Кодер и декодер для кодов pipe унарных бинов могут эффективно реализоваться посредством использования счетчика. Вследствие структуры кодов pipe бинов, кодирование и декодирование кодов pipe бинов легко реализовать:The following describes an efficient implementation of pipe codes for unary beans. An encoder and decoder for pipe codes of unary bins can be efficiently implemented by using a counter. Due to the structure of pipe bean codes, encoding and decoding of pipe bean codes is easy to implement:

В кодере (любом из 10), если первый бин кодового слова равен «0», бины обрабатываются до тех пор, пока не встретится «1», или пока не будут считаны n 0 (включая первый «0» кодового слова). Если встретилась «1», считанные бины записываются в битовый поток неизменными. В противном случае, (т.е. были считаны n 0), n-1 1 записываются в битовый поток. Если первый бин кодового слова равен «1», бины обрабатываются до тех пор, пока не встретится «0», или пока не будут считаны n-1 1 (включая первую «1» кодового слова). Если встречается «0», считанные бины записываются в битовый поток неизменными. В противном случае, (т.е. были считаны n-1 1), n 0 записывается в битовый поток.In an encoder (any of 10), if the first bin of a codeword is "0", the bins are processed until a "1" is encountered, or until n 0s are read (including the first "0" of the codeword). If a “1” is encountered, the read bins are written unchanged to the bitstream. Otherwise, (i.e. n 0s have been read), n-1 1s are written to the bitstream. If the first bin of a codeword is a "1", the bins are processed until a "0" is encountered or until n-1 1s are read (including the first "1" of the codeword). If a "0" is encountered, the read bins are written unchanged to the bitstream. Otherwise, (ie n-1 1s have been read), n 0 is written to the bitstream.

В декодере (любом из 322) используется этот же алгоритм, что и для кодера, так как он является одинаковым для кодов pipe бинов, как описано выше.The decoder (any of the 322) uses the same algorithm as the encoder, since it is the same for pipe bin codes as described above.

Ниже описывается эффективная реализация унарных-в-Райс-кодов. Кодер и декодер для унарных-в-Райс-кодов могут быть эффективно реализованы посредством использования счетчика, как описывается ниже.An efficient implementation of unary-to-Rice codes is described below. An encoder and decoder for unary-to-Rice codes can be efficiently implemented by using a counter, as described below.

В кодере (любом из 310) бины считываются из потока бинов (т.е. 7) до тех пор, пока не встретится 1, или пока не будут считаны 2n 0. Количество 0 подсчитывается. Если подсчитанное количество равно 2n, кодовое слово «1» записывается в битовый поток. В противном случае, записывается «0», за которым следует двоичное представление подсчитанного количества, записанное с n битами.In an encoder (any of the 310), bins are read from a stream of bins (ie 7) until a 1 is encountered, or until 2 n 0s are read. The number of 0s is counted. If the counted quantity is 2n , the codeword "1" is written to the bitstream. Otherwise, a "0" is written, followed by the binary representation of the counted quantity, written with n bits.

В декодере (любом из 322) считывается один бит. Если он равен «1», 2n 0 декодируется в строку бинов. Если он равен «0», еще n битов считывается и интерпретируется как двоичное представление количества. Это количество 0 декодируется в поток бинов, за которым следует «1».In the decoder (any of 322) one bit is read. If it is "1", 2 n 0 is decoded into a string of bins. If it is "0", another n bits are read and interpreted as a binary representation of the quantity. This number of 0's is decoded into a stream of bins followed by "1's".

Другими словами, только что описанные варианты осуществления описывают кодер для кодирования последовательности символов 303, содержащий средство 316 назначения, выполненное с возможностью назначения нескольких параметров 305 каждому символу последовательности символов, основываясь на информации, содержащейся в предыдущих символах последовательности символов; множество энтропийных кодеров 310, каждый из которых выполнен с возможностью преобразования символов 307, направляемых соответствующему энтропийному кодеру 310, в соответствующий битовый поток 312; и селектор 6, выполненный с возможностью направлять каждый символ 303 выбранному одному из множества энтропийных кодеров 10, причем выбор зависит от количества параметров 305, назначенных соответствующему символу 303. Согласно только что описанным вариантам осуществления по меньшей мере первое подмножество энтропийных кодеров может представлять собой кодер переменной длины, выполненный с возможностью отображения последовательностей символов переменной длины в потоке символов 307 на кодовые слова переменной длины, подлежащие вставлению в битовый поток 312 соответственно, причем каждый из энтропийных кодеров 310 первого подмножества использует правило биективного отображения, согласно которому кодовые слова первичного беспрефиксного кода с (2n-1)≥3 кодовыми словами отображаются на кодовые слова вторичного беспрефиксного кода, который идентичен первичному префиксному коду, так что все кроме двух из кодовых слов первичного беспрефиксного кода отображаются на идентичные кодовые слова вторичного беспрефиксного кода, тогда как два кодовых слова первичного и вторичного беспрефиксных кодов имеют разные длины и отображаются друг на друга попеременно, причем энтропийные кодеры могут использовать разные n, чтобы закрывать разные части интервала вышеупомянутого интервала вероятностей. Первый беспрефиксный код может составляться так, что кодовыми словами первого беспрефиксного кода являются (a,b)2, (a,a,b)3, …, (a, …, a,b)n, (a, …, a)n, (b,a)2, (b,b,a)3, …, (b, …, b,a)n-1, (b, …, b)n-1, и двумя кодовыми словами, отображаемыми друг на друга попеременно, являются (a, …, a)n и (b, …, b)n-1 с b≠a и a,b{0,1}. Однако возможны альтернативы.In other words, the embodiments just described describe an encoder for encoding a symbol sequence 303, comprising an assigner 316 configured to assign multiple parameters 305 to each symbol of the symbol sequence based on information contained in previous symbols of the symbol sequence; a plurality of entropy encoders 310, each configured to convert symbols 307 sent to a corresponding entropy encoder 310 into a corresponding bit stream 312; and a selector 6 configured to route each symbol 303 to a selected one of a plurality of entropy encoders 10, the selection depending on the number of parameters 305 assigned to the corresponding symbol 303. According to the embodiments just described, at least the first subset of entropy encoders may be a variable encoder length, configured to map sequences of variable length symbols in symbol stream 307 to variable length codewords to be inserted into bitstream 312, respectively, each of the first subset entropy encoders 310 using a bijective mapping rule whereby codewords of the primary unprefixed code with ( 2n-1)≥3 codewords are mapped to codewords of a secondary prefix-free code that is identical to the primary prefix code, such that all but two of the primary prefix-free code codewords are mapped to identical codewords of the secondary prefix-free code, whereas two codewords of the primary and secondary prefix-free codes have different lengths and map onto each other alternately, with entropy coders able to use different n to cover different parts of the above-mentioned probability interval. The first prefix-free code can be composed such that the code words of the first prefix-free code are (a,b) 2 , (a,a,b) 3 , ..., (a, ..., a,b) n , (a, ..., a) n , (b,a) 2 , (b,b,a) 3 , …, (b, …, b,a) n-1 , (b, …, b) n-1 , and two codewords displayed on each other alternately, are (a, …, a) n and (b, …, b) n-1 with b≠a and a,b {0,1}. However, alternatives are possible.

Другими словами, каждый из первого подмножества энтропийных кодеров может быть выполнен, при преобразовании символов, направляемых соответствующему энтропийному кодеру, в соответствующий битовый поток, с возможностью исследования первого символа, направляемого соответствующему энтропийному кодеру, для определения, (1) равен ли первый символ a{0,1}, в этом случае соответствующий энтропийный кодер выполняется с возможностью исследования следующих символов, направляемых соответствующему энтропийному кодеру, для определения, (1.1) встречается ли b с b≠a и b{0,1} в следующих n-1 символах, следующих за первым символом, в этом случае соответствующий энтропийный кодер выполняется с возможностью записи кодового слова в соответствующий битовый поток, который равен первому символу, за которым следуют последующие символы, направляемые соответствующему энтропийному кодеру, до символа b; (1.2) не встречается ли b в следующих n-1 символах, следующих за первым символом, в этом случае соответствующий энтропийный кодер выполняется с возможностью записи кодового слова в соответствующий битовый поток, который равен (b, …, b)n-1; или (2) равен ли первый символ b, в этом случае соответствующий энтропийный кодер выполняется с возможностью исследования последующих символов, направляемых соответствующему энтропийному кодеру, для определения, (2.1) встречается ли a в следующих n-2 символах, следующих за первым символом, в этом случае соответствующий энтропийный кодер выполняется с возможностью записи кодового слова в соответствующий битовый поток, которое равно первому символу, за которым следуют последующие символы, направляемые соответствующему энтропийному кодеру, до символа a; или (2.2) не встречается ли a в следующих n-2 символах, следующих за первым символом, в этом случае соответствующий энтропийный кодер выполняется с возможностью записи кодового слова в соответствующий битовый поток, которое равно (a, …, a)n.In other words, each of the first subset of entropy encoders may be executed by converting symbols sent to the corresponding entropy encoder to a corresponding bit stream, with the ability to examine the first symbol sent to the corresponding entropy encoder to determine whether (1) the first symbol is equal to a {0,1}, in which case the corresponding entropy encoder is executed with the ability to examine the next symbols sent to the corresponding entropy encoder to determine whether (1.1) b occurs with b≠a and b {0,1} in the next n-1 symbols following the first symbol, in which case the corresponding entropy encoder is configured to write a codeword into the corresponding bitstream, which is equal to the first symbol followed by subsequent symbols sent to the corresponding entropy encoder, before character b; (1.2) whether b occurs in the next n-1 symbols following the first symbol, in which case the corresponding entropy encoder is executed with the ability to write the codeword into the corresponding bitstream, which is equal to (b, ..., b) n-1 ; or (2) whether the first symbol is equal to b, in which case the corresponding entropy encoder is executed with the ability to examine subsequent symbols sent to the corresponding entropy encoder to determine whether (2.1) whether a occurs in the next n-2 symbols following the first symbol, in In this case, the corresponding entropy encoder is configured to write a codeword into the corresponding bit stream, which is equal to the first symbol, followed by subsequent symbols sent to the corresponding entropy encoder, up to the symbol a; or (2.2) whether a occurs in the next n-2 symbols following the first symbol, in which case the corresponding entropy encoder is executed with the ability to write a codeword into the corresponding bitstream, which is equal to (a, ..., a) n .

Дополнительно или альтернативно, второе подмножество энтропийных кодеров 10 может представлять собой кодер переменной длины, выполненный с возможностью отображения последовательностей символов переменной длины на кодовые слова фиксированной длины соответственно, причем каждый из энтропийных кодеров второго подмножества использует правило биективного отображения, согласно которому кодовые слова первичного усеченного унарного кода с 2n+1 кодовыми словами типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и a,b{0,1} отображаются на кодовые слова вторичного беспрефиксного кода, так что кодовое слово (bb…b) первичного усеченного унарного кода отображается на кодовое слово (c) вторичного беспрефиксного кода, и все другие кодовые слова {(a), (ba), (bba), …, (b…ba)} первичного усеченного унарного кода отображаются на кодовые слова, имеющие (d) с c≠d и c,d{0,1} в качестве префикса и n-битовое слово в качестве суффикса, причем энтропийные кодеры используют разные n. Каждый из второго подмножества энтропийных кодеров может быть выполнен так, что n-битовое слово представляет собой n-битовое представление количества b в соответствующем кодовом слове первичного усеченного унарного кода. Однако возможны альтернативы.Additionally or alternatively, the second subset of entropy encoders 10 may be a variable-length encoder configured to map variable-length symbol sequences to fixed-length codewords, respectively, wherein each of the second subset of entropy encoders uses a bijective mapping rule whereby the codewords of the primary truncated unary code with 2 n +1 codewords of type {(a), (ba), (bba), …, (b…ba), (bb…b)} with b≠a and a,b {0,1} are mapped to codewords of the secondary unprefixed code, so that codeword (bb...b) of the primary truncated unary code is mapped to codeword (c) of the secondary unprefixed code, and all other codewords {(a), (ba) , (bba), …, (b…ba)} of the primary truncated unary code are mapped onto codewords having (d) with c≠d and c,d {0,1} as a prefix and an n-bit word as a suffix, with entropy encoders using different n. Each of the second subset of entropy encoders may be configured such that the n-bit word is an n-bit representation of the quantity b in the corresponding code word of the primary truncated unary code. However, alternatives are possible.

Снова, с точки зрения режима работы соответствующего кодера 10, каждый из второго подмножества энтропийных кодеров может быть выполнен, при преобразовании символов, направляемых соответствующему энтропийному кодеру, в соответствующий битовый поток, с возможностью подсчета количества b в последовательности символов, направляемых соответствующему энтропийному кодеру до тех пор, пока не встретится, или пока количество последовательности символов, направляемых соответствующему энтропийному кодеру, не достигнет 2n, причем все 2n символов в последовательности равны b, и (1) если количество b равно 2n, записи c с c{0,1} в качестве кодового слова вторичного беспрефиксного кода в соответствующий битовый поток, и (2) если количество b меньше 2n, записи кодового слова вторичного беспрефиксного кода в соответствующий битовый поток, которое имеет (d) с c≠d и d{0,1} в качестве префикса и n-битовое слово, определенное в зависимости от количества b, в качестве суффикса.Again, in terms of the mode of operation of the corresponding encoder 10, each of the second subset of entropy encoders may be executed by converting the symbols sent to the corresponding entropy encoder into a corresponding bitstream, with the ability to count the number of b in the sequence of symbols sent to the corresponding entropy encoder until until encountered, or until the number of symbol sequences sent to the corresponding entropy encoder reaches 2n , with all 2n symbols in the sequence equal to b, and (1) if the number of b is 2n , records c with c {0,1} as a codeword of the secondary prefix-free code into the corresponding bitstream, and (2) if the number of b is less than 2n , writing the codeword of the secondary prefix-free code into the corresponding bitstream which has (d) with c≠d and d {0,1} as a prefix and an n-bit word defined depending on the number of b as a suffix.

Также дополнительно или альтернативно, предварительно определенным одним из энтропийных кодеров 10 может быть кодер переменной длины, выполненный с возможностью отображения последовательностей символов фиксированной длины на кодовые слова переменной длины соответственно, причем предварительно определенный энтропийный кодер использует правило биективного отображения, согласно которому 23 кодовых слов длиной 3 первичного кода отображаются на кодовые слова вторичного беспрефиксного кода, так что кодовое слово (aaa)3 первичного кода с a{0,1}, отображается на кодовое слово (с) с c{0,1}, все три кодовых слова первичного кода, имеющие точно одну b с b≠a и b{0,1}, отображаются на кодовые слова, имеющие (d) с c≠d и d{0,1}, в качестве префикса и соответствующее первое 2-битовое слово из первого множества 2-битовых слов в качестве суффикса, все три кодовых слова первичного кода, имеющие точно одну a, отображаются на кодовые слова, имеющие (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и второго 2-битового слова из второго множества 2-битовых слов, в качестве суффикса, и в котором кодовое слово (bbb)3 отображается на кодовое слово, имеющее (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и второго 2-битового слова, не являющегося элементом второго множества, в качестве суффикса. Первым 2-битовым словом кодовых слов первичного кода, имеющим точно одну b, может быть 2-битовое представление позиции b в соответствующем кодовом слове первичного кода, и вторым 2-битовым словом из кодовых слов первичного кода, имеющим точно одно a, может быть 2-битовое представление позиции a в соответствующем кодовом слове первичного кода. Однако возможны альтернативы.Also additionally or alternatively, a predefined one of the entropy encoders 10 may be a variable length encoder configured to map sequences of fixed length symbols to variable length codewords, respectively, wherein the predefined entropy encoder uses a bijective mapping rule whereby 2 by 3 codewords of length The 3 primary codes map to codewords of the secondary prefix-free code, so that codeword (aaa) 3 of the primary code with a {0,1}, mapped to codeword (c) with c {0,1}, all three primary code words having exactly one b with b≠a and b {0,1}, are mapped to codewords having (d) with c≠d and d {0,1} as a prefix and the corresponding first 2-bit word of the first set of 2-bit words as a suffix, all three primary code codewords having exactly one a are mapped to codewords having (d) as prefix and concatenation of a first 2-bit word not a member of the first set and a second 2-bit word from the second set of 2-bit words as a suffix, and in which codeword (bbb) 3 is mapped to a codeword having (d ) as a prefix and the concatenation of the first 2-bit word that is not an element of the first set and the second 2-bit word that is not an element of the second set as a suffix. The first 2-bit word of the primary code codewords having exactly one b may be the 2-bit representation of the position of b in the corresponding primary code codeword, and the second 2-bit word of the primary code codewords having exactly one a may be 2 -bit representation of position a in the corresponding codeword of the primary code. However, alternatives are possible.

Снова предварительно определенный один из энтропийных кодеров может быть выполнен, при преобразовании символов, направляемых предварительно определенному энтропийному кодеру, в соответствующий битовый поток, с возможностью исследования символов на предварительно определенный энтропийный кодер в тройках, (1) состоит ли тройка из a, в этом случае предварительно определенный энтропийный кодер выполняется с возможностью записи кодового слова (c) в соответствующий битовый поток, (2) содержит ли тройка точно одну b, в этом случае предварительно определенный энтропийный кодер выполняется с возможностью записи кодового слова, имеющего (d) в качестве префикса и 2-битовое представление позиции b в тройке в качестве суффикса, в соответствующий битовый поток; (3) содержит ли тройка точно одно a, в этом случае предварительно определенный энтропийный кодер выполняется с возможностью записи кодового слова, имеющего (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и 2-битового представления позиции a в тройке в качестве суффикса, в соответствующий битовый поток; или (4) состоит ли тройка из b, в этом случае предварительно определенный энтропийный кодер выполняется с возможностью записи кодового слова, имеющего (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и первого 2-битового слова, не являющегося элементом второго множества, в качестве суффикса, в соответствующий битовый поток.Again, a predefined one of the entropy encoders can be performed by converting the symbols sent to the predefined entropy encoder into the corresponding bitstream, with the ability to examine the symbols per predefined entropy encoder in triplets, (1) whether the triplet consists of a, in which case a predefined entropy encoder is executable to write a codeword (c) into the corresponding bit stream, (2) whether the triple contains exactly one b, in which case the predefined entropy encoder is executable to write a codeword having (d) as a prefix, and a 2-bit representation of the position of b in the triple as a suffix, into the corresponding bitstream; (3) whether the triple contains exactly one a, in which case a predefined entropy encoder is executed with the ability to write a codeword having (d) as a prefix and the concatenation of the first 2-bit word not an element of the first set and the 2-bit representation the position of a in the triple as a suffix, into the corresponding bitstream; or (4) whether the triple consists of b, in which case a predefined entropy encoder is executed with the ability to write a codeword having (d) as a prefix and the concatenation of the first 2-bit word not an element of the first set and the first 2-bit a word that is not an element of the second set as a suffix into the corresponding bit stream.

Что касается декодирующей стороны, только что описанные варианты осуществления описывают декодер для восстановления последовательности символов 326, содержащий множество энтропийных декодеров 322, каждый из которых выполнен с возможностью преобразования соответствующего битового потока 324 в символы 321; средство 316 назначения, выполненное с возможностью назначения нескольких параметров каждому символу 326 последовательности символов, подлежащих восстановлению, основываясь на информации, содержащейся в ранее восстановленных символах последовательности символов; и селектор 318, выполненный с возможностью извлечения каждого символа 325 последовательности символов, подлежащих восстановлению, из выбранного одного из множества энтропийных декодеров, причем выбор зависит от количества параметров, определенных соответствующему символу. Согласно только что описанным вариантам осуществления по меньшей мере первое подмножество энтропийных декодеров 322 представляет собой декодеры переменной длины, выполненные с возможностью отображения кодовых слов переменной длины на последовательности символов переменной длины соответственно, причем каждый из энтропийных декодеров 22 первого подмножества использует правило биективного отображения, в соответствии с которыми кодовые слова первичного беспрефиксного кода с (2n-1)≥3 кодовыми словами отображаются на кодовые слова вторичного беспрефиксного кода, который идентичен первичному префиксному коду, так что все кроме двух из кодовых слов первичного беспрефиксного кода отображаются на идентичные кодовые слова вторичного беспрефиксного кода, тогда как два кодовых слова первичного и вторичного беспрефиксных кодов имеют разные длины и отображаются друг на друга попеременно, причем энтропийные кодеры используют разные n. Первый беспрефиксный код может быть построен так, что кодовыми словами первого беспрефиксного кода являются (a,b)2, (a,a,b)3, …, (a, …, a,b)n, (a, …, a)n, (b,a)2, (b,b,a)3, …, (b, …, b,a)n-1, (b, …, b)n-1, и двумя кодовыми словами, отображаемыми друг на друга попеременно, могут быть (a, …, a)n и (b, …, b)n-1 с b≠a и a,b{0,1}. Однако возможны альтернативы.On the decoding side, the embodiments just described describe a symbol sequence recovery decoder 326 comprising a plurality of entropy decoders 322, each configured to convert a corresponding bitstream 324 into symbols 321; an assignment means 316 configured to assign multiple parameters to each character 326 of the character sequence to be recovered based on information contained in the previously recovered symbols of the character sequence; and a selector 318 configured to extract each symbol 325 of the symbol sequence to be recovered from a selected one of a plurality of entropy decoders, the selection depending on the number of parameters defined for the corresponding symbol. According to the embodiments just described, at least the first subset of entropy decoders 322 are variable length decoders configured to map variable length codewords onto variable length symbol sequences, respectively, wherein each of the first subset entropy decoders 22 uses a bijective mapping rule, according to with which codewords of a primary prefix-free code with (2n-1)≥3 codewords are mapped onto codewords of a secondary prefix-free code that is identical to the primary prefix code, such that all but two of the primary prefix-free code codewords are mapped to identical codewords of the secondary prefix-free code , while the two codewords of the primary and secondary prefix-free codes have different lengths and are mapped onto each other alternately, with entropy coders using different n. The first prefix-free code can be constructed so that the code words of the first prefix-free code are (a,b) 2 , (a,a,b) 3 , ..., (a, ..., a,b) n , (a, ..., a ) n , (b,a) 2 , (b,b,a) 3 , …, (b, …, b,a) n-1 , (b, …, b) n-1 , and two codewords, mapped onto each other alternately, there can be (a, …, a) n and (b, …, b) n-1 with b≠a and a,b {0,1}. However, alternatives are possible.

Каждый из первого подмножества энтропийных кодеров может быть выполнен, при преобразовании соответствующего битового потока в символы, с возможностью исследования первого бита соответствующего битового потока, для определения, (1) равен ли первый бит a 0 {0,1}, в этом случае соответствующий энтропийный кодер выполняется с возможностью исследования следующих битов соответствующего битового потока для определения, (1.1) встречается ли b с b≠a и b 0 {0,1} в следующих n-1 битах, следующих за первым битом, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна первому биту, за которым следуют последующие биты соответствующего битового потока, до бита b; или (1.2) не встречается ли b в следующих n-1 битах, следующих за первым битом, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (b, …, b)n-1; или (2) равен ли первый бит b, в этом случае соответствующий энтропийный декодер выполняется с возможностью исследования последующих битов соответствующего битового потока для определения, (2.1) встречается ли a в следующих n-2 битах, следующих за первым битом, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна первому биту, за которым следуют последующие биты соответствующего битового потока до символа a; или (2.2) не встречается ли a в следующих n-2 битах, следующих за первым битом, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (a, …, a)n.Each of the first subset of entropy encoders may be implemented, when converting the corresponding bit stream into symbols, with the ability to examine the first bit of the corresponding bit stream to determine (1) whether the first bit a 0 {0,1}, in which case the corresponding entropy the encoder is executed with the ability to examine the next bits of the corresponding bitstream to determine whether (1.1) b occurs with b≠a and b 0 {0,1} in the next n-1 bits following the first bit, in which case the corresponding entropy decoder is executed with the ability to restore a sequence of symbols that is equal to the first bit followed by subsequent bits of the corresponding bit stream, up to bit b; or (1.2) whether b occurs in the next n-1 bits following the first bit, in which case the corresponding entropy decoder is executed with the ability to recover a sequence of symbols that is equal to (b, ..., b) n-1 ; or (2) whether the first bit is equal to b, in which case the corresponding entropy decoder is executed with the ability to examine subsequent bits of the corresponding bitstream to determine whether (2.1) whether a occurs in the next n-2 bits following the first bit, in which case the corresponding the entropy decoder is configured to recover a sequence of symbols that is equal to the first bit followed by subsequent bits of the corresponding bit stream up to symbol a; or (2.2) whether a does not occur in the next n-2 bits following the first bit, in which case the corresponding entropy decoder is executed with the ability to recover a sequence of symbols that is equal to (a, ..., a) n .

Дополнительно или альтернативно, по меньшей мере второе подмножество энтропийных декодеров 322 может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов фиксированной длины на последовательности символов переменной длины соответственно, причем каждый из энтропийных декодеров второго подмножества использует правило биективного отображения, согласно которому кодовые слова вторичного беспрефиксного кода отображаются на кодовые слова первичного усеченного унарного кода с 2n+1 кодовыми словами типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и a,b{0,1}, так что кодовое слово (c) вторичного беспрефиксного кода отображается на кодовое слово (bb…b) первичного усеченного унарного кода, и кодовые слова, имеющие (d) с c≠d и c,d{0,1} в качестве префикса и n-битовое слово в качестве суффикса, отображаются на соответствующее одно из других кодовых слов {(a), (ba), (bba), …, (b…ba))} первичного усеченного унарного кода, причем энтропийные декодеры используют разные n. Каждый из второго подмножества энтропийных декодеров может быть выполнен так, что n-битовое слово представляет собой n-битовое представление количества b в соответствующем кодовом слове первичного усеченного унарного кода. Однако возможны альтернативы.Additionally or alternatively, at least the second subset of entropy decoders 322 may be a variable-length decoder configured to map fixed-length codewords onto variable-length symbol sequences, respectively, wherein each of the second subset of entropy decoders uses a bijective mapping rule whereby the codewords secondary prefix-free code are mapped onto codewords of a primary truncated unary code with 2 n +1 codewords of type {(a), (ba), (bba), …, (b…ba), (bb…b)} with b≠a and a,b {0,1}, so that codeword (c) of the secondary prefix-free code is mapped to codeword (bb...b) of the primary truncated unary code, and codewords having (d) with c≠d and c,d {0,1} as a prefix and an n-bit word as a suffix, are mapped to the corresponding one of the other codewords {(a), (ba), (bba), …, (b…ba))} of the primary truncated unary code, and entropy decoders use different n. Each of the second subset of entropy decoders may be configured such that the n-bit word is an n-bit representation of the quantity b in the corresponding primary truncated unary code word. However, alternatives are possible.

Каждый из второго подмножества энтропийных декодеров может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов фиксированной длины на последовательности символов переменной длины соответственно, и выполненный, при преобразовании битового потока соответствующего энтропийного декодера в символы, с возможностью исследования первого бита соответствующего битового потока для определения, (1) равен ли он c с c{0,1}, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (bb…b)2 n с b{0,1}; или (2) равен ли он d с c≠d и c,d{0,1}, в этом случае соответствующий энтропийный декодер выполняется с возможностью определения n-битового слова из n дополнительных битов соответствующего битового потока, следующих за первым битом, и восстановления из них последовательности символов, которая является типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и b{0,1}, причем количество b зависит от n-битового слова.Each of the second subset of entropy decoders may be a variable-length decoder configured to map fixed-length codewords onto variable-length symbol sequences, respectively, and configured, when converting the bit stream of the corresponding entropy decoder into symbols, to examine the first bit of the corresponding bit stream for determining (1) whether it is equal to c with c {0,1}, in this case the corresponding entropy decoder is executed with the ability to restore a sequence of symbols that is equal to (bb...b) 2 n with b {0,1}; or (2) is it equal to d with c≠d and c,d {0,1}, in which case the corresponding entropy decoder is configured to determine an n-bit word from the n additional bits of the corresponding bit stream following the first bit, and recover from them a sequence of symbols that is of the type {(a), (ba ), (bba), …, (b…ba), (bb…b)} with b≠a and b {0,1}, and the number of b depends on the n-bit word.

Дополнительно или альтернативно, предварительно определенный один из энтропийных декодеров 322 может быть декодером переменной длины, выполненным с возможностью отображения кодовых слов переменной длины на последовательности символов фиксированной длины соответственно, причем предварительно определенный энтропийный декодер использует правило биективного отображения, согласно которому кодовые слова вторичного беспрефиксного кода отображаются на 23 кодовые слова длины 3 первичного кода, так что кодовое слово (c) с c{0,1} отображается на кодовое слово (aaa)3 первичного кода с a{0,1}, кодовые слова, имеющие (d) с c≠d и d{0,1} в качестве префикса и соответствующее первое 2-битовое слово из первого множества из трех 2-битовых слов в качестве суффикса, отображаются на все три кодовые слова первичного кода, имеющих точно одну b с b≠a и b{0,1}, кодовые слова, имеющие (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и второго 2-битового слова из второго множества из трех 2-битовых слов, в качестве суффикса, отображаются на все три кодовых слова первичного кода, имеющих точно одно a, и кодовое слово, имеющее (d) в качестве префикса и конкатенацию первого 2-битового слова, не являющегося элементом первого множества, и второго 2-битового слова, не являющегося элементом второго множества, в качестве суффикса, отображается на кодовое слово (bbb)3. Первое 2-битовое слово из кодовых слов первичного кода, имеющее точно одну b, может представлять собой 2-битовое представление позиции b в соответствующем кодовом слове первичного кода, и второе 2-битовое слово из кодовых слов первичного кода, имеющее точно одну a, может представлять собой 2-битовое представление позиции a в соответствующем кодовом слове первичного кода. Однако возможны альтернативы.Additionally or alternatively, a predefined one of the entropy decoders 322 may be a variable length decoder configured to map variable length codewords onto a fixed length symbol sequence, respectively, wherein the predefined entropy decoder uses a bijective mapping rule whereby codewords of a secondary prefix-free code are mapped by 2 3 codewords of length 3 primary code, so codeword (c) with c {0,1} maps to codeword (aaa) 3 of the primary code with a {0,1}, codewords having (d) with c≠d and d {0,1} as a prefix and the corresponding first 2-bit word from the first set of three 2-bit words as a suffix, map to all three primary code codewords having exactly one b with b≠a and b {0,1}, codewords having (d) as a prefix and the concatenation of the first 2-bit word not a member of the first set and the second 2-bit word from the second set of three 2-bit words as a suffix, are mapped to all three codewords of the primary code having exactly one a, and a codeword having (d) as a prefix and the concatenation of the first 2-bit word not an element of the first set and the second 2-bit word not an element of the second sets, as a suffix, is mapped to the code word (bbb) 3 . The first 2-bit word of the primary code codewords having exactly one b can be a 2-bit representation of the position of b in the corresponding primary code codeword, and the second 2-bit word of the primary code codewords having exactly one a can be a 2-bit representation of position a in the corresponding primary code word. However, alternatives are possible.

Предварительно определенный один из энтропийных декодеров может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов переменной длины на последовательности символов из трех символов каждая соответственно, и выполненный, при преобразовании битового потока соответствующего энтропийного декодера в символы, с возможностью исследования первого бита соответствующего битового потока для определения, (1) равен ли первый бит соответствующего битового потока c с c{0,1}, в этом случае заданный энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (aaa)3 с a 0 {0,1}; или (2) равен ли первый бит соответствующего битового потока d с c≠d и d{0,1}, в этом случае предварительно определенный энтропийный декодер выполняется с возможностью определения первого 2-битового слова из 2 дополнительных битов соответствующего битового потока, который следует за первым битом, и с возможностью исследования первого 2-битового слова для определения, (2.1) не является ли первое 2-битовое слово элементом первого множества из трех 2-битовых слов, в этом случае предварительно определенный энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая имеет точно одну b с b≠a и b 0 {0,1}, причем позиция b в соответствующей последовательности символов зависит от первого 2-битового слова, или (2.2) является ли первое 2-битовое слово элементом первого множества, в этом случае предварительно определенный энтропийный декодер выполняется с возможностью определения второго 2-битового слова из 2 дополнительных битов соответствующего битового потока, следующих за двумя битами, из которых было определено первое 2-битовое слово, и с возможностью исследования второго 2-битового слова для определения, (3.1) не является ли второе 2-битовое слово элементом второго множества из трех 2-битовых слов, в этом случае предварительно определенный энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая имеет точно одну a, причем позиция a в соответствующей последовательности символов зависит от второго 2-битового слова, или (3.2) является ли второе 2-битовое слово элементом второго множества из трех 2-битовых слов, в этом случае предварительно определенный энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (bbb)3.A predetermined one of the entropy decoders may be a variable length decoder, configured to map variable length codewords onto a symbol sequence of three symbols each, respectively, and configured, when converting the bitstream of the corresponding entropy decoder into symbols, to examine the first bit of the corresponding bitstream stream to determine whether (1) the first bit of the corresponding bitstream c is equal to c {0,1}, in this case the given entropy decoder is executed with the ability to recover a sequence of symbols that is equal to (aaa) 3 with a 0 {0,1}; or (2) whether the first bit of the corresponding bitstream is equal to d with c≠d and d {0,1}, in this case the predefined entropy decoder is executed with the ability to determine the first 2-bit word of the 2 additional bits of the corresponding bitstream that follows the first bit, and with the ability to examine the first 2-bit word to determine, (2.1 ) whether the first 2-bit word is an element of the first set of three 2-bit words, in which case a predefined entropy decoder is executed with the ability to recover a sequence of symbols that has exactly one b with b≠a and b 0 {0,1} , where the position of b in the corresponding symbol sequence depends on the first 2-bit word, or (2.2) whether the first 2-bit word is an element of the first set, in which case a predefined entropy decoder is executed with the ability to determine the second 2-bit word from 2 additional bits of the corresponding bit stream following the two bits from which the first 2-bit word was defined, and with the possibility of examining the second 2-bit word to determine whether the second 2-bit word is an element of the second set of three 2-bits bit words, in which case the predefined entropy decoder is executed with the ability to recover a symbol sequence that has exactly one a, where the position of a in the corresponding symbol sequence depends on the second 2-bit word, or (3.2) whether the second 2-bit word is an element a second set of three 2-bit words, in which case a predefined entropy decoder is executed with the ability to recover a sequence of symbols that is equal to (bbb) 3 .

Теперь после описания общего принципа схемы видеокодирования описываются варианты осуществления настоящего изобретения в отношении вышеупомянутых вариантов осуществления. Другими словами, варианты осуществления, кратко описанные ниже, могут быть реализованы посредством использования вышеупомянутых схем, и наоборот, вышеупомянутые схемы кодирования могут быть реализованы с использованием и применением вариантов осуществления, кратко описанных ниже.Now that the general principle of a video coding scheme has been described, embodiments of the present invention will be described with respect to the above-mentioned embodiments. In other words, the embodiments briefly described below can be implemented by using the above-mentioned circuits, and conversely, the above encoding schemes can be implemented using and using the embodiments briefly described below.

В вышеупомянутых вариантах осуществления, описанных в отношении фиг. 7-9, энтропийный кодер и декодеры по фиг. 1-6, были реализованы в соответствии с принципом PIPE. Один особый вариант осуществления использовал кодеры/декодеры 310 и 322 с арифметическим одновероятностным состоянием. Как описано ниже, согласно альтернативному варианту осуществления объекты 306-310 и соответствующие объекты 318-322 могут быть заменены обычным механизмом энтропийного кодирования. В качестве примера, представим механизм арифметического кодирования, который управляет только одним общим состоянием R и L и кодирует все символы в один общий битовый поток, таким образом отказываясь от полезных аспектов настоящего принципа PIPE, касающегося параллельной обработки, но исключая необходимость перемежения частичных битовых потоков, как дополнительно описано ниже. Делая так, количество вероятностных состояний, посредством которых вероятности контекста оцениваются посредством обновления (такого как табличный поиск), может быть выше, чем количество вероятностных состояний, посредством которых выполняется подразделение интервала вероятностей. Т.е. аналогично квантованию значения ширины интервала вероятностей перед индексированием в таблицу Rtab, также может квантоваться индекс состояния вероятности. Вышеупомянутое описание для возможной реализации для единственных кодеров/декодеров 310 и 322, таким образом, может быть расширено для примера реализации энтропийных кодеров/декодеров 318-322/306-310 в качестве механизмов контекстно-адаптивного двоичного арифметического кодирования/декодирования.In the above embodiments described with respect to FIGS. 7-9, the entropy encoder and decoders of FIG. 1-6 were implemented in accordance with the PIPE principle. One particular embodiment used arithmetic single-probability state encoders/decoders 310 and 322. As described below, according to an alternative embodiment, objects 306-310 and corresponding objects 318-322 can be replaced by a conventional entropy encoding mechanism. As an example, imagine an arithmetic encoding mechanism that manages only one common state R and L and encodes all symbols into one common bitstream, thus abandoning the beneficial parallel processing aspects of the present PIPE principle, but eliminating the need for interleaving partial bitstreams. as further described below. By doing so, the number of probabilistic states by which context probabilities are estimated through an update (such as a table lookup) may be higher than the number of probabilistic states by which subdivision of the probability interval is performed. Those. Similar to quantizing the probability interval width value before indexing into the Rtab table, the probability state index can also be quantized. The above description for a possible implementation for single encoders/decoders 310 and 322 can thus be extended to an example implementation of entropy encoders/decoders 318-322/306-310 as context-adaptive binary arithmetic encoding/decoding engines.

Более точно, согласно варианту осуществления энтропийный кодер, подсоединенный к выходу средства назначения параметра (который служит здесь в качестве средства назначения контекста), может работать следующим образом:More specifically, according to an embodiment, an entropy encoder connected to the output of the parameter assigner (which here serves as the context assigner) may operate as follows:

0. Средство 304 назначения направляет значение бина вместе с параметром вероятности. Вероятность равна pState_current[bin].0. The assignor 304 forwards the bin value along with the probability parameter. The probability is pState_current[bin].

1. Таким образом, механизм энтропийного кодирования принимает: 1) valLPS, 2) бин и 3) оценку pState_current[bin] распределения вероятности. pState_current[bin] может иметь больше состояний, чем количество индексов различимых вероятностных состояний Rtab. Если это так, pState_current[bin] может квантоваться, так что, например, посредством игнорирования m младших значащих битов (LSB), при этом m больше или равно 1 или предпочтительно 2 или 3 для получения p_state, т.е. индекс, который затем используется для доступа к таблице Rtab. Квантование, однако, может быть исключено, т.е. p_state может быть pState_current[bin].1. Thus, the entropy encoding mechanism takes: 1) valLPS, 2) bin, and 3) probability distribution estimate pState_current[bin]. pState_current[bin] can have more states than the number of distinguishable probabilistic state indices Rtab. If this is the case, pState_current[bin] may be quantized so that, for example, by ignoring m least significant bits (LSB), with m greater than or equal to 1 or preferably 2 or 3 to obtain p_state, i.e. an index which is then used to access the Rtab table. Quantization, however, can be excluded, i.e. p_state can be pState_current[bin].

2. Затем выполняется квантование R (Как упомянуто выше: или один R (и соответствующий L с одним общим битовым потоком) используется/управляется для всех различимых значений p_state, или одно R (и соответствующий L с ассоциированным частичным битовым потоком на пару R/L) на различимое значение p_state, этот последний случай будет соответствовать тому, что имеется один кодер 310 бинов на такое значение)2. R quantization is then performed (As mentioned above: either one R (and corresponding L with one shared bitstream) is used/managed for all distinguishable p_state values, or one R (and corresponding L with associated partial bitstream per R/L pair ) to a distinguishable p_state value, this latter case would correspond to the fact that there is one 310 bin encoder for such a value)

q_index=Qtab[R>>q] (или некоторый другой вид квантования)q_index=Qtab[R>>q] (or some other kind of quantization)

3. Затем выполняется определение RLPS и R:3. Then the determination of R LPS and R is performed:

RLPS=Rtab[p_state][q_index]; Rtab сохранил в нем предварительно вычисленные значения для p[p_state]∙Q[q_index]R LPS =Rtab[p_state][q_index]; Rtab stored pre-calculated values for p[p_state]∙Q[q_index] in it

R=R-RLPS [т.е. R предварительно предобновляется, как если бы «бином» был MPS (наиболее вероятный символ)]R=RR LPS [i.e. R is pre-updated as if the "bin" were MPS (most probable symbol)]

4. Вычисление нового предварительного интервала:4. Calculate the new preliminary interval:

if (bin=1-valMPS) thenif (bin=1-valMPS) then

L ¬ L+RL ¬ L+R

R ¬ RLPS R ¬ R LPS

5. Ренормализация L и R, запись битов,5. L and R renormalization, bit recording,

Аналогично, энтропийный декодер, присоединенный к выходу средства назначения параметра (который служит здесь в качестве средства назначения контекста) может работать следующим образом:Likewise, an entropy decoder connected to the output of the parameter assigner (which serves here as the context assigner) can operate as follows:

0. Средство 304 назначения направляет значение бина вместе с параметром вероятности. Вероятностью является pState_current[bin].0. The assignor 304 forwards the bin value along with the probability parameter. The probability is pState_current[bin].

1. Таким образом, механизм энтропийного декодирования принимает запрос бина вместе с: 1) valLPS, и 2) оценкой распределения вероятности pState_current[bin]. pState_current[bin] может иметь больше состояний, чем количество индексов различимых вероятностных состояний Rtab. Если это так, pState_current[bin] может квантоваться так, например, пренебрегая m LSB, причем m больше или равен 1 и предпочтительно 2 или 3 для получения p_state, т.е. индекса, который затем используется для доступа к таблице Rtab. Квантование, однако, может исключаться, т.е. p_state может быть pState_current[bin].1. Thus, the entropy decoding engine accepts a bin request along with: 1) valLPS, and 2) an estimate of the probability distribution pState_current[bin]. pState_current[bin] can have more states than the number of distinguishable probabilistic state indices Rtab. If so, pState_current[bin] can be quantized like this, for example neglecting m LSB, with m greater than or equal to 1 and preferably 2 or 3 to obtain p_state, i.e. index, which is then used to access the Rtab table. Quantization, however, can be excluded, i.e. p_state can be pState_current[bin].

2. Затем выполняется квантование R (Как упомянуто выше: или один R (и соответствующий V с одним общим битовым потоком) используется/управляется для всех различимых значений p_state, или один R (и соответствующий V с ассоциированным частичным битовым потоком на пару R/L) на различимое значение p_state, этот последний случай соответствует тому, что имеется один кодер 310 бинов на такое значение)2. R quantization is then performed (As mentioned above: either one R (and corresponding V with one shared bitstream) is used/managed for all distinguishable p_state values, or one R (and corresponding V with associated partial bitstream per R/L pair ) to a distinguishable value of p_state, this last case corresponds to the fact that there is one encoder of 310 bins for such a value)

q_index=Qtab[R>>q] (или некоторый другой вид квантования)q_index=Qtab[R>>q] (or some other kind of quantization)

3. Затем выполняется определение RLPS и R:3. Then the determination of R LPS and R is performed:

RLPS=Rtab[p_state][q_index]; Rtab сохранила в себе предварительно вычисленные значения для p[p_state]∙Q[q_index]R LPS =Rtab[p_state][q_index]; Rtab stored pre-calculated values for p[p_state]∙Q[q_index]

R=R-RLPS [т.е. R предварительно предобновляется, как если бы «бином» был MPS]R=RR LPS [i.e. R is pre-updated as if the "bin" were MPS]

4. Определение бина в зависимости от позиции частичного интервала:4. Definition of a bin depending on the position of the partial interval:

if(V3R) thenif(V 3 R) then

bin ¬ 1 - valMPS (бин декодируется как LPS; селектор 18 буфера бинов получает фактическое значение бина посредством использования этой информации о бине и valMPS)bin ¬ 1 - valMPS (bin is decoded as LPS; bin buffer selector 18 obtains the actual value of the bin by using this bin information and valMPS)

V ¬ V-RV ¬ V-R

R ¬ RLPS R ¬ R LPS

elseelse

bin ¬ valMPS (бин декодируется как MPS; фактическое значение бина получается посредством использования этой информации о бине и valMPS)bin ¬ valMPS (the bin is decoded as MPS; the actual value of the bin is obtained by using this bin information and valMPS)

5. Ренормализация R, считывание одного бита и обновление V,5. Renormalize R, read one bit and update V,

Как описано выше, средство 4 назначения назначает pState_current[bin] каждому бину. Ассоциирование может выполняться на основе выбора контекста. Т.е. средство 4 назначения может выбирать контекст, используя индекс ctxIdx контекста, который, в свою очередь, имеет соответствующий pState_current, ассоциированный с ним. Обновление вероятности может выполняться каждый раз, когда вероятность pState_current[bin] была применена к текущему бину. Обновление состояния вероятности pState_current[bin] выполняется в зависимости от значения кодированного бита:As described above, the assigner 4 assigns pState_current[bin] to each bin. The association may be performed based on the selection of the context. Those. the destination engine 4 may select a context using the context index ctxIdx, which in turn has a corresponding pState_current associated with it. A probability update can be performed each time the probability pState_current[bin] has been applied to the current bin. The probability state update pState_current[bin] is performed depending on the value of the encoded bit:

Если обеспечивается более одного контекста, адаптация выполняется по контексту, т.е. pState_current[ctxIdx] используется для кодирования и затем обновления, используя текущее значение бина (кодированное или декодированное соответственно).If more than one context is provided, adaptation is performed by context, i.e. pState_current[ctxIdx] is used to encode and then update using the current value of the bin (encoded or decoded respectively).

Как более подробно изложено ниже, согласно вариантам осуществления, описываемым теперь, кодер и декодер могут необязательно быть реализованы для работы в разных режимах, а именно, режиме низкой сложности (LC) и высокой эффективности (HE). Это изображается, главным образом, касательно кодирования PIPE в нижеследующем (упоминая тогда режимы LC и HE PIPE), но описание подробностей масштабируемости сложности легко переносится на другие реализации механизмов энтропийного кодирования/декодирования, такие как вариант осуществления использования одного общего контекстно-адаптивного арифметического кодера/декодера.As discussed in more detail below, according to the embodiments now described, the encoder and decoder may optionally be implemented to operate in different modes, namely, a low complexity (LC) mode and a high efficiency (HE) mode. This is depicted primarily in relation to PIPE encoding in the following (mentioning then the LC and HE PIPE modes), but the description of the complexity scalability details easily transfers to other implementations of entropy encoding/decoding mechanisms, such as the embodiment of using a single general context-adaptive arithmetic encoder/ decoder

Согласно вариантам осуществления, кратко изложенным ниже, оба режима энтропийного кодирования могут совместно использоватьAccording to the embodiments summarized below, both entropy encoding modes can share

один и тот же синтаксис и семантику (для последовательности 301 и 327 синтаксических элементов соответственно)the same syntax and semantics (for a sequence of 301 and 327 syntactic elements, respectively)

одинаковые схемы бинаризации для всех синтаксических элементов (определенные в настоящее время для CABAC (контекстно-адаптивное двоичное арифметическое кодирование)) (т.е. бинаризаторы могут работать независимо от активизированного режима)same binarization schemes for all syntactic elements (currently defined for CABAC (Context-Adaptive Binary Arithmetic Coding)) (i.e. binarizers can operate regardless of the activated mode)

применение одинаковых кодов PIPE (т.е. кодеры/декодеры бинов могут работать независимо от активизированного режима)application of the same PIPE codes (i.e. bin encoders/decoders can operate regardless of the activated mode)

применение 8-битовых значений инициализации вероятностной модели (вместо 16-битовых значений инициализации, определенных в настоящее время для CABAC)using 8-bit probabilistic model initialization values (instead of the 16-bit initialization values currently defined for CABAC)

Вообще говоря, LC-PIPE отличается от HE-PIPE сложностью обработки, такой как сложность выбора тракта 312 PIPE для каждого бина.Generally speaking, LC-PIPE differs from HE-PIPE in processing complexity, such as the complexity of selecting the PIPE path 312 for each bin.

Например, режим LC может работать при следующих ограничениях: Для каждого бина (binIdx) может быть точно одна вероятностная модель, т.е. один ctxIdx. Т.е. в LC PIPE не может обеспечиваться выбор/адаптация контекста. Конкретные синтаксические элементы, такие как те, которые используются для кодирования остатка, могут, однако, кодироваться с использованием контекстов, как дополнительно изложено ниже. Кроме того, все вероятностные модели могут быть неадаптивными, т.е. все модели могут инициализироваться в начале каждого слайса с соответствующими вероятностями модели (в зависимости от выбора типа слайса и QP (параметр квантования) слайса) и могут поддерживаться фиксированными во время обработки слайса. Например, может поддерживаться только 8 разных вероятностей модели, соответствующих 8 разным кодам 310/322 PIPE, как для моделирования, так и кодирования контекста. Конкретные синтаксические элементы для кодирования остатка, т.е. significance_coeff_flag и coeff_abs_level_greaterX (с X=1,2), семантика которых более подробно изложена ниже, могут назначаться вероятностным моделям, таким как (по меньшей мере) группы, например, из 4 синтаксических элементов, кодируются/декодируются с одинаковой вероятностью модели. По сравнению с CAVLC (контекстно-адаптивный код переменной длины) режим LC-PIPE достигает грубо таких же рабочих характеристик R-D и такую же производительность.For example, LC mode can work under the following restrictions: For each bin (binIdx) there can be exactly one probabilistic model, i.e. one ctxIdx. Those. LC PIPE cannot provide context selection/adaptation. Specific syntactic elements, such as those used to encode a remainder, may, however, be encoded using contexts, as further outlined below. In addition, all probabilistic models can be non-adaptive, i.e. all models can be initialized at the beginning of each slice with corresponding model probabilities (depending on the choice of slice type and QP (quantization parameter) of the slice) and can be kept fixed during slice processing. For example, only 8 different probabilities can be supported models corresponding to 8 different 310/322 PIPE codes for both modeling and context encoding. The specific syntactic elements for encoding the remainder, i.e. significance_coeff_flag and coeff_abs_level_greaterX (with X=1,2), the semantics of which are explained in more detail below, can be assigned to probabilistic models, such that (at least) groups of, for example, 4 syntactic elements are encoded/decoded with the same probability of the model. Compared to CAVLC (Context Adaptive Variable Length Code), LC-PIPE mode achieves roughly the same R-D performance and performance.

HE-PIPE может быть выполнен концептуально подобно CABAC в стандарте H.264 со следующими отличиями: Двоичное арифметическое кодирование (BAC) заменяется кодированием PIPE (таким же, что и в случае LC-PIPE). Каждая вероятностная модель, т.е. каждый ctxIdx, может быть представлена посредством pipeIdx и refineIdx, где pipeIdx со значениями в диапазоне 0-7 представляет вероятность модели 8 разных кодов PIPE. Это изменение оказывает влияние только на внутреннее представление состояний, а не на поведение самого конечного автомата (т.е. оценку вероятности). Как более подробно изложено ниже, инициализация вероятностных моделей может использовать 8-битовые значения инициализации, как изложено выше. Обратное сканирование синтаксических элементов coeff_abs_level_greaterX (с X=1,2), coeff_abs_level_minus3 и coeff_sign_flag (семантика которых станет ясной из нижеследующего описания) может выполняться по этому же пути сканирования, что и сканирование вперед (используемое, например, при кодировании карты значимостей). Вывод контекста для кодирования coeff_abs_level_greaterX (с X=1,2) также может быть упрощен. По сравнению с CABAC предложенный HE-PIPE достигает грубо таких рабочих характеристик R-D при лучшей производительности.HE-PIPE can be implemented conceptually similar to CABAC in the H.264 standard with the following differences: Binary Arithmetic Coding (BAC) is replaced by PIPE coding (same as LC-PIPE). Each probabilistic model, i.e. each ctxIdx can be represented by pipeIdx and refineIdx, where pipeIdx with values in the range 0-7 represents the probability of a model of 8 different PIPE codes. This change only affects the internal representation of states, and not the behavior of the state machine itself (i.e., probability estimation). As discussed in more detail below, initialization of probabilistic models may use 8-bit initialization values as outlined above. The backward scan of the syntactic elements coeff_abs_level_greaterX (with X=1,2), coeff_abs_level_minus3 and coeff_sign_flag (the semantics of which will become clear from the description below) can be performed along the same scan path as the forward scan (used, for example, when encoding a saliency map). The derivation of the context for encoding coeff_abs_level_greaterX (with X=1,2) can also be simplified. Compared with CABAC, the proposed HE-PIPE achieves roughly the same R-D performance characteristics with better performance.

Легко видеть, что только что упомянутые режимы легко генерируются посредством рендеринга, например, вышеупомянутого механизма контекстно-адаптивного двоичного арифметического кодирования/декодирования, так как он работает в разных режимах.It is easy to see that the modes just mentioned are easily generated by rendering, for example, the aforementioned context-adaptive binary arithmetic encoding/decoding engine, since it operates in different modes.

Таким образом, согласно варианту осуществления в соответствии с первым аспектом настоящего изобретения декодер для декодирования потока данных может быть выполнен так, как показано на фиг. 11. Декодер предназначен для декодирования потока 401 данных, такого как битовый поток 340 с перемежением, в какие медиаданные, такие как данные видео, кодируется. Декодер содержит переключатель 400 режима, выполненный с возможностью активизирования режима низкой сложности или режима высокой эффективности в зависимости от потока 401 данных. С этой целью, поток 401 данных может содержать синтаксический элемент, такой как двоичный синтаксический элемент, имеющий двоичное значение 1 в случае режима низкой сложности, являющегося тем, который необходимо активизировать, и имеющий двоичное значение 0 в случае режима высокой эффективности, являющегося тем, который необходимо активизировать. Очевидно, что ассоциирование между двоичным значением и режимом кодирования может переключаться, и также может использоваться недвоичный синтаксический элемент, имеющий более двух возможных значений. Так как фактический выбор между двумя режимами еще не ясен перед приемом соответствующего синтаксического элемента, этот синтаксический элемент может содержаться в некотором переднем заголовке потока 401 данных, кодированного, например, с фиксированной оценкой вероятности или вероятностной моделью или записываемого в поток 401 данных как есть, т.е. используя режим обхода.Thus, according to an embodiment according to the first aspect of the present invention, a decoder for decoding a data stream can be configured as shown in FIG. 11. The decoder is configured to decode data stream 401, such as interleaved bitstream 340, into what media data, such as video data, is encoded. The decoder includes a mode switch 400 configured to activate a low complexity mode or a high efficiency mode depending on the data stream 401. To this end, data stream 401 may contain a syntax element, such as a binary syntax element, having a binary value of 1 in the case of a low complexity mode being the one to be activated, and having a binary value of 0 in the case of a high performance mode being the one that needs to be activated. It will be appreciated that the association between the binary value and the encoding mode may be switched, and a non-binary syntax element having more than two possible values may also be used. Since the actual choice between the two modes is not yet clear before receiving the corresponding syntax element, the syntax element may be contained in some front header of the data stream 401, encoded, for example, with a fixed probability estimate or probabilistic model, or written to the data stream 401 as is, i.e. .e. using bypass mode.

Кроме того, декодер по фиг. 11 содержит множество энтропийных декодеров 322, каждый из которых выполнен с возможностью преобразования кодовых слов в потоке 401 данных в частичные последовательности 321 символов. Как описано выше, деперемежитель 404 может быть подсоединен между входами энтропийных декодеров 322, с одной стороны, и входом декодера по фиг. 11, где подается поток 401 данных, с другой стороны. Кроме того, как уже описано выше, каждый из энтропийных декодеров 322 может ассоциироваться с соответствующим вероятностным интервалом, причем вероятностные интервалы различных энтропийных декодеров вместе покрывают весь интервал вероятностей от 0 до 1 - или 0-0,5 в случае энтропийных декодеров 322, имеющих дело с MPS и LPS, а не абсолютными значениями символов. Подробности, касающиеся этого вопроса, были описаны выше. Позже предполагается, что количество декодеров 322 равно 8, причем индекс PIPE назначается каждому декодеру, но также возможно любое другое количество. Кроме того, один из этих кодеров, ниже им является, в качестве примера, тот, который имеет pipe_id равный 0, оптимизируется для бинов, имеющих равновероятную статистику, т.е. их значение бина принимают 1 и 0 равновероятно. Этот декодер может просто пропускать бины. Соответствующий кодер 310 работает аналогичным образом. Могут быть исключены даже любые манипулирования бинами в зависимости от значения наиболее вероятного значения бина valMPS селекторами 402 и 502 соответственно. Другими словами, энтропия соответствующего частичного потока уже является оптимальной.Moreover, the decoder of FIG. 11 includes a plurality of entropy decoders 322, each of which is configured to convert codewords in data stream 401 into partial symbol sequences 321. As described above, a deinterleaver 404 may be connected between the inputs of the entropy decoders 322 on the one hand and the input of the decoder of FIG. 11, where data stream 401 is supplied, on the other hand. In addition, as already described above, each of the entropy decoders 322 may be associated with a corresponding probability interval, with the probability intervals of the various entropy decoders together covering the entire probability interval from 0 to 1 - or 0 to 0.5 in the case of entropy decoders 322 dealing with MPS and LPS rather than absolute character values. Details regarding this issue have been described above. It is later assumed that the number of decoders 322 is 8, with a PIPE index assigned to each decoder, but any other number is also possible. In addition, one of these encoders, below as an example, the one that has a pipe_id equal to 0, is optimized for bins having equally likely statistics, i.e. their bin value is equal to 1 and 0. This decoder can simply skip bins. The corresponding encoder 310 operates in a similar manner. Even any bin manipulation may be excluded depending on the value of the most probable bin value valMPS by selectors 402 and 502, respectively. In other words, the entropy of the corresponding partial flow is already optimal.

Кроме того, декодер на фиг. 11 содержит селектор 402, выполненный с возможностью извлечения каждого символа последовательности 326 символов из выбранного одного из множества энтропийных декодеров 322. Как упомянуто выше, селектор 402 может быть разделен на средство 316 назначения параметра и селектор 318. Десимволизатор 314 выполнен с возможностью десимволизирования последовательности 326 символов для получения последовательности 327 синтаксических элементов. Восстановитель 404 выполнен с возможностью восстановления медиаданных 405, основываясь на последовательности синтаксических элементов 327. Селектор 402 выполнен с возможностью выполнения выбора в зависимости от активизированного одного из режима низкой сложности и режима высокой эффективности, как указывается стрелкой 406.In addition, the decoder in FIG. 11 includes a selector 402 configured to extract each symbol of the symbol sequence 326 from a selected one of a plurality of entropy decoders 322. As mentioned above, the selector 402 may be divided into a parameter assigner 316 and a selector 318. The desymbolizer 314 is configured to desymbolize the symbol sequence 326 to obtain a sequence of 327 syntactic elements. The restorer 404 is configured to restore the media data 405 based on the sequence of syntax elements 327. The selector 402 is configured to make a selection depending on whether one of the low complexity mode and the high efficiency mode is activated, as indicated by arrow 406.

Как уже упомянуто выше, восстановитель 404 может быть частью видеодекодера на основе блоков предсказания, работающего с фиксированным синтаксисом и семантикой синтаксических элементов, т.е. фиксированными относительно выбора режима переключателем 400 режима. Т.е. конструкция восстановителя 404 не допускает переключаемости режимов. Более точно, восстановитель 404 не увеличивает издержки реализации из-за переключаемости режимов, предлагаемой переключателем 400 режима, и по меньшей мере функциональная возможность в отношении данных остатка и данных предсказания остается такой же независимо от режима, выбранного переключателем 400. Это также применимо, однако, в отношении энтропийных декодеров 322. Все эти декодеры 322 повторно используются в обоих режимах, и, следовательно, нет дополнительных издержек реализации, хотя декодер по фиг. 11 является совместимым с обоими режимами, режимами низкой сложности и высокой эффективности.As mentioned above, the restorer 404 may be part of a video decoder based on prediction blocks that operates with a fixed syntax and semantics of syntax elements, i.e. fixed relative to the mode selection by the mode switch 400. Those. The design of the 404 reducer does not allow mode switching. More specifically, restorer 404 does not increase implementation overhead due to the mode switching offered by mode switch 400, and at least the functionality with respect to residual data and prediction data remains the same regardless of the mode selected by switch 400. This also applies, however, with respect to entropy decoders 322. All of these decoders 322 are reused in both modes, and therefore there is no additional implementation overhead, although the decoder of FIG. 11 is compatible with both modes, low complexity and high efficiency modes.

В качестве дополнительного аспекта необходимо отметить, что декодер по фиг. 11 не только способен работать с автономными потоками данных или в одном режиме, или в другом режиме. Вместо этого, декодер по фиг. 11, а также поток 401 данных могут быть выполнены так, что переключение между обоими режимами даже будет возможным в течение одной порции медиаданных, например, во время видео или некоторой порции аудио, чтобы, например, управлять сложностью кодирования на декодирующей стороне в зависимости от внешних или окружающих условий, таких как состояние батареи или т.п. с использованием канала обратной связи от декодера к кодеру, чтобы соответствующим образом управлять с замкнутой петлей выбором режима.As a further aspect, it should be noted that the decoder of FIG. 11 is not only capable of working with autonomous data streams either in one mode or in another mode. Instead, the decoder of FIG. 11 as well as the data stream 401 may be designed such that switching between both modes will even be possible during one chunk of media data, for example during a video or some chunk of audio, to, for example, control the encoding complexity on the decoding side depending on external or environmental conditions such as battery condition or the like. using a feedback channel from the decoder to the encoder to appropriately control closed-loop mode selection.

Таким образом, декодер по фиг. 11 работает аналогично в обоих случаях, в случае, когда выбирается режим LC или когда выбирается режим HE. Восстановитель 404 выполняет восстановление с использованием синтаксических элементов и запрашивает текущий синтаксический элемент заданного типа синтаксического элемента посредством обработки или подчинения некоторому предписанию структуры синтаксиса. Десимволизатор 314 запрашивает несколько бинов, чтобы выдать достоверную бинаризацию для синтаксического элемента, запрашиваемого восстановителем 404. Очевидно, что в случае двоичного алфавита бинаризация, выполняемая десимволизатором 314 понижает до простого пропускания соответствующего бина/символа 326 на восстановитель 404 в качестве запрашиваемого в настоящий момент двоичного синтаксического элемента.Thus, the decoder of FIG. 11 works the same in both cases, when LC mode is selected or when HE mode is selected. Restorer 404 performs recovery using syntax elements and queries the current syntax element of a given syntax element type by processing or subjecting to some syntax structure prescription. The desymbolizer 314 requests multiple bins to provide a valid binarization for the syntax element requested by the restorer 404. Obviously, in the case of a binary alphabet, the binarization performed by the desymbolizer 314 is reduced to simply passing the corresponding bin/symbol 326 to the restorer 404 as the currently requested binary syntax element.

Селектор 402, однако, действует независимо от режима, выбранного переключателем 400 режима. Режим работы селектора 402 имеет тенденцию быть более сложным в случае режима высокой эффективности и менее сложным в случае режима низкой сложности. Кроме того, нижеследующее описание показывает, что режим работы селектора 402 в режиме низкой сложности также имеет тенденцию уменьшать частоту, с которой селектор 402 изменяет выбор среди энтропийных декодеров 322 при извлечении последовательных символов из энтропийных декодеров 322. Другими словами, в режиме низкой сложности существует повышенная вероятность, что непосредственно последующие символы извлекаются из одного и того же энтропийного декодера из числа множества энтропийных декодеров 322. Это, в свою очередь, позволяет получить более быстрое извлечение символов из энтропийных декодеров 322. В режиме высокой эффективности, в свою очередь, режим работы селектора 402 стремится привести к выбору из числа энтропийных декодеров 322, где интервал вероятностей, ассоциированный с соответствующим выбранным энтропийным декодером 322, более точно соответствует фактической статистике символов символа, извлекаемого в настоящий момент селектором 402, таким образом получая лучший коэффициент сжатия на кодирующей стороне при генерировании соответствующего потока данных в соответствии с режимом высокой эффективности.The selector 402, however, operates regardless of the mode selected by the mode switch 400. The mode of operation of selector 402 tends to be more complex in the case of a high efficiency mode and less complex in the case of a low complexity mode. In addition, the following description shows that operating selector 402 in low complexity mode also tends to reduce the frequency with which selector 402 changes selection among entropy decoders 322 when extracting consecutive symbols from entropy decoders 322. In other words, in low complexity mode there is increased the probability that immediately subsequent symbols are extracted from the same entropy decoder from among a plurality of entropy decoders 322. This in turn allows for faster extraction of symbols from entropy decoders 322. In high efficiency mode, in turn, the selector mode of operation 402 seeks to result in a selection from among entropy decoders 322, where the probability interval associated with the corresponding selected entropy decoder 322 more closely matches the actual symbol statistics of the symbol currently extracted by selector 402, thereby obtaining a better encoder-side compression ratio when generating the corresponding data flow according to high efficiency mode.

Например, разное поведение селектора 402 в обоих режимах может быть реализовано следующим образом. Например, селектор 402 может быть выполнен с возможностью выполнения для заданного символа выбора из числа множества энтропийных декодеров 322 в зависимости от ранее извлеченных символов последовательности 326 символов в случае активизированного режима высокой эффективности и независимо от любых ранее извлеченных символов последовательности символов в случае активизированного режима низкой сложности. Зависимость от ранее извлеченных символов последовательности 326 символов может происходить из контекстной адаптивности и/или вероятностной адаптивности. Обе адаптивности могут отключаться во время режима низкой сложности в селекторе 402.For example, the different behavior of selector 402 in both modes could be implemented as follows. For example, the selector 402 may be configured to select, for a given symbol, from among a plurality of entropy decoders 322 depending on previously extracted symbols of the symbol sequence 326 in the case of a high efficiency mode activated, and independently of any previously extracted symbols of the symbol sequence in the case of a low complexity mode activated. . The dependence on previously extracted symbols of the symbol sequence 326 may come from context adaptivity and/or probabilistic adaptivity. Both adaptivities may be disabled during a low complexity mode in selector 402.

Согласно другому варианту осуществления поток 401 данных может быть структурирован в последовательные части, такие как слайсы, кадры, группы изображений, последовательности кадров или т.п., и каждый символ последовательности символов может ассоциироваться с соответствующим одним из множества типов символа. В данном случае, селектор 402 может быть выполнен с возможностью изменения, для символов заданного типа символа в текущей части, выбора в зависимости от ранее извлеченных символов последовательности символов заданного типа символа в текущей части в случае активизированного режима высокой эффективности и оставления выбора постоянным в текущей части в случае активизированного режима низкой сложности. Т.е. селектору 402 может быть предоставлена возможность изменять выбор среди энтропийных декодеров 322 для заданного типа символа, но эти изменения ограничены тем, что происходят между переходами между последовательными частями. Посредством этой меры оценки фактической статистики символов ограничиваются редко встречающимися временными случаями, тогда как сложность кодирования уменьшается в большей части времени.According to another embodiment, data stream 401 may be structured into sequential portions, such as slices, frames, groups of pictures, sequences of frames, or the like, and each symbol of the symbol sequence may be associated with a corresponding one of a variety of symbol types. In this case, the selector 402 may be configured to change, for symbols of a given character type in the current portion, to select, depending on previously extracted symbols, a sequence of symbols of a given symbol type in the current portion in the case of the high performance mode being activated, and leaving the selection constant in the current portion. in case of activated low difficulty mode. Those. selector 402 may be allowed to change the selection among entropy decoders 322 for a given symbol type, but these changes are limited to occurring between transitions between successive parts. By this measure, estimates of actual symbol statistics are limited to rare transient cases, while encoding complexity is reduced most of the time.

Кроме того, каждый символ последовательности 326 символов может ассоциироваться с соответствующим одним из множества типов символа, и селектор 402 может быть выполнен, для заданного символа заданного типа символа, с возможностью выбора одного из множества контекстов в зависимости от ранее извлеченных символов последовательности 326 символов и выполнения выбора среди энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с выбранным контекстом вместе с обновлением вероятностной модели, ассоциированной с выбранным контекстом в зависимости от заданного символа в случае активизированного режима высокой эффективности, и выполнения выбора одного из множества контекстов в зависимости от ранее извлеченных символов последовательности 326 символов и выполнения выбора среди энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с выбранным контекстом вместе с оставлением вероятностной модели, ассоциированной с выбранным контекстом, постоянной в случае активизированного режима низкой сложности. Т.е. селектор 402 может использовать контекстную адаптивность в отношении некоторого типа синтаксического элемента в обоих режимах, в тоже время подавляя вероятностную адаптацию в случае режима LC.In addition, each character of the character sequence 326 may be associated with a corresponding one of a plurality of character types, and the selector 402 may be executed, for a given character of a given character type, to select one of a plurality of contexts depending on the previously retrieved characters of the character sequence 326 and execution selecting among entropy decoders 322 depending on the probabilistic model associated with the selected context together with updating the probabilistic model associated with the selected context depending on the given symbol in the case of the activated high performance mode, and selecting one of the plurality of contexts depending on the previously retrieved symbols sequence 326 of symbols and making a selection among entropy decoders 322 depending on the probabilistic model associated with the selected context together with leaving the probabilistic model associated with the selected context constant in the case of the low complexity mode activated. Those. selector 402 may use context adaptivity on some type of syntactic element in both modes, while suppressing probabilistic adaptation in the case of LC mode.

Альтернативно, вместо полного подавления вероятностной адаптации селектор 402 может просто уменьшить частоту обновления вероятностной адаптации режима LC относительно режима HE.Alternatively, instead of completely suppressing probabilistic adaptation, selector 402 may simply reduce the update rate of the LC mode probabilistic adaptation relative to the HE mode.

Кроме того, другими словами, возможные аспекты, характерные для LC-PIPE, т.е. аспекты режима LC, могут быть описаны следующим образом. В частности, неадаптивные вероятностные модели могут использоваться в режиме LC. Неадаптивная вероятностная модель может или иметь жестко закодированную, т.е. полную постоянную вероятность, или ее вероятность поддерживается фиксированной только во время обработки слайса и, таким образом, может устанавливаться в зависимости от типа слайса и QP, т.е. параметра квантования, который, например, сигнализируется в потоке 401 данных для каждого слайса. Предполагая, что последовательные бины, назначенные одному и тому же контексту, придерживаются фиксированной вероятностной модели, возможно декодирование нескольких из этих бинов на одном шаге, когда они кодируются с использованием одного и того же кода pipe, т.е. используя один и тот же энтропийный декодер, и опускается обновление вероятности после каждого декодированного бина. Опускание обновлений вероятности экономит операции во время процесса кодирования и декодирования и, таким образом, также приводит к уменьшению сложности и существенному упрощению аппаратной конструкции.Additionally, in other words, possible aspects specific to LC-PIPE, e.g. aspects of the LC mode can be described as follows. In particular, non-adaptive probabilistic models can be used in LC mode. A non-adaptive probabilistic model can either be hard-coded, i.e. full constant probability, or its probability is kept fixed only during slice processing and thus can be set depending on the slice type and QP, i.e. quantization parameter, which, for example, is signaled in data stream 401 for each slice. Assuming that successive bins assigned to the same context adhere to a fixed probabilistic model, it is possible to decode several of these bins in one step when they are encoded using the same pipe code, i.e. using the same entropy decoder, and omitting the probability update after each decoded bin. Omitting probability updates saves operations during the encoding and decoding process and thus also leads to reduced complexity and significant simplification of the hardware design.

Неадаптивное ограничение может быть ослаблено для всех или некоторых выбранных вероятностных моделей таким образом, что обновления вероятности разрешаются после того, как некоторое количество бинов будет кодировано/декодировано с использованием этой модели. Соответствующий интервал обновления допускает вероятностную адаптацию, в тоже время имея возможность одновременного декодирования нескольких бинов.The non-adaptive constraint can be relaxed for all or some selected probability models such that probability updates are allowed after a number of bins have been encoded/decoded using that model. The corresponding update interval allows probabilistic adaptation, while at the same time being able to simultaneously decode multiple bins.

Ниже представлено более подробное описание возможных общих и с масштабируемой сложностью аспектов LC-pipe и HE-pipe. В частности, ниже описываются аспекты, которые могут использоваться для режима LC-pipe и режима HE-pipe одинаковым образом или с масштабируемой сложностью. Масштабируемая сложность означает, что случай LC выводится из случая HE посредством удаления конкретных частей или посредством замены их несколько менее сложными. Однако перед продолжением с ними необходимо упомянуть, что вариант осуществления на фиг.11 является легко переносимым на вышеупомянутый вариант осуществления контекстно-адаптивного двоичного арифметического кодирования/декодирования: селектор 402 и энтропийные декодеры 322 сосредотачиваются в контекстно-адаптивный двоичный арифметический декодер, который непосредственно принимает поток 401 данных и выбирает контекст для бина, подлежащего извлечению в настоящий момент из потока данных. Это особенно верно для контекстной адаптивности и/или вероятностной адаптивности. Обе функциональные возможности/адаптивности могут быть отключены, или разработаны более ослабленными, во время режима низкой сложности.Below is a more detailed description of possible common and scalable complexity aspects of LC-pipe and HE-pipe. In particular, aspects that can be used for LC-pipe mode and HE-pipe mode in the same manner or with scalable complexity are described below. Scalable complexity means that the LC case is derived from the HE case by removing specific parts or by replacing them with slightly less complex ones. However, before proceeding with them, it should be mentioned that the embodiment of FIG. 11 is easily transferable to the above-mentioned context-adaptive binary arithmetic encoding/decoding embodiment: selector 402 and entropy decoders 322 are concentrated into a context-adaptive binary arithmetic decoder that directly receives the stream 401 data and selects the context for the bean currently to be retrieved from the data stream. This is especially true for contextual adaptivity and/or probabilistic adaptivity. Both functionality/adaptivity can be disabled, or designed to be weakened, during low difficulty mode.

Например, при реализации варианта осуществления по фиг.11 ступень энтропийного кодирования pipe, включающая в себя энтропийные декодеры 322, может использовать восемь систематических переменный-в-переменный-кодов, т.е. каждый энтропийный декодер 322 может быть типа v2v, который был описан выше. Принцип PIPE-кодирования, использующий систематические v2v-коды, упрощается посредством ограничения количества v2v-кодов. В случае контекстно-адаптивного двоичного арифметического декодера он может управлять его вероятностными состояниями для разных контекстов и использовать его - или его квантованную версию - для подразделения вероятности. Отображение состояний CABAC или вероятностной модели, т.е. состояний, используемых для обновления вероятности, в PIPE id или индексы вероятности для поиска в Rtab, может быть таким, какое изображено в таблице A.For example, when implementing the embodiment of FIG. 11, the entropy encoding pipe stage including entropy decoders 322 may use eight systematic variable-to-variable codes, i.e. each entropy decoder 322 may be of type v2v, which was described above. The PIPE coding principle, which uses systematic v2v codes, is simplified by limiting the number of v2v codes. In the case of a context-adaptive binary arithmetic decoder, it can manipulate its probabilistic states for different contexts and use it - or a quantized version of it - to subdivide the probability. Display of CABAC or probabilistic model states, i.e. states used to update the probability in PIPE id or probability indexes for lookup in Rtab may be as shown in Table A.

Таблица A: Отображение состояний CABAC в индексы PIPETable A: Mapping CABAC States to PIPE Indexes

Эта модифицированная схема кодирования может использоваться в качестве основы для подхода видеокодирования с масштабируемой сложностью. При выполнении вероятностной адаптации режима селектор 402 или контекстно-адаптивный двоичный арифметический декодер соответственно выбирают декодер 322 PIPE, т.е. выводят индекс pipe, подлежащий использованию, и индекс вероятности в Rtab, соответственно, основываясь на индексе состояния вероятности - здесь в качестве примера диапазон составляет от 0 до 62 - ассоциированный с подлежащим декодированию текущим символом - например, при помощи контекста - используя отображение, показанное в таблице A, и обновляет этот индекс состояния вероятности в зависимости от декодируемого в настоящий момент символа, используя, например, конкретные значения перехода обхода таблицы, указывающие на следующий индекс состояния вероятности, подлежащий посещению в случае MPS и LPS соответственно. В случае режима LC обновление последнего может быть исключено. Даже отображение может быть исключено в случае глобально фиксированных вероятностных моделей.This modified coding scheme can be used as the basis for a complexity-scalable video coding approach. When performing probabilistic mode adaptation, selector 402 or context-adaptive binary arithmetic decoder respectively selects PIPE decoder 322, i.e. output the pipe index to be used and the probability index in Rtab, respectively, based on the probability state index - here as an example, the range is from 0 to 62 - associated with the current symbol to be decoded - for example, using the context - using the mapping shown in table A, and updates this probability state index depending on the symbol currently being decoded, using, for example, specific table walk transition values indicating the next probability state index to be visited in the case of MPS and LPS, respectively. In the case of LC mode, updating the latter may be excluded. Even mapping can be eliminated in the case of globally fixed probabilistic models.

Однако может использоваться произвольное установление энтропийного кодирования, и методы в данном документе также могут использоваться с незначительной адаптацией.However, arbitrary entropy encoding may be used, and the methods in this document can also be used with minor adaptation.

Вышеупомянутое описание фиг. 11 скорее в общих чертах ссылалось на синтаксические элементы и типы синтаксических элементов. Ниже описывается кодирование с конфигурируемой сложностью уровней коэффициентов преобразования.The above description of FIG. 11 rather referred in general terms to syntactic elements and types of syntactic elements. Encoding with configurable complexity levels of transform coefficients is described below.

Например, восстановитель 404 может быть выполнен с возможностью восстановления блока 200 преобразования уровней 202 коэффициентов преобразования, основываясь на части последовательности синтаксических элементов независимо от активизированного режима высокой эффективности или режима низкой сложности, причем часть последовательности 327 синтаксических элементов содержит, без перемежения, синтаксические элементы карты значимостей, определяющие карту значимостей, указывающую позиции ненулевых уровней коэффициентов преобразования в блоке 200 преобразования, и затем (за которым следует) определение синтаксических элементов уровня, определяющих ненулевых уровни коэффициентов преобразования. В частности, следующие элементы могут быть включены: синтаксические элементы конечной позиции (last_significant_pos_x, last_significant_pos_y), указывающие позицию последнего ненулевого уровня коэффициентов преобразования в блоке преобразования; первые синтаксические элементы (coeff_significant_flag), определяющие вместе карту значимостей и указывающие, для каждой позиции по одномерному пути (274), ведущему от позиции DC (постоянного тока) в позицию последнего ненулевого уровня коэффициентов преобразования в блоке (200) преобразования, в отношении того, является ли ненулевым или нет уровень коэффициентов преобразования в соответствующей позиции; вторые синтаксические элементы (coeff_abs_greater1), указывающие, для каждой позиции одномерного пути (274), где, согласно первым двоичным синтаксическим элементам, располагается ненулевой уровень коэффициентов преобразования, в отношении того, является ли больше единицы уровень коэффициентов преобразования в соответствующей позиции; и третьи синтаксические элементы (coeff_abs_greater2, coeff_abs_minus3), показывающие, для каждой позиции одномерного пути, где, согласно первым двоичным синтаксическим элементам, располагается уровень коэффициентов преобразования больше единицы, величину, на которую соответствующий уровень коэффициентов преобразования в соответствующей позиции превышает единицу.For example, the restorer 404 may be configured to reconstruct the transform block 200 of the transform coefficient levels 202 based on a portion of the sequence of syntax elements regardless of whether a high performance mode or a low complexity mode is activated, wherein the portion of the sequence of syntax elements 327 contains, without interleaving, syntax elements of the significance map. , defining a saliency map indicating the positions of non-zero levels of transform coefficients in transform block 200, and then (followed by) defining level syntactic elements defining non-zero levels of transform coefficients. In particular, the following elements may be included: final position syntax elements (last_significant_pos_x, last_significant_pos_y) indicating the position of the last non-zero level of transform coefficients in the transform block; first syntactic elements (coeff_significant_flag) defining together a significance map and indicating, for each position along a one-dimensional path (274) leading from the DC position to the position of the last non-zero level of transform coefficients in the transform block (200), regarding whether whether the level of the transformation coefficients at the corresponding position is non-zero or not; second syntax elements (coeff_abs_greater1) indicating, for each position of the one-dimensional path (274), where, according to the first binary syntax elements, a non-zero level of transform coefficients is located, regarding whether the level of transform coefficients at the corresponding position is greater than one; and third syntax elements (coeff_abs_greater2, coeff_abs_minus3) indicating, for each position of the one-dimensional path where, according to the first binary syntax elements, a level of transform coefficients greater than one is located, the amount by which the corresponding level of transform coefficients at the corresponding position exceeds one.

Порядок среди синтаксических элементов конечной позиции, первых, вторых и третьих синтаксических элементов может быть одинаковым для режима высокой эффективности и режима низкой сложности, и селектор 402 может быть выполнен с возможностью выполнения выбора из числа энтропийных декодеров 322 для символов, от которого десимволизатор 314 получает синтаксические элементы конечной позиции, первые синтаксические элементы, вторые синтаксические элементы и/или третьи синтаксические элементы, в разной зависимости от активизированного режима низкой сложности или режима высокой эффективности.The order among the final position syntax elements, the first, second and third syntax elements may be the same for the high efficiency mode and the low complexity mode, and the selector 402 may be configured to select from among the entropy decoders 322 for the symbols from which the desymbolizer 314 obtains the syntax final position elements, first syntactic elements, second syntactic elements, and/or third syntactic elements, varying depending on whether the low complexity mode or the high efficiency mode is activated.

В частности, селектор 402 может быть выполнен, для символов заданного типа символа из числа последовательности символов, из которой десимволизатор 314 получает первые синтаксические элементы и вторые синтаксические элементы, с возможностью выбора для каждого символа заданного типа символа одного из множества контекстов в зависимости от ранее извлеченных символов заданного типа символа из числа последовательности символов и выполнения выбора в зависимости от вероятностной модели, ассоциированной с выбранным контекстом в случае активизированного режима высокой эффективности, и выполнения выбора кусочно-постоянным образом, так что выбор является постоянным по последовательным непрерывным подчастям последовательности в случае активизированного режима низкой сложности. Как описано выше, подчасти могут измеряться количеством позиций, по которым простирается соответствующая подчасть при измерении по одномерному пути 274, или количеством синтаксических элементов соответствующего типа, уже кодированных с текущим контекстом. Т.е. двоичные синтаксические элементы coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2, например, кодируются адаптивно к контексту с выбором декодера 322, основываясь на вероятностной модели выбранного контекста в режиме HE. Также используется вероятностная адаптация. В режиме LC также существуют разные контексты, которые используются для каждого из двоичных синтаксических элементов coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2. Однако для каждого из этих синтаксических элементов контекст сохраняется статичным для первой части по пути 274 с изменением контекста только при переходе в следующую, непосредственно последующую часть по пути 274. Например, каждая часть может определяться длиной равной 4, 8, 16 позициям блока 200, независимо от того, присутствует ли или нет для соответствующей позиции соответствующий синтаксический элемент. Например, coeff_abs_greater1 и coeff_abs_greater2 просто присутствуют для значимых позиций, т.е. позиций, где - или для которых - coeff_significant_flag равен 1. Альтернативно, каждая часть может определяться длиной, равной 4, 8, 16 синтаксических элементов, независимо от того, простирается ли результирующая таким образом соответствующая часть по большему количеству позиций блока. Например, coeff_abs_greater1 и coeff_abs_greater2 просто присутствуют для значимых позиций, и, таким образом, части каждых из четырех синтаксических элементов могут проходить по более чем 4 позициям блока вследствие позиций между ними по пути 274, для которых не передается такой синтаксический элемент, такой как ни coeff_abs_greater1, ни coeff_abs_greater2, так как соответствующий уровень в этой позиции равен нулю.In particular, selector 402 may be configured for characters of a given character type from among the sequence of characters from which desymbolizer 314 obtains first syntax elements and second syntax elements, with the ability to select, for each character of a given character type, one of a plurality of contexts depending on previously extracted symbols of a given character type from among a sequence of symbols and making a selection depending on the probabilistic model associated with the selected context in the case of the high performance mode activated, and making the selection in a piecewise constant manner such that the selection is constant across successive contiguous subparts of the sequence in the case of the activated mode low complexity. As described above, subparts may be measured by the number of positions over which the corresponding subpart extends when measured along a one-dimensional path 274, or by the number of syntactic elements of the corresponding type already encoded with the current context. Those. the binary syntax elements coeff_significant_flag, coeff_abs_greater1 and coeff_abs_greater2, for example, are context adaptively encoded with decoder selection 322 based on a probabilistic model of the selected context in HE mode. Probabilistic adaptation is also used. In LC mode there are also different contexts that are used for each of the binary syntax elements coeff_significant_flag, coeff_abs_greater1 and coeff_abs_greater2. However, for each of these syntactic elements, the context is kept static for the first part along path 274, with the context changing only when moving to the next immediately subsequent part along path 274. For example, each part may be defined by a length equal to 4, 8, 16 positions of block 200, independently on whether or not the corresponding syntactic element is present for the corresponding position. For example, coeff_abs_greater1 and coeff_abs_greater2 are simply present for significant positions, i.e. positions where - or for which - coeff_significant_flag is equal to 1. Alternatively, each part may be defined by a length equal to 4, 8, 16 syntax elements, regardless of whether the corresponding part thus resulting extends over more block positions. For example, coeff_abs_greater1 and coeff_abs_greater2 are simply present for significant positions, and thus parts of each of the four syntax elements may pass over more than 4 block positions due to positions between them along path 274 for which no such syntax element such as coeff_abs_greater1 is passed , nor coeff_abs_greater2, since the corresponding level at this position is zero.

Селектор 402 может быть выполнен, для символов заданного типа символа в последовательности символов, из которой десимволизатор получает первые синтаксические элементы и вторые синтаксические элементы, с возможностью выбора для каждого символа заданного типа символа одного из множества контекстов в зависимости от количества ранее извлеченных символов заданного типа символа в последовательности символов, которые имеют заданное значение символа и принадлежит к этой же подчасти, или количества ранее извлеченных символов заданного типа символа в последовательности символов, которые принадлежат этой же подчасти. Первая альтернатива была верной для coeff_abs_greater1, и вторая альтернатива была верной для coeff_abs_greater2 в соответствии с вышеупомянутыми конкретными вариантами осуществления.Selector 402 may be configured for characters of a given character type in a sequence of characters from which the desymbolizer obtains first syntax elements and second syntax elements, with the ability to select, for each character of a given character type, one of a plurality of contexts depending on the number of previously extracted symbols of a given character type. in a sequence of characters that have a given character value and belongs to the same subpart, or the number of previously extracted characters of a given character type in a sequence of characters that belong to the same subpart. The first alternative was true for coeff_abs_greater1, and the second alternative was true for coeff_abs_greater2 in accordance with the above-mentioned specific embodiments.

Кроме того, третьи синтаксические элементы, показывающие, для каждой позиции одномерного пути, где, согласно первым двоичным синтаксическим элементам, располагается уровень коэффициентов преобразования больший единицы, величину, на которую соответствующий уровень коэффициентов преобразования в соответствующей позиции превышает единицу, могут содержать целочисленные синтаксические элементы, т.е. coeff_abs_minus3, и десимволизатор 314 может быть выполнен с возможностью использования функции отображения, управляемой параметром управления для отображения области определения слов последовательности символов на область значений целочисленных синтаксических элементов, и установления параметра управления на целочисленный синтаксический элемент в зависимости от целочисленных синтаксических элементов предыдущих третьих синтаксических элементов, если активизирован режим высокой эффективности, и выполнения установления кусочно-постоянным образом, так что установление является постоянным по последовательным непрерывным подчастям последовательности в случае активизированного режима низкой сложности, причем селектор 402 может быть выполнен с возможностью выбора заданного одного из энтропийных декодеров (322) для символов слов последовательности символов, отображаемых на целочисленные синтаксические элементы, которая ассоциируется с равно-вероятным распределением как в режиме высокой эффективности, так и в режиме низкой сложности. Т.е. даже если десимволизатор может работать в зависимости от режима, выбранного переключателем 400, как изображено пунктирной линией 407. Вместо кусочно-постоянного установления параметра управления десимволизатор 314 может поддерживать параметр управления постоянным во время текущего слайса, например, или постоянным глобально во времени.In addition, third syntactic elements indicating, for each position of the one-dimensional path where, according to the first binary syntactic elements, a level of transform coefficients greater than one is located, the amount by which the corresponding level of transform coefficients at the corresponding position exceeds one, may contain integer syntactic elements, those. coeff_abs_minus3, and the desymbolizer 314 may be configured to use a mapping function controlled by a control parameter to map the definition domain of the symbol sequence words to the value domain of the integer syntax elements, and set the control parameter to the integer syntax element depending on the integer syntax elements of the previous third syntax elements, if the high efficiency mode is activated, and performing the establishment in a piecewise constant manner such that the establishment is constant across successive contiguous subparts of the sequence in the case of the low complexity mode activated, wherein the selector 402 may be configured to select a given one of the entropy decoders (322) for the symbols words are a sequence of symbols mapped to integer syntactic elements that is associated with an equally likely distribution in both the high efficiency and low complexity modes. Those. even though the desymbolizer may operate depending on the mode selected by switch 400, as depicted by dotted line 407. Instead of setting the control parameter piecewise constant, the desymbolizer 314 may keep the control parameter constant during the current slice, for example, or constant globally over time.

Ниже описывается моделирование контекста с масштабируемой сложностью.Modeling context with scalable complexity is described below.

Оценка одного и того же синтаксического элемента верхнего и левого соседа для выведения индекса контекстной модели представляет собой общий подход и часто используется в случае HE, например, для синтаксического элемента разностей векторов движения. Однако эта оценка требует большего буферного накопителя и не позволяет выполнять прямое кодирование синтаксического элемента. Также, для достижения более высоких рабочих характеристик кодирования могут оцениваться более доступные соседи.Evaluating the same top and left neighbor syntactic element to infer the context model index is a common approach and is often used in the case of HE, for example, for the motion vector differences syntactic element. However, this evaluation requires more buffer storage and does not allow direct encoding of the syntactic element. Also, more accessible neighbors can be evaluated to achieve better coding performance.

В предпочтительном варианте осуществления все синтаксические элементы оценки ступени контекстного моделирования соседних квадратных или прямоугольных блоков или единиц предсказания являются фиксированными для одной контекстной модели. Это равнозначно запрещению адаптивности на ступени выбора контекстной модели. Для этого предпочтительного варианта осуществления выбор контекстной модели в зависимости от индекса бина строки бинов после бинаризации не модифицируется по сравнению с текущей разработкой для CABAC. В другом предпочтительном варианте осуществления дополнительно к фиксированной контекстной модели для синтаксических элементов применяют оценку соседей, также является фиксированной контекстная модель для другого индекса бина. Отметьте, что описание не включает бинаризацию и выбор контекстной модели для разностей векторов движения и синтаксических элементов, относящихся к кодированию уровней коэффициентов преобразования.In a preferred embodiment, all context modeling stage evaluation syntactic elements of adjacent square or rectangular blocks or prediction units are fixed to one context model. This is equivalent to prohibiting adaptability at the stage of choosing a context model. For this preferred embodiment, the selection of the context model depending on the bin index of the bin string after binarization is not modified compared to the current design for CABAC. In another preferred embodiment, in addition to the fixed context model for syntactic elements, neighbor estimation is applied, and the context model for another bin index is also fixed. Note that the description does not include binarization and context model selection for motion vector differences and syntactic elements related to encoding transform coefficient levels.

В предпочтительном варианте осуществления разрешается только оценка левого соседа. Это приводит к уменьшенному буферу в цепочке обработки, так как последний блок или строка единиц кодирования больше не должна сохраняться. В другом предпочтительном варианте осуществления оцениваются только соседи, лежащие в одной и той же единице кодирования.In the preferred embodiment, only the left neighbor is allowed to be evaluated. This results in a reduced buffer in the processing chain, since the last block or line of encoding units no longer has to be stored. In another preferred embodiment, only neighbors lying in the same coding unit are evaluated.

В предпочтительном варианте осуществления оцениваются все доступные соседи. Например, в дополнение к верхнему и левому соседу верхний левый, верхний правый и нижний левый соседи оцениваются в случае доступности.In a preferred embodiment, all available neighbors are evaluated. For example, in addition to the top and left neighbor, the top left, top right, and bottom left neighbors are evaluated if available.

Т.е. селектор 402 по фиг. 11 может быть выполнен с возможностью использования, для заданного символа, относящегося к заданному блоку медиаданных, ранее извлеченных символов последовательности символов, относящихся к большему количеству разных соседних блоков медиаданных в случае активизированного режима высокой эффективности, чтобы выбирать один из множества контекстов и выполнять выбор между энтропийными декодерами 322 в зависимости от вероятностной модели, ассоциированной с выбранным контекстом. Т.е. соседние блоки могут быть соседями во временной и/или пространственной области. Пространственно соседние блоки являются видимыми, например, на фиг. 1-3. Тогда селектор 402 может реагировать на выбор режима переключателем 400 режима и выполнять адаптацию контакта, основываясь на ранее извлеченных символах или синтаксических элементах, относящихся к большему количеству соседних блоков в случае режима HE по сравнению с режимом LC, таким образом уменьшая издержки хранения как только что описано.Those. selector 402 of FIG. 11 may be configured to use, for a given symbol related to a given media block, previously extracted symbols of a sequence of symbols related to a larger number of different adjacent media blocks in the case of a high efficiency mode activated, to select one of a plurality of contexts and select between entropy decoders 322 depending on the probabilistic model associated with the selected context. Those. adjacent blocks may be neighbors in the temporal and/or spatial domain. Spatially adjacent blocks are visible, for example in FIG. 1-3. Then selector 402 can respond to mode selection by mode switch 400 and perform pin adaptation based on previously retrieved symbols or syntax elements related to more adjacent blocks in the case of HE mode compared to LC mode, thereby reducing storage overhead as just described .

Ниже описывается кодирование с уменьшенной сложностью разностей векторов движения согласно варианту осуществления.The following describes the reduced complexity coding of motion vector differences according to an embodiment.

В стандарте видеокодека H.264/AVC вектор движения, ассоциированный с макроблоком, передается посредством сигнализации разности (разность вектора движения - mvd) между вектором движения текущего макроблока и предсказателем среднего вектора движения. Когда используется CABAC в качестве энтропийного кодера, mvd кодируется следующим образом. Целочисленная mvd разделяется на абсолютную и знаковую часть. Абсолютная часть бинаризуется с использованием комбинации усеченного унарного кода и экспоненциального кода Голомба 3-го порядка, упоминаемых как префикс и суффикс результирующей строки бинов. Бины, относящиеся к усеченной унарной бинаризации кодируются с использованием контекстных моделей, тогда как бины, относящиеся к экспоненциальной бинаризации Голомба, кодируются в режиме обхода, т.е. с фиксированной вероятностью 0,5 с CABAC. Унарная бинаризация работает следующим образом. Пусть абсолютным целочисленным значением mvd является n, тогда результирующая строка бинов состоит из n «1» и одного завершающего «0». В качестве примера, пусть n=4, тогда строкой бинов является «11110». В случае усеченного унарного существует предел, и, если значение превышает этот предел, строка бинов состоит из n+1 «1». Для случая mvd предел равен 9. Это означает, если кодируется абсолютная mvd, равная или больше 9, приводя к 9 «1», строка бинов состоит из префикса и суффикса с экспоненциальной бинаризацией Голомба. Контекстное моделирование для усеченной унарной части выполняется следующим образом. Для первого бина строки бинов берутся абсолютные значения mvd от верхних и левых соседних макроблоков, если доступны (если недоступны, значение подразумевается равным 0). Если сумма для конкретной составляющей (горизонтального или вертикального направления) больше 2, выбирается вторая контекстная модель, если абсолютная сумма больше 32, выбирается третья контекстная модель, в противном случае, (абсолютная сумма меньше 3) выбирается первая контекстная модель. Кроме того, контекстные модели являются разными для каждой составляющей. Для второго бина из строки бинов используется четвертая контекстная модель, и пятая контекстная модель применяется для остальных бинов унарной части. Когда абсолютная mvd равна или больше 9, например, все бины усеченной унарной части равны «1», разность между абсолютным значением mvd и 9 кодируется в режиме обхода при помощи экспоненциальной бинаризации Голомба 3 порядка. На последнем этапе кодируется знак mvd в режиме обхода.In the H.264/AVC video codec standard, the motion vector associated with a macroblock is transmitted by signaling a difference (motion vector difference - mvd) between the motion vector of the current macroblock and the average motion vector predictor. When CABAC is used as an entropy encoder, mvd is encoded as follows. The integer mvd is divided into an absolute and a signed part. The absolute part is binarized using a combination of truncated unary code and 3rd order exponential Golomb code, referred to as the prefix and suffix of the resulting string of bins. Bins related to truncated unary binarization are encoded using context models, while bins related to exponential Golomb binarization are encoded using traversal mode, i.e. with a fixed probability of 0.5 s CABAC. Unary binarization works as follows. Let the absolute integer value of mvd be n , then the resulting string of bins consists of n "1s" and one trailing "0". As an example, let n=4, then the bin string is "11110". In the case of a truncated unary, there is a limit, and if the value exceeds this limit, the string of bins consists of n+1 "1s". For the mvd case, the limit is 9. This means that if an absolute mvd equal to or greater than 9 is encoded, resulting in 9 "1", the bin string consists of a prefix and a suffix with Golomb exponential binarization. Contextual modeling for the truncated unary part is performed as follows. For the first bin of a row of bins, the absolute mvd values from the top and left adjacent macroblocks are taken, if available (if not available, the value is assumed to be 0). If the sum for a particular component (horizontal or vertical direction) is greater than 2, the second context model is selected, if the absolute sum is greater than 32, the third context model is selected, otherwise (absolute sum less than 3) the first context model is selected. In addition, the context models are different for each component. The fourth context model is used for the second bin of the bin string, and the fifth context model is used for the remaining bins of the unary part. When the absolute mvd is equal to or greater than 9, for example, all bins of the truncated unary part are "1", the difference between the absolute value of mvd and 9 is traversed using 3rd order Golomb exponential binarization. At the last stage, the mvd character is encoded in bypass mode.

Самым последним методом кодирования для mvd при использовании CABAC в качестве энтропийного кодера задается в текущей тестовой модели (HM) проекта высокоэффективного видеокодирования (HEVC). В HEVC размеры блока являются переменными, и форма, задаваемая вектором движения, упоминается как единица предсказания (PU). Размер PU верхнего и левого соседа может иметь другие формы и размеры, чем текущий PU. Поэтому, где это уместно, определение верхнего и левого соседа упоминается теперь как верхний и левый сосед верхнего-левого угла текущего PU. Для самого кодирования процесс выведения для первого бина может меняться согласно варианту осуществления. Вместо оценки абсолютной суммы MV из соседей, каждый сосед может оцениваться отдельно. Если абсолютный MV соседа является доступным и больше 16, индекс контекстной модели может быть увеличен, приводя к такому же количеству контекстных моделей для первого бина, тогда как кодирование оставшегося абсолютного уровня MVD и знака являются точно таким же, что и в H.264/AVC.The most recent encoding method for mvd using CABAC as the entropy encoder is specified in the current benchmark model (HM) of the High Efficiency Video Coding (HEVC) project. In HEVC, block sizes are variable and the shape given by the motion vector is referred to as prediction unit (PU). The size of the top and left neighbor PU may have different shapes and sizes than the current PU. Therefore, where appropriate, the definition of the top-left neighbor is now referred to as the top-left neighbor of the top-left corner of the current PU. For the encoding itself, the derivation process for the first bin may vary according to an embodiment. Instead of estimating the absolute sum of MVs from neighbors, each neighbor can be estimated separately. If the neighbor's absolute MV is available and is greater than 16, the context model index can be increased, resulting in the same number of context models for the first bin, while the remaining absolute MVD and sign level encodings are exactly the same as in H.264/AVC .

В вышеописанном кратко методе кодирования mvd до 9 бинов должны кодироваться с контекстной моделью, тогда как остальное значение mvd может кодироваться в режиме обхода низкой сложности вместе с информацией о знаке. Данный настоящий вариант осуществления описывает метод уменьшения количества бинов, кодируемых с контекстными моделями, приводя к увеличенному количеству обходов и уменьшает количество контекстных моделей, требуемых для кодирования mvd. Для этого, значение отсечки уменьшается с 9 до 1 или 2. Это означает, что только первый бин, задающий, является ли абсолютный mvd больше нуля, кодируется с использованием контекстной модели, или первый и второй бин, задающие, является ли абсолютный mvd больше нуля и единицы, кодируется с использованием контекстной модели, тогда как оставшееся значение кодируется в режиме обхода и/или используя код VLC (код переменной длины). Все бины, являющиеся результатом бинаризации с использованием кода VLC - не используя унарный или усеченный унарный код - кодируются с использованием режима обхода низкой сложности. В случае PIPE возможно непосредственное вставление в битовый поток и из него. Кроме того, если есть, может использоваться другое определение верхнего и левого соседа для выведения лучшего выбора контекстной модели для первого бина.In the mvd encoding method briefly described above, up to 9 bins must be encoded with the context model, while the rest of the mvd value can be encoded in a low complexity bypass mode along with the sign information. This present embodiment describes a method for reducing the number of bins encoded with context models, resulting in an increased number of traversals, and reduces the number of context models required for mvd encoding. To do this, the cutoff value is reduced from 9 to 1 or 2. This means that only the first bin specifying whether the absolute mvd is greater than zero is encoded using the context model, or the first and second bins specifying whether the absolute mvd is greater than zero and ones are encoded using the context model, while the remaining value is encoded in bypass mode and/or using VLC code (variable length code). All bins resulting from binarization using VLC code - not using unary or truncated unary - are encoded using low complexity traversal mode. With PIPE, direct insertion into and out of a bitstream is possible. Additionally, if present, a different definition of top and left neighbor can be used to infer the best choice of context model for the first bin.

В предпочтительном варианте осуществления экспоненциальные коды Голомба используются для бинаризации остальной части абсолютных составляющих MVD. Для этого, порядок экспоненциального кода Голомба является переменным. Порядок экспоненциального кода Голомба выводится следующим образом. После того как будет выведена и кодирована контекстная модель для первого бина, и, поэтому, индекс этой контекстной модели, индекс используется в качестве порядка для части экспоненциальной бинаризации Голомба. В этом предпочтительном варианте осуществления контекстная модель для первого бина находится в диапазоне 1-3, приводя к индексу 0-2, которые используются в качестве порядка экспоненциального кода Голомба. Этот предпочтительный вариант осуществления может использоваться для случая HE.In the preferred embodiment, exponential Golomb codes are used to binarize the remainder of the absolute components of the MVD. For this purpose, the order of the exponential Golomb code is variable. The order of the exponential Golomb code is derived as follows. Once the context model for the first bin has been inferred and encoded, and therefore the index of that context model, the index is used as the order for the Golomb exponential binarization portion. In this preferred embodiment, the context model for the first bin is in the range 1-3, resulting in an index of 0-2, which are used as the order of the exponential Golomb code. This preferred embodiment can be used for the case of HE.

В альтернативе вышеописанному кратко методу использования двух, умноженных на пять, контекстов при кодировании абсолютной MVD, чтобы кодировать 9 бинов бинаризации унарным кодом, также может использоваться 14 контекстных моделей (7 для каждой составляющей). Например, в то время как первый и второй бины унарной части могут кодироваться при помощи четырех разных контекстов, как описано ранее, пятый контекст может использоваться для третьего бина, и шестой контекст может использоваться в отношении четвертого бина, тогда как пятый-девятый бины кодируются с использованием седьмого контекста. Таким образом, в данном случае, будет требоваться даже 14 контекстов, и просто оставшееся значение может кодироваться в режиме обхода низкой сложности. Метод для уменьшения количества бинов, кодируемых при помощи контекстных моделей, приводя к увеличенному количеству обходов и уменьшению количества контекстных моделей, требуемых для кодирования MVD, должен уменьшать значение отсечки, например, с 9 до 1 или 2. Это означает, то только первый бин, задающий, является ли абсолютная MVD больше нуля, будет кодироваться с использованием контекстной модели, или первый и второй бины, задающие, является ли абсолютная MVD больше нуля и единицы, будет кодироваться с использованием соответствующей контекстной модели, тогда как оставшееся значение кодируется при помощи кода VLC. Все бины, являющиеся результатом бинаризации с использованием кода VLC, кодируются с использованием режима обхода низкой сложности. В случае PIPE, возможно непосредственное вставление в битовый поток и из него. Кроме того, представленный вариант осуществления использует другое определение верхнего и левого соседа для выведения выбора лучшей контекстной модели для первого бина. В дополнение к этому, контекстное моделирование модифицируется таким образом, что количество контекстных моделей, требуемых для первого или первого и второго бинов уменьшается, приводя к дальнейшему снижению объема памяти. Также, оценка соседей, таких как вышеприведенный сосед, может запрещаться, приводя к экономии объема памяти/буфера строк, требуемого для хранения значений mvd соседей. Наконец, порядок кодирования составляющих может быть разделен таким образом, который позволяет выполнять кодирование бинов префикса для обоих составляющих (т.е. бинов, кодированных контекстными моделями), за которым следует кодирование бинов обхода.An alternative to the briefly described above method of using two times five contexts when encoding an absolute MVD to encode 9 binarization bins with a unary code, 14 context models (7 for each component) can also be used. For example, while the first and second bins of the unary part may be encoded using four different contexts as described earlier, the fifth context may be used for the third bin, and the sixth context may be used with respect to the fourth bin, while the fifth through ninth bins are encoded with using the seventh context. Thus, in this case, even 14 contexts will be required, and simply the remaining value can be encoded in low complexity bypass mode. A method to reduce the number of bins encoded using context models, resulting in an increased number of traversals and a reduction in the number of context models required for MVD encoding, is to reduce the cutoff value, for example from 9 to 1 or 2. This means that only the first bin specifying whether the absolute MVD is greater than zero will be encoded using the context model, or the first and second bins specifying whether the absolute MVD is greater than zero and one will be encoded using the corresponding context model, while the remaining value is encoded using VLC code . All bins resulting from binarization using VLC code are encoded using low complexity traversal mode. In the case of PIPE, direct insertion into and out of a bitstream is possible. In addition, the presented embodiment uses a different definition of top and left neighbor to infer the selection of the best context model for the first bin. In addition to this, the context modeling is modified such that the number of context models required for the first or first and second bins is reduced, resulting in a further reduction in memory footprint. Also, evaluation of neighbors such as the above neighbor may be inhibited, resulting in saving the amount of memory/row buffer required to store the neighbors' mvd values. Finally, the encoding order of the constituents can be split in a manner that allows prefix bin encoding for both constituents (i.e., context model-encoded bins) followed by traversal bin encoding.

В предпочтительном варианте осуществления экспоненциальные коды Голомба используются для бинаризации остальной части абсолютных составляющих mvd. Для этого, порядок экспоненциального кода Голомба является переменным. Порядок экспоненциального кода Голомба может выводиться следующим образом. После того как будет получена контекстная модель для первого бина, и, поэтому, индекс этой контекстной модели, индекс используется в качестве порядка для экспоненциальной бинаризации Голомба. В данном предпочтительном варианте осуществления контекстная модель для первого бина находится в диапазоне 1-3, приводя к индексу 0-2, который используется в качестве порядка экспоненциального кода Голомба. Данный предпочтительный вариант осуществления может использоваться для случая HE, и количество контекстных моделей уменьшается до 6. Чтобы еще уменьшить количество контекстных моделей и, поэтому, сэкономить память, горизонтальные и вертикальные составляющие могут совместно использовать одни и те же контекстные модели в другом предпочтительном варианте осуществления. В этом случае, требуется только 3 контекстных модели. Кроме того, может учитываться только левый сосед для оценки в другом предпочтительном варианте осуществления изобретения. В данном предпочтительном варианте осуществления порог может не модифицироваться (например, только единственный порог 16, приводя к параметру экспоненциального кода Голомба 0 или 1, или единственный порог 32, приводя к параметру экспоненциального кода Голомба 0 или 2). Этот предпочтительный вариант осуществления экономит буфер строк, требуемый для хранения mvd. В другом предпочтительном варианте осуществления порог модифицируется и равен 2 и 16. Для этого предпочтительного варианта осуществления в сумме требуется 3 контекстных модели для кодирования mvd, и возможный параметр экспоненциального кода Голомба находится в диапазоне 0-2. В другом предпочтительном варианте осуществления порог равен 16 и 32. Снова, описанный вариант осуществления пригоден для случая HE.In the preferred embodiment, exponential Golomb codes are used to binarize the remainder of the absolute components of mvd. For this purpose, the order of the exponential Golomb code is variable. The order of the exponential Golomb code can be derived as follows. Once the context model for the first bin is obtained, and therefore the index of that context model, the index is used as the order for the Golomb exponential binarization. In this preferred embodiment, the context model for the first bin is in the range 1-3, resulting in an index of 0-2, which is used as the order of the exponential Golomb code. This preferred embodiment can be used for the HE case and the number of context models is reduced to 6. To further reduce the number of context models and therefore save memory, the horizontal and vertical components can share the same context models in another preferred embodiment. In this case, only 3 context models are required. Moreover, only the left neighbor may be considered for evaluation in another preferred embodiment of the invention. In this preferred embodiment, the threshold may not be modified (eg, only a single threshold 16, resulting in an exponential Golomb code parameter of 0 or 1, or a single threshold 32, resulting in an exponential Golomb code parameter of 0 or 2). This preferred embodiment saves the row buffer required to store the mvd. In another preferred embodiment, the threshold is modified to be 2 and 16. This preferred embodiment requires a total of 3 context models to encode the mvd, and the possible exponential Golomb code parameter is in the range of 0-2. In another preferred embodiment, the threshold is 16 and 32. Again, the described embodiment is suitable for the HE case.

В другом предпочтительном варианте осуществления изобретения значение отсечки уменьшается с 9 до 2. В данном предпочтительном варианте осуществления первый бин и второй бин могут кодироваться с использованием контекстных моделей. Выбор контекстной модели для первого бина может выполняться как в современном состоянии техники или в модифицированном виде таким образом, который описан в предпочтительном варианте осуществления выше. Для второго бина выбирается отдельная контекстная модель как в современном состоянии техники. В другом предпочтительном варианте осуществления контекстная модель для второго бина выбирается посредством оценки mvd левого соседа. Для этого случая, индекс контекстной модели является тем же, что и для первого бина, тогда как доступные контекстные модели являются другими, чем для первого бина. В итоге, требуется 6 контекстных моделей (отметьте, что составляющие совместно используют контекстные модели). Снова, параметр экспоненциального кода Голомба может зависеть от индекса выбранной контекстной модели первого бина. В другом предпочтительном варианте осуществления изобретения параметр экспоненциального кода Голомба зависит от индекса контекстной модели второго бина. Описанные варианты осуществления изобретения могут использоваться для случая HE.In another preferred embodiment of the invention, the cutoff value is reduced from 9 to 2. In this preferred embodiment, the first bin and the second bin may be encoded using context models. The selection of the context model for the first bin can be performed as is in the state of the art or in a modified form in the manner described in the preferred embodiment above. For the second bin, a separate context model is selected as in the current state of the art. In another preferred embodiment, the context model for the second bin is selected by estimating the mvd of the left neighbor. For this case, the context model index is the same as for the first bin, while the available context models are different than for the first bin. In total, 6 context models are required (note that the components share context models). Again, the exponential Golomb code parameter may depend on the index of the selected context model of the first bin. In another preferred embodiment of the invention, the exponential Golomb code parameter depends on the context model index of the second bin. The described embodiments of the invention can be used for the case of HE.

В другом предпочтительном варианте осуществления изобретения контекстные модели для обоих бинов являются фиксированными и не выводятся посредством оценки или левого, или верхнего соседей. Для этого предпочтительного варианта осуществления общее количество контекстных моделей равно 2. В другом предпочтительном варианте осуществления изобретения первый бин и второй бин совместно используют одну и ту же контекстную модель. В результате, только одна контекстная модель требуется для кодирования mvd. В обоих предпочтительных вариантах осуществления изобретения параметр экспоненциального кода Голомба может быть фиксированным и равным 1. Описанный предпочтительный вариант осуществления изобретения пригоден для обоих конфигураций HE и LC.In another preferred embodiment of the invention, the context models for both bins are fixed and are not inferred by estimating either the left or top neighbors. For this preferred embodiment, the total number of context models is 2. In another preferred embodiment of the invention, the first bin and the second bin share the same context model. As a result, only one context model is required to encode mvd. In both preferred embodiments of the invention, the exponential Golomb code parameter may be fixed to 1. The described preferred embodiment is suitable for both HE and LC configurations.

В другом предпочтительном варианте осуществления порядок экспоненциальной части кода Голомба выводится независимо из индекса контекстной модели первого бина. В данном случае, абсолютная сумма выбора обычной контекстной модели H.264/AVC используется для выведения порядка для экспоненциальной части кода Голомба. Этот предпочтительный вариант осуществления может использоваться для случая HE.In another preferred embodiment, the order of the exponential part of the Golomb code is derived independently from the context model index of the first bin. In this case, the absolute sum of the conventional H.264/AVC context model selection is used to derive the order for the exponential part of the Golomb code. This preferred embodiment can be used for the case of HE.

В другом предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба является фиксированным и устанавливается на 0. В другом предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба является фиксированным и устанавливается на 1. В предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба фиксируется на 2. В другом варианте осуществления порядок экспоненциальных кодов Голомба фиксируется на 3. В другом варианте осуществления порядок экспоненциальных кодов Голомба фиксируется в соответствии с формой и размером текущего PU. Представленные предпочтительные варианты осуществления могут использоваться для случая LC. Отметьте, что фиксированный порядок части экспоненциального кода Голомба рассматривается с уменьшенным количеством бинов, кодированных с контекстными моделями.In another preferred embodiment, the order of exponential Golomb codes is fixed and is set to 0. In another preferred embodiment, the order of exponential Golomb codes is fixed and is set to 1. In a preferred embodiment, the order of exponential Golomb codes is fixed to 2. In another embodiment, the order of exponential Golomb codes are fixed to 3. In another embodiment, the order of exponential Golomb codes is fixed according to the shape and size of the current PU. The preferred embodiments presented may be used for the LC case. Note that the fixed order portion of the exponential Golomb code is considered with a reduced number of bins encoded with context models.

В предпочтительном варианте осуществления соседи определяются следующим образом. Для вышеупомянутого PU все PU, которые закрывают текущий PU, принимаются во внимание, и используется PU с наибольшим MV. Это также выполняется для левого соседа. Все PU, которые закрывают текущий PU, оцениваются, и используется PU с наибольшим MV. В другом предпочтительном варианте осуществления среднее абсолютное значение вектора движения от всех PU, которые закрывают верхнюю и левую границу текущего PU, используется для выведения первого бина.In a preferred embodiment, neighbors are defined as follows. For the above PU, all PUs that cover the current PU are taken into account and the PU with the largest MV is used. This also applies to the left neighbor. All PUs that cover the current PU are evaluated and the PU with the highest MV is used. In another preferred embodiment, the average absolute value of the motion vector from all PUs that cover the top and left border of the current PU is used to derive the first bin.

Для представленных выше предпочтительных вариантов осуществления является возможным изменять порядок кодирования следующим образом. mvd должен быть задан для горизонтального и вертикального направления один за другим (или наоборот). Таким образом, две строки бинов должны кодироваться. Чтобы минимизировать количество переключений режима для механизма энтропийного кодирования (т.е. переключение между режимом обхода и обычным режимом), является возможным кодировать бины, кодированные с контекстными моделями для обоих составляющих на первом этапе, за которым следует бины, кодированные в режиме обхода на втором этапе. Отметьте, что это представляет собой только переупорядочивание.For the above preferred embodiments, it is possible to change the encoding order as follows. mvd must be set for horizontal and vertical direction one after the other (or vice versa). Thus, two strings of beans must be encoded. To minimize the number of mode switches for the entropy encoding mechanism (i.e., switching between bypass mode and normal mode), it is possible to encode bins encoded with context models for both components in the first stage, followed by bins encoded in bypass mode in the second stage. Note that this represents only a reordering.

Необходимо отметить, что бины, являющиеся результатом унарной или усеченной унарной бинаризации, также могут представляться эквивалентной бинаризацией фиксированной длины одного флага на индекс бина, задающего, является ли значение больше индекса текущего бина. В качестве примера, значение отсечки для усеченной унарной бинаризации mvd устанавливается на 2, приводя к кодовым словам 0, 10, 11 для значений 0, 1, 2. При соответствующей бинаризации фиксированной длины с одним флагом на индекс бина, один флаг для индекса 0 бина (т.е. первого бина) задает, является ли абсолютное значение mvd больше 0 или нет, и один флаг для второго бина с индексом 1 бина задает, является ли абсолютное значение mvd больше 1 или нет. Когда второй флаг только кодируется, когда первый флаг равен 1, это приводит к таким же кодовым словам 0, 10, 11.It should be noted that bins resulting from a unary or truncated unary binarization can also be represented by an equivalent fixed-length binarization of one flag per bin index specifying whether the value is greater than the index of the current bin. As an example, the cutoff value for the truncated unary binarization mvd is set to 2, resulting in codewords 0, 10, 11 for values 0, 1, 2. For a corresponding fixed-length binarization with one flag per bin index, one flag for bin index 0 (i.e. the first bin) specifies whether the absolute value of mvd is greater than 0 or not, and one flag for the second bin with bin index 1 specifies whether the absolute value of mvd is greater than 1 or not. When the second flag is only encoded when the first flag is 1, it results in the same codewords 0, 10, 11.

Ниже описывается представление с масштабируемой сложностью внутреннего состояния вероятностных моделей согласно варианту осуществления.The following describes a scalable complexity representation of the internal state of probabilistic models according to an embodiment.

При установке HE-PIPE, внутреннее состояние вероятностной модели обновляется после кодирования бина с ним. Обновленное состояние выводится посредством табличного поиска перехода состояния, используя старое состояние и значение кодированного бина. В случае CABAC вероятностная модель может принимать 63 разных состояний, когда каждое состояние соответствует вероятности модели в интервале (0,0, 0,5). Каждое из этих состояний используется для реализации двух вероятностей модели. В дополнение к вероятности, назначенной состоянию, 1,0 минус вероятность также используется, и флаг, названный valMps, хранит информацию, используется ли вероятность или 1,0 минус вероятность. Это приводит к сумме в 126 состояний. Чтобы использовать такую вероятностную модель с принципом кодирования PIPE, каждое из 126 состояний необходимо отображать на один из доступных кодеров PIPE. В текущих реализациях кодеров PIPE это выполняется посредством использования таблицы поиска. Пример такого отображения описывается в таблице A.When setting HE-PIPE, the internal state of the probabilistic model is updated after encoding a bin with it. The updated state is inferred through a state transition table lookup using the old state and the value of the encoded bin. In the case of CABAC, the probabilistic model can assume 63 different states, where each state corresponds to a model probability in the interval (0.0, 0.5). Each of these states is used to implement two model probabilities. In addition to the probability assigned to the state, 1.0 minus probability is also used, and a flag called valMps stores information whether probability or 1.0 minus probability is used. This results in a total of 126 states. To use such a probabilistic model with the PIPE encoding principle, each of the 126 states must be mapped to one of the available PIPE encoders. Current implementations of PIPE encoders accomplish this by using a lookup table. An example of such a mapping is described in Table A.

Ниже описывается вариант осуществления, как внутреннее состояние вероятностной модели может быть представлено для исключения использования таблицы поиска для преобразования внутреннего состояния в индекс PIPE. Необходимы исключительно некоторые простые операции маскирования битов для извлечения индекса PIPE из переменной внутреннего состояния вероятностной модели. Это новое представление с масштабируемой сложностью внутреннего состояния вероятностной модели разработано двухуровневым образом. Для применений, где операция низкой сложности является обязательной, используется только первый уровень. Он описывает только индекс pipe и флаг valMps, который используется для кодирования или декодирования ассоциированных бинов. В случае описанной схемы энтропийного кодирования PIPE, первый уровень может использоваться для различения между 8 разными вероятностями моделей. Таким образом, первому уровню потребуется 3 бита для pipeIdx, и один дополнительный бит для флага valMps. Со вторым уровнем каждый из диапазонов грубой вероятности первого уровня уточняется в несколько меньшие интервалы, которые поддерживают представление вероятностей при более высоких разрешениях. Это более подробное представление позволяет получить более точную работу устройств оценки вероятности. В общем, оно подходит для применений кодирования, которые стремятся к высоким характеристикам RD. В качестве примера, это представление с масштабируемой сложностью внутреннего состояния вероятностных моделей с использованием PIPE изображается следующим образом:The following describes an embodiment of how the internal state of a probabilistic model can be represented to eliminate the use of a lookup table to transform the internal state into a PIPE index. All that is needed is some simple bit masking operations to extract the PIPE index from the internal state variable of the probabilistic model. This new representation with scalable internal state complexity of the probabilistic model is developed in a two-level manner. For applications where low complexity operation is mandatory, only the first level is used. It describes only the pipe index and the valMps flag, which is used to encode or decode associated bins. In the case of the described PIPE entropy encoding scheme, the first layer can be used to distinguish between 8 different model probabilities. Thus, the first layer will need 3 bits for pipeIdx, and one additional bit for the valMps flag. With the second level, each of the first level's crude probability ranges is refined into slightly smaller intervals that support the representation of probabilities at higher resolutions. This more detailed view allows for more accurate performance of probability estimators. In general, it is suitable for coding applications that strive for high RD performance. As an example, this scalable internal state complexity representation of probabilistic models using PIPE is depicted as follows:

Первый и второй уровни сохраняются в единственной 8-битовой памяти. 4 бита требуются для хранения первого уровня - индекс, который определяет индекс PIPE со значением MPS на самом старшем бите - и другие 4 бита используются для хранения второго уровня. Для реализации поведения устройства оценки вероятности CABAC, каждый индекс PIPE имеет конкретное количество разрешенных индексов уточнения в зависимости от того, сколько состояний CABAC было отображено на индекс PIPE. Например, для отображения в таблице A количество состояний CABAC на индекс PIPE изображается в таблице B.The first and second levels are stored in a single 8-bit memory. 4 bits are required to store the first level - the index that defines the PIPE index with the MPS value on the most significant bit - and the other 4 bits are used to store the second level. To implement the CABAC probability estimator behavior, each PIPE index has a specific number of refinement indexes allowed depending on how many CABAC states have been mapped to the PIPE index. For example, to display in table A, the number of CABAC states per PIPE index is depicted in table B.

Таблица B: Количество состояний CABAC на индекс PIPE для примера таблицы A.Table B: Number of CABAC states per PIPE index for example table A.

Во время процесса кодирования или декодирования бина к индексу PIPE и valMps можно обращаться непосредственно посредством применения простой битовой маски или операций сдвига бита. Процессы кодирования низкой сложности требуют 4 бита первого уровня, и процессы кодирования высокой эффективности могут дополнительно использовать 4 бита второго уровня для выполнения обновления вероятностной модели устройства оценки вероятности CABAC. Для выполнения этого обновления может быть разработана таблица поиска переходов состояния, которая делает такие же переходы состояния, что и исходная таблица, но используя двухуровневое представление с масштабируемой сложностью состояний. Исходная таблица переходов состояний состоит из двух, умноженных на 63 элементов. Для каждого состояния ввода она содержит два состояния вывода. При использовании представления с масштабируемой сложностью размер таблицы переходов состояний не превышает 2, умноженных на 128 элементов, что представляет собой допустимое увеличение размера таблицы. Это увеличение зависит от того, сколько битов используется для представления индекса уточнения и точного имитирования поведения устройства оценки вероятности CABAC, необходимо четыре бита. Однако могут использоваться другие устройства оценки вероятности, которые могут работать на уменьшенном наборе состояний CABAC, так что для каждого индекса pipe разрешается не более 8 состояний. Поэтому, потребление памяти может сопоставляться с данным уровнем сложности процесса кодирования посредством адаптации количества битов, используемых для представления индекса уточнения. По сравнению с внутренним состоянием вероятностей модели с CABAC - где существует 64 индекса состояния вероятности - исключается использование табличных поисков для отображения вероятностей модели на конкретный код PIPE, и не требуется дополнительного преобразования.During the encoding or decoding process of a bin, the PIPE index and valMps can be accessed directly through the use of a simple bit mask or bit shift operations. Low complexity encoding processes require 4 bits of the first level, and high efficiency encoding processes can additionally use 4 bits of the second level to perform an update of the probabilistic model of the CABAC probability estimator. To perform this update, a state transition lookup table can be designed that makes the same state transitions as the original table, but using a two-level representation with scalable state complexity. The original state transition table consists of two elements multiplied by 63. For each input state, it contains two output states. When using a scalable complexity representation, the size of the state transition table does not exceed 2 times 128 elements, which is an acceptable increase in table size. This increase depends on how many bits are used to represent the refinement index and accurately simulate the behavior of the CABAC probability estimator, four bits are needed. However, other probability estimators can be used that can operate on a reduced set of CABAC states such that no more than 8 states are allowed for each pipe index. Therefore, memory consumption can be matched to a given level of complexity of the encoding process by adapting the number of bits used to represent the refinement index. Compared to the internal state of model probabilities with CABAC - where there are 64 probability state indices - the use of table lookups to map model probabilities to a specific PIPE code is eliminated, and no additional transformation is required.

Ниже описывается обновление контекстной модели с масштабируемой сложностью согласно варианту осуществления.The following describes updating the context model with scalable complexity according to an embodiment.

Для обновления контекстной модели ее индекс состояния вероятности может обновляться на основе одного или нескольких ранее кодированных бинов. В установке HE-PIPE это обновление выполняется после кодирования или декодирования каждого бина. И наоборот, в установке LC-PIPE это обновление может никогда не выполняться.To update the context model, its probability state index may be updated based on one or more previously encoded bins. In a HE-PIPE setup, this update is performed after each bin is encoded or decoded. Conversely, in an LC-PIPE installation, this update may never be performed.

Однако является возможным выполнять обновление контекстных моделей с масштабируемой сложностью. Т.е. решение, обновлять ли контекстную модель или нет может основываться на различных аспектах. Например, установка кодера может не выполнять обновление только для конкретных контекстных моделей, подобно, например, контекстным моделям синтаксического элемента coeff_significant_flag и выполнять всегда обновления для всех других контекстных моделей.However, it is possible to update context models with scalable complexity. Those. The decision whether to update the context model or not can be based on various aspects. For example, an encoder installation may not perform updates only for specific context models, like, for example, the context models of the coeff_significant_flag syntax element, and always perform updates for all other context models.

Другими словами, селектор 402 может быть выполнен, для символов каждого из нескольких заданных типов символа, с возможностью выполнения выбора среди энтропийных декодеров 322 в зависимости от соответствующей вероятностной модели, ассоциированной с соответствующим заданным символом, так что количество заданных типов символа меньше в режиме низкой сложности по сравнению с режимом высокой эффективности.In other words, the selector 402 may be configured for symbols of each of several given symbol types, with the ability to select among the entropy decoders 322 depending on the corresponding probability model associated with the corresponding given symbol, such that the number of given symbol types is less in the low complexity mode compared to high efficiency mode.

Кроме того, критериями для управления, обновлять ли контекстную модель или нет, могут быть, например, размер пакета битового потока, количество бинов, декодированных до сих пор, или обновление выполняется только после кодирования конкретного фиксированного или переменного количества бинов для контекстной модели.In addition, the criteria for controlling whether to update the context model or not may be, for example, the size of the bitstream packet, the number of bins decoded so far, or the update is performed only after encoding a specific fixed or variable number of bins for the context model.

С данной схемой для принятия решения, обновлять ли контекстные модели или нет, может быть реализовано обновление контекстной модели с масштабируемой сложностью. Это позволяет увеличивать или уменьшать долю бинов в битовом потоке, для которого выполняется обновления контекстной модели. Чем больше количество обновлений контекстной модели, тем лучше эффективность кодирования и выше вычислительная сложность. Таким образом, обновление контекстной модели с масштабируемой сложностью может достигаться с описанной схемой.With this scheme for deciding whether to update context models or not, context model updating with scalable complexity can be realized. This allows you to increase or decrease the proportion of bins in the bitstream for which context model updates are performed. The higher the number of context model updates, the better the coding efficiency and the higher the computational complexity. Thus, context model updating with scalable complexity can be achieved with the described scheme.

В предпочтительном варианте осуществления обновление контекстной модели выполняется для бинов всех синтаксических элементов за исключением синтаксических элементов coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2.In the preferred embodiment, the context model update is performed on the bins of all syntax elements except the syntax elements coeff_significant_flag, coeff_abs_greater1 and coeff_abs_greater2.

В другом предпочтительном варианте осуществления обновление контекстной модели выполняется только для бинов синтаксических элементов coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2.In another preferred embodiment, the context model update is performed only on the coeff_significant_flag, coeff_abs_greater1, and coeff_abs_greater2 syntax element bins.

В другом предпочтительном варианте осуществления обновление контекстной модели выполняется для всех контекстных моделей, когда начинается кодирование или декодирование слайса. После того как будет обработано конкретное заданное количество блоков преобразования, обновление контекстной модели запрещается для всех контекстных моделей до тех пор, пока не будет достигнут конец слайса.In another preferred embodiment, a context model update is performed for all context models when encoding or decoding of a slice begins. Once a specific specified number of transformation blocks have been processed, updating the context model is disabled for all context models until the end of the slice is reached.

Например, селектор 402 может быть выполнен, для символов заданного типа символа, с возможностью выполнения выбора из числа энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с заданным типом символа, вместе или без обновления ассоциированной вероятностной модели, так что длительность фазы обучения последовательности символов, по которой выполняется выбор символов заданного типа символа вместе с обновлением, является более короткой в режиме низкой сложности по сравнению с режимом высокой эффективности.For example, selector 402 may be configured, for symbols of a given symbol type, to select from among entropy decoders 322 depending on the probabilistic model associated with the given symbol type, with or without updating the associated probabilistic model, such that the duration of the training phase of the symbol sequence , which selects symbols of a given symbol type along with updating, is shorter in low complexity mode compared to high efficiency mode.

Другой предпочтительный вариант осуществления идентичен ранее описанному предпочтительному варианту осуществления, но он использует представление с масштабируемой сложностью внутреннего состояния контекстных моделей таким образом, что одна таблица хранит «первую часть» (valMps и pipeIdx) всех контекстных моделей, и вторая таблица хранит «вторую часть» (refineIdx) всех контекстных моделей. Тогда, когда обновление контекстной модели запрещается для всех контекстных моделей (как описано в предыдущем предпочтительном варианте осуществления), больше не требуется таблица, хранящая «вторую часть», и она может быть отброшена.Another preferred embodiment is identical to the previously described preferred embodiment, but it uses a complexity-scalable representation of the internal state of context models such that one table stores the "first part" (valMps and pipeIdx) of all context models, and a second table stores the "second part" (refineIdx) of all context models. Then, when updating the context model is disabled for all context models (as described in the previous preferred embodiment), the table storing the "second part" is no longer required and can be discarded.

Ниже описывается обновление контекстной модели для последовательности бинов согласно варианту осуществления.The following describes updating the context model for a sequence of bins according to an embodiment.

В конфигурации LC-PIPE бины синтаксических элементов типа coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2 группируются в подмножества. Для каждого подмножества используется единственная контекстная модель для кодирования ее бинов. В данном случае, обновление контекстной модели может выполняться после кодирования фиксированного количества бинов данной последовательности. Это обозначается многобиновым обновлением в нижеследующем. Однако это обновление может отличаться от обновления, использующего только последний кодированный бин и внутреннее состояние контекстной модели. Например, для каждого бина, который был кодирован, выполняется один этап обновления контекстной модели.In the LC-PIPE configuration, bins of syntax elements of type coeff_significant_flag, coeff_abs_greater1 and coeff_abs_greater2 are grouped into subsets. For each subset, a single context model is used to encode its bins. In this case, updating the context model can be performed after encoding a fixed number of bins of a given sequence. This is denoted by a multi-bin update in the following. However, this update may be different from an update that uses only the last encoded bin and the internal state of the context model. For example, for each bin that has been encoded, one context model update step is performed.

Ниже приведены примеры для кодирования примерного подмножества, состоящего из 8 бинов. Буква «b» обозначает декодирование бина, и буква «u» обозначает обновление контекстной модели. В случае LC-PIPE выполняется только декодирование бинов без выполнения обновлений контекстной модели:Below are examples for encoding an example subset of 8 bins. The letter “b” denotes bin decoding, and the letter “u” denotes updating the context model. In the case of LC-PIPE, only bin decoding is performed without performing updates to the context model:

b b b b b b b bb b b b b b b b

В случае HE-PIPE после декодирования каждого бина выполняется обновление контекстной модели:In the case of HE-PIPE, after decoding each bin, the context model is updated:

b u b u b u b u b u b u b u b ub u b u b u b u b u b u b u b u

Чтобы в некоторой степени уменьшить сложность, обновление контекстной модели может выполняться после последовательности бинов (в данном примере после каждых 4 бинов выполняются обновления этих 4 бинов):To reduce complexity to some extent, an update to the context model can be performed after a sequence of beans (in this example, after every 4 beans, updates to those 4 beans are performed):

b b b b u u u u b b b b u u u ub b b b u u u u b b b b u u u u

Т.е. селектор 402 может быть выполнен, для символов заданного типа символа, с возможностью выполнения выбора из числа энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с заданным типом символа вместе с или без обновления ассоциированной вероятностной модели, так что частота, с которой выполняется выбор символов заданного типа символа вместе с обновлением, меньше в режиме низкой сложности по сравнению с режимом высокой эффективности.Those. selector 402 may be configured, for symbols of a given symbol type, to select from among entropy decoders 322 depending on the probabilistic model associated with the given symbol type, with or without updating the associated probabilistic model, such that the frequency with which symbol selection is performed of a given character type along with updating is less in low difficulty mode compared to high efficiency mode.

В данном случае, после декодирования 4 бинов следует 4 этапа обновления, основанные на только что декодированных 4 бинах. Отметьте, что эти четыре этапа обновления могут выполняться одним единственным этапом посредством использования специальной таблицы поиска для поиска. Эта таблица поиска хранит для каждой возможной комбинации из 4 бинов и каждого возможного внутреннего состояния контекстной модели результирующее новое состояние после четырех обычных этапов обновления.In this case, after decoding the 4 bins, there are 4 update steps based on the 4 bins just decoded. Note that these four update steps can be performed in one single step by using a special lookup table for the lookup. This lookup table stores, for every possible combination of 4 bins and every possible internal state of the context model, the resulting new state after the normal four update steps.

В некотором режиме многобиновое обновление используется для синтаксического элемента coeff_significant_flag. Для бинов всех других синтаксических элементов не используется обновление контекстной модели. Количество бинов, которые кодируются перед этапом многобинового обновления, устанавливается на n. Когда количество бинов множества не является кратным n, 1-n-1 бинов остается в конце подмножества после последнего многобинового обновления. Для каждого из этих бинов выполняется обычное однобиновое обновление после кодирования всех этих бинов. Количество n может представлять собой любое положительное число больше 1. Другой режим может быть идентичным предыдущему режиму за исключением того, что многобиновое обновление выполняется для произвольных комбинаций coeff_significant_flag, coeff_abs_greater1 и coeff_abs_greater2 (только вместо coeff_significant_flag). Таким образом, этот режим будет более сложным, чем другой. Все другие синтаксические элементы (где не используется многобиновое обновление) могут быть разделены на два непересекающихся подмножеств, где для одного из подмножеств используется однобиновое обновление, и для другого подмножества не используется обновление контекстной модели. Любые возможные непересекающиеся подмножества являются действительными (включая пустое подмножество).In some mode, multi-bin update is used for the coeff_significant_flag syntax element. All other syntax element beans do not use context model updating. The number of bins that are encoded before the multi-bin update step is set to n. When the number of bins in a set is not a multiple of n, 1-n-1 bins remain at the end of the subset after the last multibin update. For each of these bins, a normal single-bin update is performed after encoding all of these bins. The number n can be any positive number greater than 1. Another mode can be identical to the previous mode except that a multi-bin update is performed for arbitrary combinations of coeff_significant_flag, coeff_abs_greater1 and coeff_abs_greater2 (only instead of coeff_significant_flag). So this mode will be more challenging than the other. All other syntax elements (where multi-bin update is not used) can be divided into two disjoint subsets, where one of the subsets uses single-bin update and the other subset does not use context model update. Any possible disjoint subsets are valid (including the empty subset).

В альтернативном варианте осуществления многобиновое обновление может основываться только на последних m бинах, которые кодируются непосредственно перед этапом многобинового обновления. m может представлять собой любое натуральное число меньше n. Таким образом, декодирование может выполняться подобно следующему:In an alternative embodiment, the multi-bin update may be based only on the last m bins that are encoded immediately before the multi-bin update step. m can represent any natural number less than n. So decoding can be done like the following:

b b b b u u b b b b u u b b b b u u b b b b …b b b b u u b b b b u u b b b b u u b b b b …

при n=4 и m=2.with n=4 and m=2.

Т.е. селектор 402 может быть выполнен, для символов заданного типа символа, с возможностью выполнения выбора из числа энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с заданным типом символа, вместе с обновлением ассоциированной вероятностной модели каждого n-го символа заданного типа, основываясь на m самых последних символах заданного типа символа, так что отношение n/m является более высоким в режиме низкой сложности по сравнению с режимом высокой эффективности.Those. selector 402 may be configured, for symbols of a given symbol type, to select from among entropy decoders 322 depending on the probability model associated with the given symbol type, together with updating the associated probability model of each nth symbol of the given type based on m the most recent symbols of a given symbol type, so that the n/m ratio is higher in the low-complexity mode compared to the high-performance mode.

В другом предпочтительном варианте осуществления для синтаксического элемента coeff_significant_flag может использоваться схема контекстного моделирования, использующая местный шаблон, как описано выше для конфигурации HE-PIPE, для назначения контекстных моделей бинам синтаксического элемента. Однако для этих бинов не используется обновление контекстной модели.In another preferred embodiment, a context modeling scheme may be used for the coeff_significant_flag syntax element using a local template, as described above for the HE-PIPE configuration, to assign context models to the syntax element's bins. However, these beans do not use context model updating.

Кроме того, селектор 402 может быть выполнен, для символов заданного типа символа, с возможностью выбора одного из нескольких контекстов в зависимости от количества ранее извлеченных символов последовательности символов и выполнения выбора из числа энтропийных декодеров 322 в зависимости от вероятностной модели, ассоциированной с выбранным контекстом, так что количество контекстов, и/или количество ранее извлеченных символов, меньше в режиме низкой сложности по сравнению с режимом высокой эффективности.In addition, the selector 402 may be configured, for symbols of a given symbol type, to select one of several contexts depending on the number of previously extracted symbols of the symbol sequence and select from among entropy decoders 322 depending on the probabilistic model associated with the selected context. so the number of contexts, and/or the number of previously retrieved symbols, is smaller in the low complexity mode compared to the high efficiency mode.

Инициализация вероятностной модели, использующая 8-битовые значения инициализацииProbabilistic model initialization using 8-bit initialization values

Этот раздел описывает процесс инициализации внутреннего состояния с масштабируемой сложностью вероятностных моделей, используя так называемое 8-битовое значение инициализации вместо двух 8-битовых значений, как в случае современного стандарта H.264/AVC видеокодирования. Оно состоит из двух частей, которые являются сравнимыми с парами значений инициализации, используемыми для вероятностных моделей в CABAC в H.264/AVC. Две части представляют два параметра линейного уравнения для вычисления исходного состояния вероятностной модели, представляющей конкретную вероятность (например, в виде индекса PIPE) из QP:This section describes the process of initializing internal state with scalable complexity of probabilistic models, using a so-called 8-bit initialization value instead of two 8-bit values, as is the case with the current H.264/AVC video encoding standard. It consists of two parts, which are comparable to the initialization value pairs used for probabilistic models in CABAC in H.264/AVC. The two parts represent the two parameters of a linear equation for calculating the initial state of a probabilistic model representing a specific probability (e.g. as a PIPE index) from the QP:

Первая часть описывает наклон, и он использует зависимость внутреннего состояния касательно параметра квантования (QP), который используется во время кодирования или декодирования.The first part describes the slope, and it uses the internal state relationship with respect to the quantization parameter (QP) that is used during encoding or decoding.

Вторая часть описывает индекс PIPE при данном QP, а также valMps.The second part describes the PIPE index at a given QP, as well as valMps.

Два разных режима являются доступными для инициализации вероятностной модели, используя данное значение инициализации. Первый режим обозначается как независимая от QP инициализация. Он использует только индекс PIPE и valMps, определенные во второй части значения инициализации для всех QP. Это идентично случаю, когда наклон равен 0. Второй режим обозначается как зависимая от QP инициализация, и он дополнительно использует наклон первой части значения инициализации для изменения индекса PIPE и определения индекса уточнения. Две части 8-битового значения инициализации изображаются следующим образом:Two different modes are available for initializing a probabilistic model using a given initialization value. The first mode is designated as QP-independent initialization. It only uses the PIPE index and valMps defined in the second part of the initialization value for all QPs. This is identical to the case when the slope is 0. The second mode is denoted as QP-dependent initialization, and it additionally uses the slope of the first part of the initialization value to change the PIPE index and determine the refinement index. The two parts of the 8-bit initialization value are depicted as follows:

Оно состоит из двух 4-битовых частей. Первая часть содержит индекс, который указывает на 1 из 16 разных заданных наклонов, которые хранятся в массиве. Заданные наклоны состоят из 7 отрицательных наклонов (индекс наклона 0-6), одного наклона, который равен нулю (индекс 7 наклона) и 8 положительных наклонов (индекс 8-15 наклона). Наклоны изображены в таблице C.It consists of two 4-bit parts. The first part contains an index that points to 1 of the 16 different specified slopes that are stored in the array. The specified slopes consist of 7 negative slopes (slope index 0-6), one slope that is zero (slope index 7), and 8 positive slopes (slope index 8-15). The slopes are shown in Table C.

Таблица CTable C

Все значения масштабируются коэффициентом 256, чтобы избежать использования операций с плавающей запятой. Вторая часть представляет собой индекс PIPE, который изображает восходящую вероятность valMps=1 между интервалом вероятности p=0 и p=1. Другими словами, кодер n PIPE должен работать при более высокой вероятности модели, чем кодер n-1 PIPE. Для каждой вероятностной модели доступен один индекс вероятности PIPE, и он идентифицирует кодер PIPE, интервал вероятностей которого содержит вероятность pvalMPs=1 для QP=26.All values are scaled by a factor of 256 to avoid the use of floating point operations. The second part is the PIPE index, which depicts the upward probability valMps=1 between the probability interval p=0 and p=1. In other words, the n PIPE encoder must operate at a higher model probability than the n-1 PIPE encoder. There is one PIPE probability index available for each probabilistic model, and it identifies a PIPE encoder whose probability interval contains the probability p valMPs=1 for QP=26.

Таблица D: Отображение второй части значения инициализации на кодеры PIPE и valMps: UR - унарный-в-Райс-код; TB - трехбиновый код, BP - бин-pipe-код, EP - равновероятность (не кодируется)Table D: Mapping of the second part of the initialization value to the PIPE and valMps encoders: UR - unary-to-Rice code; TB - three-bin code, BP - bin-pipe code, EP - equal probability (not coded)

QP и 8-битовое значение инициализации требуются для вычисления инициализации внутреннего состояния вероятностных моделей посредством вычисления простого линейного уравнения в виде y=m*(QP-QPref)+256*b. Отметьте, что m определяет наклон, который берется из таблицы C посредством использования индекса наклона (первая часть 8-битового значения инициализации), и b обозначает кодер PIPE при QPref=26 (вторая часть 8-битового значения инициализации: «Индекс вероятности PIPE»). Тогда valMPS равен 1, и pipeIdx равен (y-2048)>>8, если y больше 2047. В противном случае, valMPS равен 0, и pipeIdx равен (2047-y)>>8. Индекс уточнения равен (((y-2048)&255)*numStates)>>8, если valMPS равен 1. В противном случае, индекс уточнения равен (((2047-y)&255)*numStates)>>8. В обоих случаях, numStates равен количеству состояний CABAC в pipeIdx, как изображено в таблице B.A QP and an 8-bit initialization value are required to compute the initialization of the internal state of the probabilistic models by computing a simple linear equation of the form y=m*(QP-QPref)+256*b. Note that m specifies the slope, which is taken from table C by using the slope index (the first part of the 8-bit initialization value), and b denotes the PIPE encoder at QPref=26 (the second part of the 8-bit initialization value: "PIPE Probability Index") . Then valMPS is 1 and pipeIdx is (y-2048)>>8 if y is greater than 2047. Otherwise, valMPS is 0 and pipeIdx is (2047-y)>>8. The refinement index is (((y-2048)&255)*numStates)>>8 if valMPS is 1. Otherwise, the refinement index is (((2047-y)&255)*numStates)>>8. In both cases, numStates is equal to the number of CABAC states in pipeIdx, as depicted in Table B.

Вышеупомянутая схема не только может использоваться в комбинации с кодерами PIPE, но также в связи с вышеупомянутыми схемами CABAC. При отсутствии PIPE количество состояний CABAC, т.е. вероятностных состояний, между которыми выполняется переход состояния при обновлении вероятности (pState_current[bin]) на PIPE Idx (т.е. соответствующие самые старшие биты pState_current[bin]) представляют собой тогда только множество параметров, которые реализуют, фактически, кусочно-линейную интерполяцию состояния CABAC в зависимости от QP. Кроме того, эта кусочно-линейная интерполяция также может быть виртуально запрещена в случае, когда параметр numStates использует одинаковое значение для всех PIPE Idx. Например, установка numStates в 8 для всех случаев дает в сумме 16*8 состояний, и вычисление индекса уточнения упрощается до ((y-2048)&255)>>5 для valMPS равного 1 или ((2047-y)&255)>>5 для valMPS равного 0. Для этого случая является очень простым отображение представления, использующего valMPS, PIPE Idx и idx уточнения обратно к представлению, используемому исходным CABAC в H.264/AVC. Состояние CABAC определяется как (PIPE Idx<<3)+Idx уточнения. Этот аспект дополнительно описывается ниже в отношении фиг. 16.The above circuit can not only be used in combination with PIPE encoders, but also in connection with the above CABAC circuits. In the absence of PIPE, the number of CABAC states, i.e. probabilistic states between which a state transition is performed when updating the probability (pState_current[bin]) on PIPE Idx (i.e. the corresponding most significant bits of pState_current[bin]) then represent only a set of parameters that implement, in fact, piecewise linear interpolation CABAC states depending on QP. Additionally, this piecewise linear interpolation can also be virtually disabled in the case where the numStates parameter uses the same value for all PIPE Idx. For example, setting numStates to 8 for all cases results in a total of 16*8 states, and the refinement index calculation simplifies to ((y-2048)&255)>>5 for valMPS equal to 1 or ((2047-y)&255)>>5 for valMPS equal to 0. For this case, it is very simple to map the representation using valMPS, PIPE Idx and idx refiners back to the representation used by the original CABAC in H.264/AVC. The CABAC state is defined as (PIPE Idx<<3)+Idx refinement. This aspect is further described below in relation to FIG. 16.

Если наклон 8-битового значения инициализации не равен нулю, или если QP не равно 26, то необходимо вычислять внутреннее состояние применением линейного уравнения с QP процесса кодирования или декодирования. В случае наклона, равного нулю, или что QP текущего процесса кодирования равно 26, вторая часть 8-битового значения инициализации может использоваться непосредственно для инициализации внутреннего состояния вероятностной модели. В противном случае, десятичная часть результирующего внутреннего состояния может быть дополнительно использоваться для определения индекса уточнения в применениях высокоэффективного кодирования посредством линейной интерполяции между пределами конкретного кодера PIPE. В данном предпочтительном варианте осуществления линейная интерполяция выполняется простым умножением десятичной части на общее количество индексов уточнения, доступных для текущего кодера PIPE и отображением результата на ближайший целочисленный индекс уточнения.If the slope of the 8-bit initialization value is not zero, or if the QP is not equal to 26, then it is necessary to calculate the internal state by applying a linear equation with the QP of the encoding or decoding process. In the case of a slope equal to zero, or that the QP of the current encoding process is equal to 26, the second part of the 8-bit initialization value can be used directly to initialize the internal state of the probabilistic model. Otherwise, the decimal part of the resulting internal state can be further used to determine the refinement index in high performance coding applications by linear interpolation between the limits of a particular PIPE encoder. In this preferred embodiment, linear interpolation is performed by simply multiplying the decimal part by the total number of refinement indices available for the current PIPE encoder and mapping the result to the nearest integer refinement index.

Процесс инициализации внутреннего состояния вероятностных моделей может изменяться относительно количества состояний индекса вероятности PIPE. В частности, двойное присутствие равновероятного режима, использующего кодер E1 PIPE, т.е. использование двух разных индексов PIPE для различения между MPS, равным 1 или 0, можно избежать следующим образом. Снова, процесс может вызываться во время начала синтаксического разбора данных слайса, и вводом данного процесса может быть 8-битовое значение инициализации, как показано в таблице E, которое, например, передается в битовом потоке для каждой контекстной модели, подлежащей инициализации.The internal state initialization process of probabilistic models can vary with respect to the number of PIPE probability index states. In particular, the double presence of the equiprobable mode using the E1 PIPE encoder, i.e. using two different PIPE indices to differentiate between an MPS of 1 or 0 can be avoided as follows. Again, a process may be called at the time parsing of the slice data begins, and the input to this process may be an 8-bit initialization value, as shown in Table E, which, for example, is passed in the bitstream for each context model to be initialized.

Таблица E: Установка 8 битов initValue для вероятностной моделиTable E: Setting 8 initValue bits for the probabilistic model

Первые 4 бита определяют индекс наклона и извлекаются посредством маскирования битов b4-b7. Для каждого индекса наклона slope(m) задается и отображается в таблице F.The first 4 bits define the slope index and are extracted by masking bits b4-b7. For each slope index, slope(m) is specified and displayed in table F.

Таблица F: Значения переменной m для slopeIdxTable F: Variable m values for slopeIdx

Биты b0-b3, последние 4 бита 8-битового значения инициализации, идентифицируют probIdx и описывают вероятность при заданном QP. probIdx 0 указывает наибольшую вероятность для символов со значением 0 и, соответственно, probIdx 14 указывает наибольшую вероятность для символов со значением 1. Таблица G изображает для каждого probIdx соответствующий pipeCoder и его valMps.Bits b0-b3, the last 4 bits of the 8-bit initialization value, identify probIdx and describe the probability given the QP. probIdx 0 indicates the highest probability for symbols with a value of 0 and, correspondingly, probIdx 14 indicates the highest probability for symbols with a value of 1. Table G depicts for each probIdx the corresponding pipeCoder and its valMps.

Таблица G: Отображение последней 4-битовой части значения инициализации на кодеры PIPE и valMps: UR - унарный-в-Райс-код, TB - трехбиновый код, BP - бин-pipe-код, EP - равновероятность (не кодируется)Table G: Mapping of the last 4-bit part of the initialization value to PIPE and valMps encoders: UR - unary-to-Rice code, TB - three-bin code, BP - bin-pipe code, EP - equiprobability (not encoded)

С обоими значениями вычисление внутреннего состояния может выполняться посредством использования линейного уравнения, подобного y=m*x+256*b, где m обозначает наклон, x обозначает QP текущего слайса, и b выводится из probIdx, как показано в последующем описании. Все значения в данном процессе масштабируются коэффициентом 256, чтобы избежать использование операций с плавающей запятой. Выходной результат (y) данного процесса представляет внутреннее состояние вероятностной модели при текущем QP и сохраняется в 8-битовой памяти. Как показано в G, внутреннее состояние состоит из valMPs, pipeIdx и refineIdx.With both values, calculation of the internal state can be performed by using a linear equation like y=m*x+256*b, where m denotes the slope, x denotes the QP of the current slice, and b is derived from probIdx, as shown in the following description. All values in this process are scaled by a factor of 256 to avoid the use of floating point operations. The output (y) of this process represents the internal state of the probabilistic model at the current QP and is stored in an 8-bit memory. As shown in G, the internal state consists of valMPs, pipeIdx and refineIdx.

Таблица H: Установка внутреннего состояния вероятностной моделиTable H: Setting the internal state of the probabilistic model

Назначение refineIdx и pipeIdx подобно внутреннему состоянию вероятностных моделей CABAC (pStateCtx) и представлено в H.The purpose of refineIdx and pipeIdx is similar to the internal state of probabilistic CABAC models (pStateCtx) and is presented in H.

Таблица I: Назначение pipeIdx, refineIdx и pStateCtxTable I: Purpose of pipeIdx, refineIdx and pStateCtx

В предпочтительном варианте осуществления probIdx определяется при QP26. Основываясь на 8-битовом значении инициализации, внутреннее состояние (valMps, pipeIdx и refineIdx) вероятностной модели обрабатывается так, как описано в следующем псевдокоде:In a preferred embodiment, probIdx is determined at QP26. Based on the 8-bit initialization value, the internal state (valMps, pipeIdx and refineIdx) of the probabilistic model is processed as described in the following pseudocode:

Как показано в псевдокоде, refineIdx вычисляется посредством линейной интерполяции между интервалом pipeIdx и квантованием результата в соответствующий refineIdx. Смещение задает общее количество refineIdx для каждого pipeIdx. Интервал [7, 8) fullCtxState/256 делится пополам. Интервал [7, 7,5) отображается на pipeIdx=0 и valMps=0, и интервал [7,5, 8) отображается на pipeIdx=0 и valMps=1. Фиг. 16 изображает процесс выведения внутреннего состояния и отображает отображение fullCtxState/256 на pStateCtx.As shown in the pseudocode, refineIdx is calculated by linear interpolation between the pipeIdx interval and quantizing the result into the corresponding refineIdx. The offset specifies the total number of refineIdx for each pipeIdx. The interval [7, 8) fullCtxState/256 is divided in half. The interval [7, 7,5) is mapped to pipeIdx=0 and valMps=0, and the interval [7,5, 8) is mapped to pipeIdx=0 and valMps=1. Fig. 16 depicts the internal state derivation process and shows the mapping of fullCtxState/256 to pStateCtx.

Отметьте, что наклон указывает зависимость probIdx и QP. Если slopeIdx 8-битового значения инициализации равно 7, результирующее внутреннее состояние вероятностной модели является одинаковым для всех QP слайса - следовательно процесс инициализации внутреннего состояния является независимым от текущего QP слайса.Note that the slope indicates the relationship between probIdx and QP. If slopeIdx of the 8-bit initialization value is 7, the resulting internal state of the probabilistic model is the same for all slice QPs - hence the internal state initialization process is independent of the current slice QP.

Т.е., селектор 402 может инициализировать индексы pipe, подлежащие использованию при декодировании следующей части потока данных, такой как полный поток или следующий слайс, используя синтаксический элемент, указывающий размер QP шага квантования, используемый для квантования данных этой части, таких как уровни коэффициентов преобразования, содержащиеся в нем, используя данный синтаксический элемент в качестве индекса в таблицу, которая может быть общей для обоих режимов, LC и HE. Таблица, такая как таблица D, может содержать индексы pipe для каждого типа символа, для соответствующего опорного значения QPref или других данных для каждого типа символа. В зависимости от фактического QP текущей части селектор может вычислять значение индекса pipe, используя соответствующий элемент a таблицы, индексированный фактическим QP или самим QP, например, умножением a на (QP-QPref). Единственное отличие в режиме LC и HE: Селектор вычисляет результат только при меньшей точности в случае LC по сравнению с режимом HE. Селектор, например, может просто использовать целочисленную часть результата вычисления. В режиме HE используется остаток более высокой точности, такой как дробная часть, для выбора одного из доступных индексов уточнения для соответствующего индекса pipe, как указывается частью с меньшей точностью или целочисленной частью. Индекс уточнения используется в режиме HE (потенциально менее редко также в режиме LC) для выполнения вероятностной адаптации, например, посредством использования вышеупомянутого обхода таблицы. Если оставлять доступные индексы для текущего индекса pipe на более верхней границе, тогда более высокий индекс pipe выбирается следующим с минимизированием индекса уточнения. Если оставлять доступные индексы для текущего индекса pipe при более низкой границе, тогда следующий более низкий индекс pipe выбирается следующим с максимизированием индекса уточнения до максимума, доступного для нового индекса pipe. Индекс pipe вместе с индексом уточнения определяют состояние вероятности, но для выбора из числа частичных потоков, селектор просто использует индекс pipe. Индекс уточнения служит просто для более точного отслеживания вероятности, или для более высокой точности.That is, selector 402 may initialize pipe indices to be used when decoding the next portion of the data stream, such as the full stream or the next slice, using a syntax element indicating the quantization step size QP used to quantize that portion's data, such as coefficient levels transforms the contents contained therein, using the given syntax element as an index, into a table that may be common to both modes, LC and HE. A table, such as table D, may contain pipe indexes for each character type, for the corresponding QPref reference value, or other data for each character type. Depending on the actual QP of the current part, the selector can calculate the value of the pipe index using the corresponding table element a indexed by the actual QP or the QP itself, for example by multiplying a by (QP-QPref). The only difference in LC and HE mode: The selector calculates the result only with less accuracy in the case of LC compared to HE mode. A selector, for example, could simply use the integer part of the calculation result. HE mode uses the higher precision remainder, such as the fractional part, to select one of the available refinement indices for the corresponding pipe index, as indicated by the lower precision or integer part. The refinement index is used in HE mode (potentially less rarely also in LC mode) to perform probabilistic adaptation, for example by using the table walk mentioned above. If we leave the available indexes for the current pipe index at a higher bound, then the higher pipe index is chosen next, minimizing the refinement index. If you leave available indexes for the current pipe index at a lower bound, then the next lower pipe index is chosen next, maximizing the refinement index to the maximum available for the new pipe index. The pipe index together with the refinement index determine the probability state, but to select from among partial streams, the selector simply uses the pipe index. The refinement index simply serves to track the probability more accurately, or to achieve higher precision.

Вышеупомянутое описание также показало, однако, что масштабируемость сложности может достигаться независимо от принципа кодирования PIPE по фиг. 7-10 или CABAC, используя декодер, показанный на фиг. 12. Декодер по фиг.12 предназначен для декодирования потока 601 данных, в который кодируются медиаданные, и содержит переключатель 600 режима, выполненный с возможностью активизирования режима низкой сложности или режима высокой эффективности в зависимости от потока 601 данных, а также десимволизатор 602, выполненный с возможностью десимволизирования последовательности 603 символов, полученных - или прямо или посредством энтропийного декодирования, например - из потока 601 данных для получения целочисленных синтаксических элементов 604, используя функцию отображения, управляемую параметром управления, для отображения области определения слов последовательности символов в область значений целочисленных синтаксических элементов. Восстановитель 605 выполнен с возможностью восстановления медиаданных 606, основываясь на целочисленных синтаксических элементах. Десимволизатор 602 выполнен с возможностью выполнения десимволизирования, так что параметр управления изменяется в соответствии с потоком данных с первой скоростью в случае активизированного режима высокой эффективности, и параметр управления является постоянным независимо от потока данных или изменяется в зависимости от потока данных, но со второй скоростью, которая меньше первой скорости, в случае активизированного режима низкой сложности, как показано стрелкой 607. Например, параметр управления может изменяться в соответствии с ранее десимволизированными символами.The above description also showed, however, that complexity scalability can be achieved regardless of the PIPE encoding principle of FIG. 7-10 or CABAC using the decoder shown in FIG. 12. The decoder of FIG. 12 is configured to decode a data stream 601 into which media data is encoded, and includes a mode switch 600 configured to activate a low complexity mode or a high efficiency mode depending on the data stream 601, and a desymbolizer 602 configured to the ability to desymbolize a sequence 603 of symbols obtained - either directly or through entropy decoding, for example - from a data stream 601 to obtain integer syntax elements 604, using a mapping function controlled by a control parameter to map the word definition domain of the symbol sequence to the value domain of the integer syntax elements. Restorer 605 is configured to recover media data 606 based on integer syntax elements. The desymbolizer 602 is configured to perform desymbolization such that the control parameter changes in accordance with the data flow at a first rate in the case of a high efficiency mode activated, and the control parameter is constant regardless of the data flow or varies depending on the data flow but at a second rate, which is less than the first speed, in the case of a low complexity mode activated, as indicated by arrow 607. For example, a control parameter may be changed in accordance with previously desymbolized symbols.

Некоторые из вышеупомянутых вариантов осуществления использовали аспект фиг. 12. Синтаксические элементы coeff_abs_minus3 и MVD в последовательности 327, например, бинаризировались в десимволизаторе 314 в зависимости от выбранного режима, как указано позицией 407, и восстановитель 605 использовал эти синтаксические элементы для восстановления. Очевидно, оба аспекта по фиг. 11 и 19 являются легко объединяемыми, но аспект фиг. 12 также может объединяться с другими средами кодирования.Some of the above embodiments used an aspect of FIG. 12. The coeff_abs_minus3 and MVD syntax elements in sequence 327, for example, were binarized in the desymbolizer 314 depending on the selected mode, as indicated by 407, and the restorer 605 used these syntax elements for reconstruction. Obviously, both aspects of FIG. 11 and 19 are easily combined, but the aspect of FIG. 12 can also be combined with other encoding environments.

См., например, отмеченное выше кодирование разностей векторов движения. Десимволизатор 602 может быть выполнен так, что функция отображения использует усеченный унарный код для выполнения отображения в первом интервале области определения целочисленных синтаксических элементов ниже значения отсечки и комбинацию префикса в виде усеченного унарного кода для значения отсечки и суффикса в виде кодового слова VLC во втором интервале области определения целочисленных синтаксических элементов, включая и выше значения отсечки, причем декодер может содержать энтропийный декодер 608, выполненный с возможностью выведения количества первых бинов усеченного унарного кода из потока 601 данных, используя энтропийное декодирование с оценкой изменяющейся вероятности, и количества вторых бинов кодового слова VLC, используя режим обхода с постоянной равновероятностью. В режиме HE энтропийное кодирование может быть более сложным, чем при кодировании LC, как показано стрелкой 609. Т.е. контекстная адаптивность и/или вероятностная адаптация могут применяться в режиме HE и подавляться в режиме LC, или сложность может масштабироваться в других показателях, как изложено выше в отношении различных вариантов осуществления.See, for example, the coding of motion vector differences noted above. The desymbolizer 602 may be configured such that the mapping function uses a truncated unary code to perform a mapping in the first definition region bin of integer syntax elements below the cutoff value and a combination of a truncated unary code prefix for the cutoff value and a VLC codeword suffix in the second region bin. determining integer syntax elements, including and above cutoff values, wherein the decoder may comprise an entropy decoder 608 configured to derive a number of first truncated unary code bins from data stream 601 using variable probability entropy decoding, and a number of second VLC codeword bins, using the bypass mode with constant equiprobability. In HE mode, entropy encoding can be more complex than in LC encoding, as indicated by arrow 609. i.e. contextual adaptivity and/or probabilistic adaptation may be applied in the HE mode and suppressed in the LC mode, or complexity may be scaled in other terms, as discussed above with respect to various embodiments.

Кодер, соответствующий декодеру по фиг. 11, для кодирования медиаданных в поток данных показан на фиг. 13. Он может содержать устройство 500 вставки, выполненное с возможностью сигнализации в потоке 501 данных активизирования режима низкой сложности или режима высокой эффективности, конструктор 504, выполненный с возможностью предкодирования медиаданных 505 в последовательность 506 синтаксических элементов, символизатор 507, выполненный с возможностью символизирования последовательности 506 синтаксических элементов в последовательность 508 символов, множество энтропийных кодеров 310, каждый из которых выполнен с возможностью преобразования частичных последовательностей символов в кодовые слова потока данных, и селектор 502, выполненный с возможностью направления каждого символа последовательности 508 символов на выбранный один из множества энтропийных кодеров 310, причем селектор 502 выполнен с возможностью выполнения выбора в зависимости от активизированного одного из режима низкой сложности и режима высокой эффективности, как показано стрелкой 511. Перемежитель 510 может необязательно обеспечиваться для перемежения кодовых слов кодеров 310.An encoder corresponding to the decoder of FIG. 11, for encoding media data into a data stream is shown in FIG. 13. It may include an inserter 500 configured to signal in the data stream 501 the activation of a low complexity mode or a high efficiency mode, a constructor 504 configured to pre-encode media data 505 into a sequence 506 of syntax elements, a symbolizer 507 configured to symbolize a sequence 506 syntax elements into a symbol sequence 508, a plurality of entropy encoders 310, each configured to convert partial symbol sequences into data stream codewords, and a selector 502 configured to route each character of the symbol sequence 508 to a selected one of the plurality of entropy encoders 310, wherein the selector 502 is configured to make a selection depending on whether one of the low complexity mode and the high efficiency mode is activated, as indicated by arrow 511. An interleaver 510 may optionally be provided to interleave codewords of the encoders 310.

Кодер, соответствующий декодеру по фиг. 12, для кодирования медиаданных в поток данных показан на фиг. 14, содержащий устройство 700 вставки, выполненное с возможностью сигнализации в потоке 701 данных активизирования режима низкой сложности или режима высокой эффективности, конструктор 704, выполненный с возможностью предкодирования медиаданных 705 в последовательность 706 синтаксических элементов, содержащую целочисленный синтаксический элемент, и символизатор 707, выполненный с возможностью символизирования целочисленного синтаксического элемента, используя функцию отображения, управляемую параметром управления, для отображения области определения целочисленных синтаксических элементов в область значений слов последовательности символов, причем символизатор 707 выполнен с возможностью выполнения символизирования, так что параметр управления изменяется в соответствии с потоком данных с первой скоростью в случае активизированного режима высокой эффективности, и параметр управления является постоянным независимо от потока данных или изменяется в зависимости от потока данных, но со второй скоростью, которая меньше первой скорости, в случае активизированного режима низкой сложности, как показано стрелкой 708. Результат символизирования кодируется в поток 701 данных.An encoder corresponding to the decoder of FIG. 12, for encoding media data into a data stream is shown in FIG. 14, comprising an inserter 700 configured to signal in the data stream 701 the activation of a low complexity mode or a high efficiency mode, a constructor 704 configured to pre-encode media data 705 into a syntax element sequence 706 containing an integer syntax element, and a symbolizer 707 configured to the ability to symbolize an integer syntax element using a mapping function controlled by a control parameter to map a definition domain of the integer syntax elements to a word value domain of a sequence of symbols, wherein the symbolizer 707 is configured to perform symbolization such that the control parameter changes in accordance with a data stream at a first rate in the case of the high efficiency mode activated, and the control parameter is constant regardless of the data flow, or varies depending on the data flow, but at a second rate that is less than the first speed, in the case of the low complexity mode activated, as indicated by arrow 708. The result of the symbolization is encoded in data stream 701.

Снова, необходимо упомянуть, что вариант осуществления по фиг. 14 легко переносится на вышеупомянутый вариант осуществления контекстно-адаптивного двоичного арифметического кодирования/декодирования: селектор 509 и энтропийные кодеры 310 сводятся вместе в контекстно-адаптивный двоичный арифметический кодер, который будет выводить поток 401 данных непосредственно и выбирать контекст для бина, подлежащего выведению в настоящий момент из потока данных. Это особенно верно для контекстной адаптивности и/или вероятностной адаптивности. Обе функциональные возможности/адаптивности могут отключаться, или могут быть разработаны более ослабленными, во время режима низкой сложности.Again, it should be mentioned that the embodiment of FIG. 14 easily transfers to the above context-adaptive binary arithmetic encoding/decoding embodiment: selector 509 and entropy encoders 310 are put together into a context-adaptive binary arithmetic encoder that will output data stream 401 directly and select the context for the bin currently being output. from the data stream. This is especially true for contextual adaptivity and/or probabilistic adaptivity. Both functionality/adaptivity may be disabled, or may be designed to be weakened, during low difficulty mode.

Выше было кратко отмечено, что возможность переключения режима, описанная в отношении некоторых вышеупомянутых вариантов осуществления, согласно альтернативным вариантам осуществления, может быть исключена. Чтобы сделать это ясным, ссылка делается на фиг. 16, которая суммирует вышеупомянутое описание в той мере, в какой только исключение возможности переключения режима отличает вариант осуществления по фиг. 16 от вышеупомянутых вариантов осуществления. Кроме того, последующее описание показывает преимущества, являющиеся результатом инициализации оценок вероятности контекстов, используя менее точные параметры для наклона и смещения по сравнению, например, с H.264.It was briefly noted above that the mode switching capability described with respect to some of the above-mentioned embodiments may, according to alternative embodiments, be omitted. To make this clear, reference is made to FIG. 16, which summarizes the above description to the extent that only the elimination of the possibility of mode switching distinguishes the embodiment of FIG. 16 from the above embodiments. In addition, the following description shows the benefits resulting from initializing context probability estimates using less precise parameters for slope and offset compared to, for example, H.264.

В частности, фиг. 16 изображает декодер для декодирования видео 405 из потока 401 данных, для которого кодируются горизонтальные и вертикальные составляющие разностей векторов движения, используя бинаризации горизонтальных и вертикальных составляющих, причем бинаризации равны усеченному унарному коду горизонтальных и вертикальных составляющих соответственно в первом интервале области определения горизонтальных и вертикальных составляющих ниже значения отсечки, и комбинации префикса в виде усеченного унарного кода. Значение отсечки и суффикс в виде экспоненциального кода Голомба горизонтальных и вертикальных составляющих соответственно во втором интервале области определения горизонтальных и вертикальных составляющих включительно и выше значения отсечки, причем значение отсечки равно 2, и экспоненциальный код Голомба имеет порядок 1. Декодер содержит энтропийный декодер 409, выполненный, для горизонтальных и вертикальных составляющих разностей векторов движения, с возможностью выведения усеченного унарного кода из потока данных, используя контекстно-адаптивное двоичное энтропийное декодирование с точно одним контекстом на каждую позицию бина усеченного унарного кода, который является общим для горизонтальных и вертикальных составляющих разностей векторов движения, и экспоненциального кода Голомба, используя режим обхода с постоянной равновероятностью для получения бинаризаций разностей векторов движения. Более точно, как описано выше, энтропийный декодер 409 может быть выполнен с возможностью выведения количества бинов 326 бинаризаций из потока 401 данных, используя бинарное энтропийное декодирование, такое как вышеупомянутая схема CABAC, или бинарное декодирование PIPE, т.е. использование конструкции, включающей в себя несколько параллельно работающих энтропийных декодеров 322 вместе с соответствующим селектором/средством назначения. Десимволизатор 314 дебинаризирует бинаризации синтаксических элементов разностей векторов движения для получения целочисленных значений горизонтальных и вертикальных составляющих разностей векторов движения, и восстановитель 404 восстанавливает видео, основываясь на целочисленных значениях горизонтальных и вертикальных составляющих разностей векторов движения.In particular, FIG. 16 depicts a decoder for decoding video 405 from data stream 401 for which horizontal and vertical components of motion vector differences are encoded using binarizations of the horizontal and vertical components, the binarizations being equal to a truncated unary code of the horizontal and vertical components, respectively, in the first interval of the horizontal and vertical component definition region below the cutoff value, and the prefix combination in the form of a truncated unary code. The cutoff value and suffix in the form of an exponential Golomb code of the horizontal and vertical components, respectively, in the second interval of the definition domain of the horizontal and vertical components, inclusive and above the cutoff value, wherein the cutoff value is 2, and the exponential Golomb code is of order 1. The decoder includes an entropy decoder 409 configured , for the horizontal and vertical components of the motion vector differences, with the ability to derive a truncated unary code from the data stream using context-adaptive binary entropy decoding with exactly one context per bin position of the truncated unary code, which is common to the horizontal and vertical components of the motion vector differences , and the exponential Golomb code, using the constant equiprobability traversal mode to obtain binarizations of the motion vector differences. More specifically, as described above, entropy decoder 409 may be configured to derive the number of bins 326 of binarizations from data stream 401 using binary entropy decoding, such as the aforementioned CABAC scheme, or binary PIPE decoding, i.e. using a design that includes multiple entropy decoders 322 running in parallel along with a corresponding selector/assigner. The desymbolizer 314 debinarizes the binarizations of the motion vector difference syntax elements to produce integer values of the horizontal and vertical components of the motion vector differences, and the reconstructor 404 reconstructs the video based on the integer values of the horizontal and vertical components of the motion vector differences.

Чтобы объяснить это более подробно, ссылка кратко делается на фиг. 18. Позиция 800 представительно изображает одну разность вектора движения, т.е. вектор, представляющий остаток предсказания между предсказанным вектором движения и фактическим/восстановленным вектором движения. Также показаны горизонтальные и вертикальные составляющие 802x и 802y. Они могут передаваться в единицах позиций пикселя, т.е. шага пикселя, или позиций субпикселя, таких как половина шага пикселя или его четвертая часть или т.п. Горизонтальные и вертикальные составляющие 802x,y являются целочисленными. Их область простирается от нуля до бесконечности. Значение знака может обрабатываться отдельно и здесь больше не рассматривается. Другими словами, описание, кратко изложенное в данном документе, сосредоточено на величине разностей 802x,y вектора движения. Область определения изображена позицией 804. На правой стороне оси 804 области определения фиг. 19 изображает, ассоциированные с положительными значениями составляющей 802x,y, вертикально расположенными друг на друге, бинаризации, в которую отображается (бинаризируется) соответствующее возможное значение. Как можно видеть, ниже значения отсечки, равное 2, имеет место только усеченный унарный код 806, тогда как бинаризация имеют, в качестве суффикса, также экспоненциальный код Голомба порядка 808 из возможных значений, равных или больше значения отсечки 2, чтобы продолжать бинаризацию для остатка целочисленного значения выше значения отсечки минус 1. Для всех бинов обеспечивается только два контекста: один для позиции первого бина бинаризаций горизонтальных и вертикальных составляющих 802x,y, и другой один для позиции второго бина усеченного унарного кода 806 как горизонтальной, так и вертикальной составляющих 802x,y. Для позиции бина экспоненциального кода 808 Голомба режим обхода с равновероятностью используется энтропийным декодером 409. Т.е. оба значения бина, как предполагается, происходят равновероятно. Оценка вероятности для этих бинов является фиксированной. В сравнении с ней, оценка вероятности, ассоциированная с только что упомянутыми двумя контекстами бинов усеченного унарного кода 806, адаптируется непрерывно при декодировании.To explain this in more detail, reference is briefly made to FIG. 18. Position 800 represents one motion vector difference, i.e. a vector representing the prediction remainder between the predicted motion vector and the actual/recovered motion vector. The horizontal and vertical components of 802x and 802y are also shown. They can be transmitted in units of pixel positions, i.e. pixel pitch, or sub-pixel positions such as half a pixel pitch or a quarter pixel pitch or the like. The horizontal and vertical components of 802 x,y are integers. Their area extends from zero to infinity. The meaning of the sign can be processed separately and is not discussed further here. In other words, the description summarized herein focuses on the magnitude of the motion vector differences 802x,y. The definition area is depicted at 804. On the right side of the definition area axis 804 of FIG. 19 depicts, associated with positive component values 802x,y vertically stacked on top of each other, the binarization into which the corresponding possible value is mapped (binarized). As can be seen, below the cutoff value of 2, only the truncated unary code 806 occurs, while the binarizations have, as a suffix, also an exponential Golomb code of order 808 from possible values equal to or greater than the cutoff value 2, in order to continue binarization for the remainder integer value above the cutoff value minus 1. For all bins, only two contexts are provided: one for the position of the first bin of the horizontal and vertical component binarizations 802x,y, and one for the position of the second bin of the truncated unary code 806 of both the horizontal and vertical components 802x, y. For the bin position of the exponential Golomb code 808, the equiprobability bypass mode is used by the entropy decoder 409. That is, both bin values are assumed to occur equally likely. The probability estimate for these bins is fixed. In comparison, the probability estimate associated with the just mentioned two bin contexts of the truncated unary code 806 is adapted continuously during decoding.

Перед описанием более подробно, в отношении того, как может быть реализован энтропийный декодер 409, в соответствии с вышеупомянутым описанием, чтобы выполнять только что упомянутые задачи, описание теперь сосредотачивается на возможной реализации восстановителя 404, который использует разности 800 вектора движения и его целочисленные значения, полученные десимволизатором 314 посредством ребинаризации бинов кодов 106 и 108, причем ребинаризация изображается на фиг. 18, используя стрелки 810. В частности, восстановитель 404, как описано выше, может извлекать из потока 401 данных информацию, касающуюся подразделения восстановленного в настоящий момент изображения в блоки, среди которых по меньшей мере некоторые подвергаются предсказанию с компенсацией движения. Фиг. 19 изображает изображение, подлежащий восстановлению, представительно в позиции 820 и блоки только что упомянутого подразделения изображения 120, для которого предсказание с компенсацией движения используется для предсказания в нем содержимого изображения в позиции 822. Как описано в отношение фиг. 2A-2C, имеются разные возможности для подразделения и размеров блоков 122. Чтобы избежать передачи разности 800 вектора движения для каждого из этих блоков 122, восстановитель 404 может использовать принцип слияния, согласно которому поток данных дополнительно передает информацию о слиянии в дополнение к информации о подразделении или, при отсутствии информации о подразделении, в дополнение к тому факту, что подразделение является фиксированным. Информация слияния сигнализирует восстановителю 404, в отношении какого из блоков 822 сформировать группы слияния. Посредством этой меры, является возможным для восстановителя 404 применить некоторую разность 800 вектора движения ко всей группе слияния блоков 822. Конечно, на кодирующей стороне передача информации о слиянии подвержена компромиссу между издержками передачи подразделения (если присутствует), издержками передачи информации о слиянии и издержками передачи разности векторов движения, которые уменьшаются с увеличением размера групп слияния. С другой стороны, увеличение количества блоков на группу слияния уменьшает адаптацию разности векторов движения для этой группы слияния к фактическим потребностям индивидуальных блоков соответствующей группы слияния, тем самым получая менее точные предсказания с компенсацией движения разностей векторов движения этих блоков и делая необходимым более высокие издержки передачи для передачи остатка предсказания в виде, например, уровня коэффициентов преобразования. Следовательно, находится компромисс на кодирующей стороне соответствующим образом. В любом случае, однако, принцип слияния приводит к разностям вектора движения для групп слияния, изображая меньшую пространственную взаимную корреляцию. См., например, фиг. 19, которая изображает штриховкой членство в некоторой группе слияния. Очевидно, что фактическое движение содержимого изображения в этих блоках было настолько подобным, что кодирующая сторона решила выполнить слияние соответствующих блоков. Однако является малой корреляция с движением содержимого изображения в других группах слияния. Следовательно, ограничение на использование просто одного контекста на бин усеченного унарного кода 806 не оказывает отрицательного влияния на эффективность энтропийного кодирования, так как принцип слияния уже в достаточной степени обеспечивает пространственную взаимную корреляцию между движением содержимого соседних изображений. Контекст может просто выбираться на основе того факта, что бин является частью бинаризации составляющей 802x,y разности векторов движения и позиции бина, которой является или 1 или 2 вследствие того, что значением отсечки является два. Следовательно, другие уже декодированные бины/синтаксические элементы/составляющие 802x,y mvd не оказывают влияние на выбор контекста.Before describing in more detail how the entropy decoder 409 may be implemented in accordance with the above description to perform the tasks just mentioned, the description now focuses on a possible implementation of a restorer 404 that uses motion vector differences 800 and its integer values. obtained by desymbolizer 314 by rebinarizing code bins 106 and 108, the rebinarization being depicted in FIG. 18 using arrows 810. In particular, reconstructor 404, as described above, can extract from data stream 401 information regarding the division of the currently reconstructed image into blocks, at least some of which are subject to motion-compensated prediction. Fig. 19 depicts an image to be restored representatively at 820 and blocks of the just-mentioned subdivision of the image 120 for which motion compensated prediction is used to predict image content therein at 822. As described in relation to FIG. 2A-2C, there are different possibilities for subdivision and size of blocks 122. To avoid transmitting a motion vector difference 800 for each of these blocks 122, restorer 404 may use a merging principle whereby the data stream additionally conveys merging information in addition to subdivision information. or, in the absence of information about the division, in addition to the fact that the division is fixed. The merge information signals restorer 404 regarding which of the blocks 822 to form merge groups. By this measure, it is possible for restorer 404 to apply some motion vector difference 800 to the entire merge group of blocks 822. Of course, on the encoding side, transmission of merge information is subject to a trade-off between subdivision transmission overhead (if present), merge information transmission overhead, and transmission overhead. differences in motion vectors that decrease as the size of the merge groups increases. On the other hand, increasing the number of blocks per merge group reduces the adaptation of the motion vector differences for that merge group to the actual needs of the individual blocks of the corresponding merge group, thereby obtaining less accurate motion-compensated predictions of the motion vector differences of these blocks and necessitating higher transmission overhead for transmitting the prediction remainder in the form, for example, of the level of transformation coefficients. Therefore, a compromise is made on the encoding side accordingly. In either case, however, the merging principle results in motion vector differences for merging groups, depicting less spatial cross-correlation. See, for example, FIG. 19, which represents membership in a certain merge group by shading. Apparently, the actual movement of the image content in these blocks was so similar that the encoding party decided to merge the corresponding blocks. However, there is little correlation with the movement of image content in other merge groups. Therefore, the limitation of using just one context per bin of truncated unary code 806 does not negatively impact the efficiency of entropy encoding since the fusion principle already sufficiently ensures spatial cross-correlation between the content motion of adjacent images. The context may simply be selected based on the fact that the bin is part of a binarization of the 802 x,y component of the motion vector difference and the bin's position, which is either 1 or 2 due to the cutoff value being two. Therefore, other already decoded x,y mvd bins/syntactic elements/components 802 do not influence the context selection.

Аналогично, восстановитель 404 может быть выполнен с возможностью дополнительного уменьшения информационного содержимого, подлежащего пересылке, посредством разностей векторов движения (кроме пространственного и/или временного предсказания векторов движения) посредством использования принципа многогипотезного предсказания, согласно которому, сначала, генерируется список предикторов вектора движения для каждого блока или группы слияния, затем явной или неявной передачи в потоке данных информации об индексе предиктора, подлежащего фактическому использованию для предсказания разностей векторов движения. См., например, незаштрихованный блок 122 на фиг. 20. Восстановитель 404 может обеспечивать разные предикторы для вектора движения данного блока, например, посредством предсказания вектора движения пространственно, например, из левого, из верхнего, комбинации обоих и т.п., и временного предсказания вектора движения из вектора движения совместно размещенной части ранее декодированного изображения видео и дополнительных комбинаций вышеупомянутых предикторов. Эти предикторы сортируются восстановителем 404 предсказуемым образом, который является прогнозируемым на кодирующей стороне. Некоторая информация передается с этой целью в потоке данных и используется восстановителем. Т.е. некоторая рекомендация содержится в потоке данных, в отношении того, какой предиктор из данного упорядоченного списка предикторов будет фактически использоваться в качестве предиктора для вектора движения данного блока. Этот индекс может явно передаваться в потоке данных для этого блока. Однако также является возможным, что индекс сначала предсказывается и затем передается только его предсказание. Также существуют другие возможности. В любом случае, только что упомянутая схема предсказания позволяет получить очень точное предсказание вектора движения текущего блока и, следовательно, уменьшается требование к информационному содержимому, накладываемое на разность вектора движения. Следовательно, ограничение контекстно-адаптивного энтропийного кодирования на только два бина усеченного унарного кода и уменьшение значения отсечки до 2, как описано в отношении фиг. 18, а также выбор порядка экспоненциального кода Голомба равным 1, не оказывает отрицательного эффекта на эффективность кодирования, так как разности векторов движения показывают, вследствие высокой эффективности предсказания, частотную гистограмму, согласно которой более высокие значения составляющих 802x,y разности векторов движения посещаются менее часто. Даже пропуск любого отличия между горизонтальной и вертикальной составляющими подходит для эффективного предсказания, так как являются высокими тенденции предсказания работы с одинаковым успехом по обеим направлениям точности предсказания.Likewise, restorer 404 may be configured to further reduce the information content to be forwarded by motion vector differences (other than spatial and/or temporal motion vector prediction) by using a multi-hypothesis prediction principle whereby, first, a list of motion vector predictors is generated for each block or merge group, then explicitly or implicitly transmitting in the data stream the predictor index information to be actually used for predicting the motion vector differences. See, for example, the open block 122 in FIG. 20. Restorer 404 may provide different predictors for the motion vector of a given block, for example, by predicting the motion vector spatially, such as from the left, from the top, a combination of both, etc., and temporally predicting the motion vector from the motion vector of a previously co-located part. decoded video image and additional combinations of the above predictors. These predictors are sorted by restorer 404 in a predictable manner that is predictable on the encoding side. Some information is transmitted for this purpose in the data stream and is used by the restorer. Those. some recommendation is contained in the data stream as to which predictor from a given ordered list of predictors will actually be used as a predictor for a given block's motion vector. This index may be explicitly passed in the data stream for this block. However, it is also possible that the index is first predicted and then only its prediction is transmitted. There are also other possibilities. In any case, the just mentioned prediction circuit allows a very accurate prediction of the motion vector of the current block to be obtained, and hence the information content requirement imposed on the motion vector difference is reduced. Therefore, limiting the context-adaptive entropy encoding to only two truncated unary code bins and reducing the cutoff value to 2, as described in relation to FIG. 18, as well as choosing an exponential Golomb code order of 1, does not have a negative effect on coding efficiency, since the motion vector differences show, due to high prediction efficiency, a frequency histogram whereby higher values of the 802x,y components of the motion vector difference are visited less frequently . Even omitting any difference between the horizontal and vertical components is suitable for effective prediction, since there is a high tendency for prediction to perform equally well in both directions of prediction accuracy.

Необходимо отметить, что в вышеупомянутом описании все подробности, обеспечиваемые с фиг. 1-15, также являются переносимыми на объекты, показанные на фиг. 16, такие как, например, которые касаются функциональности десимволизатора 314, восстановителя 404 и энтропийного декодера 409. Тем не менее, для полноты, некоторые из этих подробностей снова кратко описываются ниже.It should be noted that in the above description, all the details provided with FIGS. 1-15 are also transferable to the objects shown in FIG. 16, such as, for example, which relate to the functionality of desymbolizer 314, restorer 404, and entropy decoder 409. However, for the sake of completeness, some of these details are again briefly described below.

Для лучшего понимания только что кратко изложенной схемы предсказания, см. фиг. 20. Как только что описано, конструктор 404 может получать разные предикторы для текущего блока 822 или текущей группы слияния блоков, причем эти предикторы показаны векторами 824 со сплошными линиями. Предикторы могут быть получены посредством пространственного и/или временного предсказания, причем, кроме того, могут использоваться операции арифметического среднего или т.п., так что индивидуальные предикторы могут быть получены восстановителем 404 таким образом, что они коррелируют друг с другом. Независимо от способа, которым были получены векторы 826, восстановитель 404 представляет последовательно или сортирует эти предикторы 126 в упорядоченный список. Это изображается числами 1-4 на фиг. 21. Предпочтительно, если процесс сортировки является уникально определяемым, так что кодер и декодер могут работать синхронно. Тогда только что упомянутый индекс может быть получен восстановителем 404 для текущего блока, или группы слияния, из потока данных, явно или неявно. Например, второй предиктор «2» может быть выбран, и восстановитель 404 добавляет разность 800 вектора движения к этому выбранному предсказателю 126, таким образом получая окончательно восстановленный вектор 128 движения, который затем используется для предсказания, посредством предсказания с компенсацией движения, содержимого текущего блока/группы слияния. В случае группы слияния будет возможным, что восстановитель 404 содержит дополнительные разности векторов движения, обеспечиваемые для блоков группы слияния, чтобы дополнительно уточнять вектор 128 движения в отношении индивидуальных блоков группы слияния.For a better understanding of the prediction scheme just briefly outlined, see FIG. 20. As just described, constructor 404 may obtain different predictors for the current block 822 or the current block merge group, with these predictors shown as solid line vectors 824. The predictors can be obtained by spatial and/or temporal prediction, and in addition, arithmetic average operations or the like can be used, so that individual predictors can be obtained by the restorer 404 such that they are correlated with each other. Regardless of the manner in which the vectors 826 were obtained, the restorer 404 presents sequentially or sorts these predictors 126 into an ordered list. This is represented by numbers 1-4 in Fig. 21. It is preferable if the sorting process is uniquely defined so that the encoder and decoder can operate synchronously. Then the index just mentioned can be obtained by the restorer 404 for the current block, or merge group, from the data stream, either explicitly or implicitly. For example, a second predictor "2" may be selected and reconstructor 404 adds motion vector difference 800 to this selected predictor 126, thereby obtaining a final reconstructed motion vector 128, which is then used to predict, through motion compensated prediction, the contents of the current block. merger groups. In the case of a merge group, it would be possible for restorer 404 to include additional motion vector differences provided for blocks of the merge group to further refine the motion vector 128 with respect to individual blocks of the merge group.

Таким образом, продолжая далее с описанием реализаций объектов, показанных на фиг. 16, может быть, что энтропийный декодер 409 выполняется с возможностью выведения усеченного унарного кода 806 из потока 401 данных, используя бинарное арифметическое декодирование или бинарное кодирование PIPE. Оба принципа были описаны выше. Кроме того, энтропийный декодер 409 может быть выполнен с возможностью использования разных контекстов для двух позиций бина усеченного унарного кода 806 или, альтернативно, даже одного и того же контекста для обоих бинов. Энтропийный декодер 409 может быть выполнен с возможностью выполнения обновления состояния вероятности. Энтропийный декодер 409 может это делать, для бина, выведенного на данный момент из усеченного унарного кода 806, посредством перехода из текущего состояния вероятности, ассоциированного с контекстом, выбранным для выведенного в данный момент бина, в новое состояние вероятности в зависимости от бина, выведенного в данный момент. См. вышеприведенные таблицы Next_State_LPS и Next_State_MPS, табличный поиск в отношении которого выполняется энтропийным декодером в дополнение к другим этапам 0-5, перечисленным выше. В вышеприведенном описании текущее состояние вероятности было упомянуто посредством pState_current. Оно определяется для соответствующего контекста, представляющего интерес. Энтропийный декодер 409 может быть выполнен с возможностью двоичного арифметического декодирования бина, подлежащего в данный момент выведению из усеченного унарного кода 806 посредством квантования значения ширины текущего интервала вероятностей, т.е. R, представляющего текущий интервал вероятностей для получения индекса интервала вероятностей, q_index, и выполнения подразделения интервала посредством индексирования элемента таблицы среди элементов таблицы, используя индекс интервала вероятностей и индекс состояния вероятности, т.е. p_state, который, в свою очередь, зависит от текущего состояния вероятности, ассоциированного с контекстом, выбранным для бина, подвергаемого выведению в данный момент, для получения подразделения текущего интервала вероятностей на два частичных интервала. В вышеупомянутых кратко описанных вариантах осуществления эти частичные интервалы ассоциировались с наиболее вероятным и наименее вероятным символом. Как описано выше, энтропийный декодер 409 может быть выполнен с возможностью использования восьмибитового представления для значения R ширины текущего интервала вероятностей с захватыванием, например, двух или трех самых старших битов восьмибитового представления и квантованием значения ширины текущего интервала вероятностей. Энтропийный декодер 409 дополнительно может быть выполнен с возможностью выбора из числа двух частичных интервалов, основываясь на значении состояния смещения из внутренней части текущего интервала вероятностей, а именно V, обновления значения R ширины интервала вероятностей и значения состояния смещения и предположения значения бина, подлежащего выводу в данный момент, используя выбранный частичный интервал, и выполнения ренормализации обновленного значения R ширины интервала вероятностей и значения V состояния смещения, включая продолжение считывания битов из потока 401 данных. Энтропийный декодер 409, например, может быть выполнен с возможностью двоичного арифметического декодирования бина из экспоненциального кода Голомба посредством деления пополам значения ширины текущего интервала вероятностей для получения подразделения текущего интервала вероятностей на два частичных интервала. Деление пополам соответствует оценке вероятности, которая является фиксированной и равной 0,5. Оно может быть реализовано простым сдвигом битов. Энтропийный декодер дополнительно может быть выполнен, для каждой разности вектора движения, с возможностью выведения усеченного унарного кода горизонтальной и вертикальной составляющих соответствующей разности векторов движения из потока 401 данных, перед экспоненциальным кодом Голомба горизонтальной и вертикальной составляющих соответствующей разности векторов движения. Посредством этой меры энтропийный декодер 409 может использовать, что большее количество бинов вместе формируют серию бинов, для которых оценка вероятности является фиксированной, а именно 0,5. Это может ускорить процедуру энтропийного декодирования. С другой стороны, энтропийный декодер 409 может предпочитать поддерживать порядок среди разностей векторов движения посредством сначала выведением горизонтальной и вертикальной составляющих одной разности вектора движения, переходя затем просто к выведению горизонтальной и вертикальной составляющих следующей разности вектора векторов движения. Посредством этой меры, снижаются требования к памяти, налагаемые на декодирующий объект, т.е. декодер по фиг. 16, так как десимволизатор 314 может продолжать дебинаризацию разностей векторов движения непосредственно без необходимости ожидания сканирования других разностей векторов движения. Это делается возможным посредством выбора контекста: так как только точно один контекст является доступным на каждую позицию бина кода 806, не нужно инспектировать пространственную взаимосвязь.Thus, continuing further with the description of implementations of the objects shown in FIG. 16, it may be that entropy decoder 409 is configured to derive truncated unary code 806 from data stream 401 using binary arithmetic decoding or binary PIPE encoding. Both principles have been described above. Additionally, entropy decoder 409 may be configured to use different contexts for two bin positions of truncated unary code 806 or, alternatively, even the same context for both bins. Entropy decoder 409 may be configured to perform probability state updating. Entropy decoder 409 may do this, for the bin currently output from truncated unary code 806, by transitioning from the current probability state associated with the context selected for the currently output bin to a new probability state depending on the bin output in this moment. See the Next_State_LPS and Next_State_MPS tables above, a table lookup on which is performed by the entropy decoder in addition to the other steps 0-5 listed above. In the above description, the current probability state was referred to by pState_current. It is defined for the relevant context of interest. The entropy decoder 409 may be configured to binary arithmetic decode the bin currently being derived from the truncated unary code 806 by quantizing the width value of the current probability interval, i.e. R representing the current probability interval to obtain the probability interval index, q_index, and perform interval subdivision by indexing the table element among the table elements using the probability interval index and the probability state index, i.e. p_state, which in turn depends on the current probability state associated with the context selected for the bin currently being inferred, to produce a division of the current probability interval into two partial intervals. In the above briefly described embodiments, these partial intervals were associated with the most likely and least likely symbol. As described above, entropy decoder 409 may be configured to use an eight-bit representation for the current probability interval width value R, capturing, for example, the most significant two or three bits of the eight-bit representation and quantizing the current probability interval width value. The entropy decoder 409 may further be configured to select from among two partial bins based on the offset state value from the interior of the current probability bin, namely V, update the probability bin width value R and the offset state value, and guess the value of the bin to be output to now using the selected partial interval, and performing a renormalization of the updated probability interval width value R and the offset state value V, including continuing to read bits from data stream 401. Entropy decoder 409, for example, may be configured to binary arithmetic decode a bin from an exponential Golomb code by halving the width value of the current probability interval to obtain a subdivision of the current probability interval into two partial intervals. Dividing in half corresponds to a probability estimate, which is fixed at 0.5. It can be implemented by simply shifting bits. The entropy decoder may further be configured, for each motion vector difference, to output a truncated unary code of the horizontal and vertical components of the corresponding motion vector difference from data stream 401, before an exponential Golomb code of the horizontal and vertical components of the corresponding motion vector difference. By means of this measure, entropy decoder 409 can exploit that more bins together form a series of bins for which the probability estimate is fixed, namely 0.5. This can speed up the entropy decoding procedure. On the other hand, entropy decoder 409 may choose to maintain order among the motion vector differences by first deriving the horizontal and vertical components of one motion vector difference, then simply moving on to deriving the horizontal and vertical components of the next motion vector difference. By this measure, the memory requirements imposed on the decoding object are reduced, i.e. decoder according to FIG. 16, since the desymbolizer 314 can continue to debinarize the motion vector differences directly without having to wait for other motion vector differences to be scanned. This is made possible by context selection: since only exactly one context is available per 806 code bin position, there is no need to inspect the spatial relationship.

Восстановитель 404, как описано выше, может пространственно и/или временно предсказывать горизонтальные и вертикальные составляющие векторов движения, чтобы получать предикторы 126 для горизонтальной и вертикальной составляющих вектора движения и восстанавливать горизонтальные и вертикальные составляющие векторов движения посредством уточнения предикторов 826, используя горизонтальные и вертикальные составляющие разностей векторов движения, например, просто добавлением разности векторов движения к соответствующему предсказателю.Restorer 404, as described above, can spatially and/or temporally predict horizontal and vertical components of motion vectors to obtain predictors 126 for horizontal and vertical components of motion vectors and recover horizontal and vertical components of motion vectors by refining predictors 826 using the horizontal and vertical components motion vector differences, for example, by simply adding the motion vector difference to the corresponding predictor.

Кроме того, восстановитель 404 может быть выполнен с возможностью предсказания горизонтальных и вертикальных составляющих векторов движения разным образом, чтобы получать упорядоченный список предикторов для горизонтальной и вертикальной составляющей векторов движения, получать индекс списка из потока данных и восстанавливать горизонтальные и вертикальные составляющие векторов движения посредством уточнения предиктора, тем предиктором списка, на который указывает индекс списка, используя горизонтальные и вертикальные составляющие разностей векторов движения.In addition, reconstructor 404 may be configured to predict the horizontal and vertical components of motion vectors in different ways to obtain an ordered list of predictors for the horizontal and vertical components of motion vectors, obtain a list index from the data stream, and recover the horizontal and vertical components of motion vectors by refining the predictor , the list predictor pointed to by the list index, using the horizontal and vertical components of the motion vector differences.

Кроме того, как уже было описано выше, восстановитель 404 может быть выполнен с возможностью восстановления видео, используя предсказание с компенсацией движения посредством применения горизонтальных и вертикальных составляющих 802x,y векторов движения при пространственной степени разбиения, определяемой подразделением изображений видео в блоки, причем восстановитель 404 может использовать синтаксические элементы слияния, присутствующие в потоке 401 данных, чтобы группировать блоки в группы слияния и применять целочисленные значения горизонтальных и вертикальных составляющих 802x,y разностей векторов движения, полученных бинаризатором 314 в единицах групп слияния.In addition, as described above, reconstructor 404 may be configured to reconstruct video using motion-compensated prediction by applying horizontal and vertical motion vector components 802x,y at a spatial degree of partitioning determined by dividing video images into blocks, where reconstructor 404 may use merge syntax elements present in data stream 401 to group blocks into merge groups and apply the integer values of the horizontal and vertical components 802x,y of the motion vector differences obtained by binarizer 314 in units of merge groups.

Восстановитель 404 может выводить подразделение изображений видео в блоки из части потока 401 данных, который исключает синтаксические элементы слияния. Восстановитель 404 также может адаптировать горизонтальную и вертикальную составляющие предопределенного вектора движения для всех блоков ассоциированной группы слияния, или уточнять их посредством горизонтальных и вертикальных составляющих разностей векторов движения, ассоциированных с блоками группы слияния.Reconstructor 404 may output a subdivision of video images into blocks from a portion of data stream 401 that excludes merge syntax elements. The restorer 404 may also adapt the horizontal and vertical components of the predetermined motion vector for all blocks of the associated merge group, or refine them by the horizontal and vertical components of the motion vector differences associated with the blocks of the merge group.

Только для полноты, фиг. 17 изображает кодер, соответствующий декодеру по фиг. 16. Кодер по фиг. 17 содержит конструктор 504, символизатор 507 и энтропийный кодер 513. Кодер содержит конструктор 504, выполненный с возможностью кодирования с предсказанием видео 505 посредством предсказания с компенсацией движения, используя векторы движения, и кодирования с предсказанием векторов движения посредством предсказания векторов движения и установки целочисленных значений 506 горизонтальных и вертикальных составляющих разностей векторов движения для представления ошибки предсказания предсказываемых векторов движения; символизатор 507, выполненный с возможностью бинаризации целочисленных значений для получения бинаризаций 508 горизонтальных и вертикальных составляющих разностей векторов движения, причем бинаризации равны усеченному унарному коду горизонтальных и вертикальных составляющих соответственно в первом интервале области определения горизонтальных и вертикальных составляющих ниже значения отсечки и комбинации префикса в виде усеченного унарного кода для значения отсечки и суффикса в виде экспоненциального кода Голомба горизонтальных и вертикальных составляющих соответственно во втором интервале области определения горизонтальных и вертикальных составляющих включительно и выше значения отсечки, причем значение отсечки равно двум, и экспоненциальный код Голомба имеет порядок, равный единице; и энтропийный кодер 513, выполненный, для горизонтальных и вертикальных составляющих разностей векторов движения, с возможностью кодирования усеченного унарного кода в поток данных, используя контекстно-адаптивное двоичное энтропийное кодирование с точно одним контекстом на каждую позицию бина усеченного унарного кода, который является общим для горизонтальных и вертикальных составляющих разностей векторов движения, и экспоненциального кода Голомба, используя режим обхода с постоянной равновероятностью. Другие возможные подробности реализации являются непосредственно переносимыми из описания, касающегося декодера по фиг. 16, в кодер по фиг. 17.For completeness only, fig. 17 shows an encoder corresponding to the decoder of FIG. 16. Encoder according to FIG. 17 includes a constructor 504, a symbolizer 507, and an entropy encoder 513. The encoder includes a constructor 504 configured to predictively encode video 505 by motion compensated prediction using motion vectors, and predictively encode motion vectors by predicting motion vectors and setting integer values 506 horizontal and vertical components of the motion vector differences to represent the prediction error of the predicted motion vectors; a symbolizer 507 configured to binarize integer values to obtain binarizations 508 of the horizontal and vertical components of the motion vector differences, wherein the binarizations are equal to a truncated unary code of the horizontal and vertical components, respectively, in the first interval of the domain of definition of the horizontal and vertical components below the cutoff value and the prefix combination in the form of a truncated a unary code for the cutoff value and a suffix in the form of an exponential Golomb code of horizontal and vertical components, respectively, in the second interval of the domain of definition of the horizontal and vertical components, inclusive and above the cutoff value, wherein the cutoff value is equal to two, and the exponential Golomb code has an order equal to one; and an entropy encoder 513 configured for the horizontal and vertical components of motion vector differences, capable of encoding a truncated unary code into the data stream using context-adaptive binary entropy encoding with exactly one context per truncated unary code bin position that is common to the horizontal and the vertical components of the differences between the motion vectors, and the exponential Golomb code, using the traversal mode with constant equiprobability. Other possible implementation details are directly transferred from the description regarding the decoder of FIG. 16, into the encoder of FIG. 17.

Хотя некоторые аспекты были описаны в контексте устройства, ясно, что эти аспекты также представляют описание соответствующего способа, где блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа, также представляют описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все из этапов способа могут выполняться аппаратным устройством (или использовать их), подобных, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления некоторый один или несколько из наиболее важных этапов способа могут выполняться таким устройством.Although some aspects have been described in the context of a device, it is clear that these aspects also represent a description of the corresponding method, where the block or device corresponds to a method step or a feature of a method step. Likewise, aspects described in the context of a method step also provide a description of a corresponding block or element or feature of a corresponding device. Some or all of the method steps may be performed by (or use) a hardware device, such as, for example, a microprocessor, a programmable computer, or an electronic circuit. In some embodiments, some one or more of the most critical steps of the method may be performed by such a device.

Обладающий признаками изобретения кодированный сигнал может сохраняться на цифровой запоминающей среде или может передаваться по среде передачи, такой как беспроводная среда передачи или проводная среда передачи, такая как Интернет.The inventive encoded signal may be stored on a digital storage medium or may be transmitted over a transmission medium such as a wireless transmission medium or a wired transmission medium such as the Internet.

В зависимости от некоторый требований к реализации варианты осуществления изобретения могут быть реализованы аппаратными средствами или программными средствами. Реализация может выполняться с использованием цифровой запоминающей среды, например, гибкого диска, цифрового многофункционального диска (DVD), диска Blue-Ray, компакт-диска, постоянного запоминающего устройства (ROM), программируемого ROM (PROM), стираемого программируемого ROM (EPROM), электрически стираемого программируемого ROM (EEPROM) или флэш-памяти, имеющих электронно-считываемые сигналы управления, хранимые на них, которые взаимодействуют (или способны взаимодействовать) с программируемой компьютерной системой, так что выполняется соответствующий способ. Поэтому, цифровая запоминающая среда может быть считываемая компьютером.Depending on certain implementation requirements, embodiments of the invention may be implemented in hardware or software. Implementation may be performed using a digital storage medium, such as a floppy disk, digital versatile disc (DVD), Blue-Ray disc, compact disc, read-only memory (ROM), programmable ROM (PROM), erasable programmable ROM (EPROM), electrically erasable programmable ROM (EEPROM) or flash memory having electronically readable control signals stored thereon that interact (or are capable of interacting) with a programmable computer system such that the corresponding method is performed. Therefore, the digital storage medium can be read by a computer.

Некоторые варианты осуществления согласно изобретению содержат носитель данных, имеющий электронно-считываемые сигналы управления, которые способны взаимодействовать с программируемой компьютерной системой, так что выполняется один из способов, описанных в данном документе.Some embodiments of the invention include a storage medium having electronically readable control signals that are capable of interfacing with a programmable computer system such that one of the methods described herein is performed.

В общем, варианты осуществления настоящего изобретения могут быть реализованы в виде продукта компьютерной программы с программным кодом, причем программный код действует для выполнения одного из способов, когда продукт компьютерной программы выполняется на компьютере. Программный код, например, может сохраняться на машиносчитываемом носителе.In general, embodiments of the present invention may be implemented as a computer program product with program code, wherein the program code operates to perform one of the methods when the computer program product is executed on a computer. The program code, for example, may be stored on a machine-readable medium.

Другие варианты осуществления содержат компьютерную программу для выполнения одного из способов, описанных в данном документе, хранимых на машиносчитываемом носителе.Other embodiments comprise a computer program for performing one of the methods described herein stored on a machine-readable medium.

Другими словами, вариантом осуществления обладающего признаками изобретения способа, поэтому, является компьютерная программа, имеющая программный код для выполнения одного из способов, описанных в данном документе, когда компьютерная программа выполняется на компьютере.In other words, an embodiment of the inventive method is therefore a computer program having program code for performing one of the methods described herein when the computer program is executed on a computer.

Другим вариантом осуществления обладающих признаками изобретения способов, поэтому, является носитель данных (или цифровая запоминающая среда или считываемая компьютером среда), содержащий записанную на нем компьютерную программу для выполнения одного из способов, описанных в данном документе. Носитель данных, цифровая запоминающая среда или записанная среда являются обычно материальными и/или непереходными.Another embodiment of the inventive methods, therefore, is a storage medium (or digital storage medium or computer readable medium) containing a computer program stored thereon for performing one of the methods described herein. A storage medium, digital storage medium, or recorded medium is typically tangible and/or intransitive.

Другим вариантом осуществления обладающего признаками изобретения способа, поэтому, является поток данных или последовательность сигналов, представляющих компьютерную программу для выполнения одного из способов, описанных в данном документе. Поток данных или последовательность сигналов, например, могут быть выполнены с возможностью пересылки по соединению передачи данных, например, по Интернету.Another embodiment of the inventive method, therefore, is a stream of data or a sequence of signals representing a computer program for executing one of the methods described herein. The data stream or signal sequence, for example, may be configured to be sent over a data connection, such as the Internet.

Дополнительный вариант осуществления содержит средство обработки, например, компьютер, или программируемое логическое устройство, выполненное с возможностью или адаптируемое к выполнению одного из способов, описанных в данном документе.An additional embodiment comprises processing means, such as a computer or programmable logic device, configured or adaptable to perform one of the methods described herein.

Дополнительный вариант осуществления содержит компьютер, имеющий установленную на нем компьютерную программу для выполнения одного из способов, описанных в данном документе.A further embodiment comprises a computer having a computer program installed thereon for performing one of the methods described herein.

Дополнительный вариант осуществления согласно изобретению содержит устройство или систему, выполненную с возможностью пересылки (например, электронным или оптическим образом) на приемник компьютерной программы для выполнения одного из способов, описанных в данном документе. Приемником, например, может быть компьютер, мобильное устройство, устройство памяти или т.п. Устройство или система, например, может содержать файловый сервер для пересылки компьютерной программы на приемник.A further embodiment of the invention comprises a device or system configured to transmit (eg, electronically or optically) to a receiver a computer program to perform one of the methods described herein. The receiver, for example, may be a computer, mobile device, memory device, or the like. The device or system, for example, may include a file server for transferring a computer program to a receiver.

В некоторых вариантах осуществления программируемое логическое устройство (например, программируемая вентильная матрица) может использоваться для выполнения некоторых или всех функциональных возможностей способов, описанных в данном документе. В некоторых вариантах осуществления программируемая вентильная матрица может взаимодействовать с микропроцессором для выполнения одного из способов, описанных в данном документе. В общем, способы, предпочтительно, выполняются любым аппаратным устройством.In some embodiments, a programmable logic device (eg, a programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, the field programmable gate array may interface with a microprocessor to perform one of the methods described herein. In general, the methods are preferably performed by any hardware device.

Вышеописанные варианты осуществления являются просто иллюстративными для принципов настоящего изобретения. Понятно, что модификации и изменения устройств и деталей, описанных в данном документе, очевидны для специалиста в данной области техники. Предполагается, что они, поэтому, ограничиваются только объемом находящейся на рассмотрении формулы изобретения и не конкретными деталями, представленными посредством описания и объяснения вариантов осуществления в данном документе.The above-described embodiments are merely illustrative of the principles of the present invention. It will be appreciated that modifications and changes to the devices and parts described herein will be apparent to one skilled in the art. They are, therefore, intended to be limited only by the scope of the pending claims and not by the specific details provided by the description and explanation of the embodiments herein.

Claims (34)

1. Декодер для декодирования видео, кодированного в потоке данных, содержащий: 1. A decoder for decoding video encoded in a data stream, containing: десимволизатор, выполненный с возможностью дебинаризации бинаризаций разностей векторов движения, при этом видео кодировано с предсказанием посредством предсказания с компенсацией движения, используя векторы движения, причем разности векторов движения представляют ошибку предсказания в отношении векторов движения, и a desymbolizer configured to debinarize binarizations of motion vector differences, wherein the video is predictively encoded by motion compensated prediction using the motion vectors, wherein the motion vector differences represent a prediction error with respect to the motion vectors, and каждая из бинаризаций разностей векторов движения включает в себя строку бинов префикса, включающую в себя два двоичных кода фиксированной длины на основе значения отсечки, равного двум, и строку бинов суффикса, включающую в себя экспоненциальный код Голомба, имеющий фиксированный порядок, заданный как единица, при этом каждый двоичный код фиксированной длины строки бинов префикса указывает, больше ли соответственного фиксированного значения абсолютное значение разности векторов движения; и each of the motion vector difference binarizations includes a string of prefix bins including two fixed-length binary codes based on a cutoff value of two, and a string of suffix bins including an exponential Golomb code having a fixed order specified as one, at In this case, each fixed-length binary code of a string of prefix bins indicates whether the absolute value of the difference in motion vectors is greater than the corresponding fixed value; And восстановитель, выполненный с возможностью восстановления видео, основываясь на дебинаризованных значениях разностей векторов движения. a reconstructor configured to reconstruct video based on debinarized values of motion vector differences. 2. Декодер по п. 1, в котором восстановитель выполнен с возможностью пространственного и/или временного предсказания векторов движения, чтобы получать предикторы для векторов движения, и восстановления векторов движения посредством уточнения предикторов, используя разности векторов движения. 2. The decoder of claim 1, wherein the restorer is configured to spatially and/or temporally predict motion vectors to obtain predictors for the motion vectors, and recover the motion vectors by refining the predictors using motion vector differences. 3. Декодер по п. 1, в котором восстановитель выполнен с возможностью предсказания векторов движения различным образом, чтобы получать упорядоченный список предикторов для векторов движения, получения индекса списка из потока данных и восстановления векторов движения посредством уточнения предиктора тем предиктором списка, на который указывает индекс списка, используя разности векторов движения. 3. The decoder of claim 1, wherein the restorer is configured to predict motion vectors in various ways to obtain an ordered list of predictors for the motion vectors, obtain a list index from the data stream, and restore the motion vectors by refining the predictor with the list predictor pointed to by the index. list using motion vector differences. 4. Декодер по п. 1, в котором восстановитель выполнен с возможностью восстановления видео, используя предсказание с компенсацией движения посредством применения векторов движения с пространственной степенью разбиения, определяемой подразделением изображений видео в блоках, причем восстановитель использует синтаксические элементы слияния, присутствующие в потоке данных, чтобы группировать блоки в группы слияния и применять дебинаризованные значения разностей векторов движения, полученные десимволизатором, в единицах групп слияния. 4. The decoder of claim 1, wherein the restorer is configured to reconstruct video using motion compensated prediction by applying motion vectors with a spatial degree of partitioning determined by subdividing the video images into blocks, wherein the restorer uses fusion syntactic elements present in the data stream, to group blocks into merge groups and apply the debinarized motion vector difference values obtained by the desymbolizer in units of merge groups. 5. Декодер по п. 4, в котором восстановитель выполнен с возможностью выведения подразделения изображений видео в блоках из части потока данных, исключая синтаксические элементы слияния. 5. The decoder according to claim 4, wherein the restorer is configured to derive subdivisions of video images in blocks from a portion of the data stream, excluding syntactic merge elements. 6. Декодер по п. 4, в котором восстановитель выполнен с возможностью принятия предопределенного вектора движения для всех блоков ассоциированной группы слияния, или уточнения его посредством разностей векторов движения, ассоциированных с блоками группы слияния. 6. The decoder of claim 4, wherein the restorer is configured to accept a predetermined motion vector for all blocks of an associated merge group, or refine it by differences in motion vectors associated with blocks of the merge group. 7. Декодер по п. 1, в котором поток данных содержит по меньшей мере часть, ассоциированную с цветными элементами дискретизации видео. 7. The decoder of claim 1, wherein the data stream comprises at least a portion associated with color video bins. 8. Декодер по п. 1, в котором поток данных содержит по меньшей мере часть, ассоциированную со значениями глубины, относящимися к карте глубины, ассоциированной с видео. 8. The decoder of claim 1, wherein the data stream comprises at least a portion associated with depth values associated with a depth map associated with the video. 9. Декодер по п. 1, дополнительно содержащий энтропийный декодер, выполненный с возможностью декодирования по меньшей мере двоичных кодов фиксированной длины с использованием двоичного арифметического декодирования. 9. The decoder of claim 1, further comprising an entropy decoder configured to decode at least fixed length binary codes using binary arithmetic decoding. 10. Декодер по п. 9, в котором энтропийный декодер выполнен с возможностью для каждой разности векторов движения декодировать двоичные коды фиксированной длины до декодирования экспоненциального кода Голомба. 10. The decoder according to claim 9, wherein the entropy decoder is configured to decode fixed-length binary codes for each motion vector difference before decoding the exponential Golomb code. 11. Способ для декодирования видео, кодированного в потоке данных, содержащий этапы, на которых: 11. A method for decoding video encoded in a data stream, comprising the steps of: дебинаризируют бинаризации разностей векторов движения, при этом видео кодировано с предсказанием посредством предсказания с компенсацией движения, используя векторы движения, причем разности векторов движения представляют ошибку предсказания в отношении векторов движения, и debinarizing binarizations of the motion vector differences, wherein the video is predictively encoded by motion compensated prediction using the motion vectors, wherein the motion vector differences represent a prediction error with respect to the motion vectors, and каждая из бинаризаций разностей векторов движения включает в себя строку бинов префикса, включающую в себя два двоичных кода фиксированной длины на основе значения отсечки, равного двум, и строку бинов суффикса, включающую в себя экспоненциальный код Голомба, имеющий фиксированный порядок, заданный как единица, при этом каждый двоичный код фиксированной длины строки бинов префикса указывает, больше ли соответственного фиксированного значения абсолютное значение разности векторов движения; и each of the motion vector difference binarizations includes a string of prefix bins including two fixed-length binary codes based on a cutoff value of two, and a string of suffix bins including an exponential Golomb code having a fixed order specified as one, at In this case, each fixed-length binary code of a string of prefix bins indicates whether the absolute value of the difference in motion vectors is greater than the corresponding fixed value; And восстанавливают видео, основываясь на дебинаризованных значениях разностей векторов движения. reconstruct the video based on the debinarized values of the motion vector differences. 12. Способ по п. 11, в котором восстановление включает в себя пространственное и/или временное предсказание векторов движения, чтобы получать предикторы для векторов движения, и восстановление векторов движения посредством уточнения предикторов, используя разности векторов движения. 12. The method of claim 11, wherein the recovery includes spatial and/or temporal prediction of motion vectors to obtain predictors for the motion vectors, and recovery of the motion vectors by refining the predictors using motion vector differences. 13. Способ по п. 11, в котором восстановление включает в себя предсказание векторов движения различным образом, чтобы получать упорядоченный список предикторов для векторов движения, получение индекса списка из потока данных и восстановление векторов движения посредством уточнения предиктора тем предиктором списка, на который указывает индекс списка, используя разности векторов движения. 13. The method of claim 11, wherein the recovery includes predicting motion vectors in various ways to obtain an ordered list of predictors for the motion vectors, obtaining a list index from the data stream, and recovering the motion vectors by refining the predictor with the list predictor pointed to by the index. list using motion vector differences. 14. Способ по п. 11, в котором восстановление включает в себя восстановление видео, используя предсказание с компенсацией движения посредством применения векторов движения с пространственной степенью разбиения, определяемой подразделением изображений видео в блоках, причем синтаксические элементы слияния, присутствующие в потоке данных, используют, чтобы группировать блоки в группы слияния и применять дебинаризованные значения разностей векторов движения в единицах групп слияния. 14. The method of claim 11, wherein the restoration includes restoring the video using motion compensated prediction by applying motion vectors with a spatial degree of partitioning determined by subdividing the video images into blocks, wherein syntactic fusion elements present in the data stream are used, to group blocks into merge groups and apply debinarized values of motion vector differences in units of merge groups. 15. Способ по п. 14, в котором восстановление дополнительно включает в себя выведение подразделения изображений видео в блоках из части потока данных, исключая синтаксические элементы слияния. 15. The method of claim 14, wherein the recovery further includes deriving the subdivision of video images into blocks from a portion of the data stream, excluding the merge syntax elements. 16. Способ по п. 14, в котором восстановление дополнительно включает в себя принятие предопределенного вектора движения для всех блоков ассоциированной группы слияния или уточнение его посредством разностей векторов движения, ассоциированных с блоками группы слияния. 16. The method of claim 14, wherein the recovery further includes accepting a predetermined motion vector for all blocks of the associated merge group or refining it by differences in the motion vectors associated with the blocks of the merge group. 17. Способ по п. 11, в котором поток данных содержит по меньшей мере часть, ассоциированную с цветными элементами дискретизации видео. 17. The method of claim 11, wherein the data stream comprises at least a portion associated with color video bins. 18. Способ по п. 11, в котором поток данных содержит по меньшей мере часть, ассоциированную со значениями глубины, относящимися к карте глубины, ассоциированной с видео. 18. The method of claim 11, wherein the data stream comprises at least a portion associated with depth values associated with a depth map associated with the video. 19. Способ по п. 11, дополнительно содержащий этап энтропийного декодирования двоичных кодов фиксированной длины с использованием двоичного арифметического декодирования. 19. The method of claim 11, further comprising the step of entropy decoding fixed-length binary codes using binary arithmetic decoding. 20. Способ по п. 19, в котором энтропийное декодирование включает в себя для каждой разности векторов движения декодирование двоичных кодов фиксированной длины до декодирования экспоненциального кода Голомба. 20. The method of claim 19, wherein the entropy decoding includes, for each motion vector difference, decoding fixed-length binary codes before decoding an exponential Golomb code. 21. Способ кодирования видео в поток данных, содержащий этапы, на которых: 21. A method of encoding video into a data stream containing the steps of: кодируют с предсказанием видео посредством предсказания с компенсацией движения, используя векторы движения, и кодируют с предсказанием векторы движения посредством предсказания векторов движения и генерации разностей векторов движения, при этом разности векторов движения представляют ошибку предсказания в отношении векторов движения; predictively encoding the video by motion compensated prediction using the motion vectors, and predictively encoding the motion vectors by predicting the motion vectors and generating motion vector differences, wherein the motion vector differences represent a prediction error with respect to the motion vectors; бинаризируют разности векторов движения, так что каждая бинаризация включает в себя два двоичных кода фиксированной длины на основе значения отсечки, равного двум, и строку бинов суффикса, включающую в себя экспоненциальный код Голомба, имеющий фиксированный порядок, заданный как единица, при этом каждый двоичный код фиксированной длины строки бинов префикса указывает, больше ли соответственного фиксированного значения абсолютное значение разности векторов движения; и binarize the motion vector differences such that each binarization includes two fixed-length binary codes based on a cutoff value of two, and a string of suffix bins including an exponential Golomb code having a fixed order specified as one, with each binary code fixed-length string of prefix bins indicates whether the absolute value of the motion vector difference is greater than the corresponding fixed value; And кодируют бинаризованные значения разностей векторов движения в поток данных. encode the binarized values of the motion vector differences into the data stream. 22. Способ по п. 21, в котором поток данных содержит по меньшей мере часть, ассоциированную с цветными элементами дискретизации видео. 22. The method of claim 21, wherein the data stream comprises at least a portion associated with color video bins. 23. Способ по п. 21, в котором поток данных содержит по меньшей мере часть, ассоциированную со значениями глубины, относящимися к карте глубины, ассоциированной с видео. 23. The method of claim 21, wherein the data stream comprises at least a portion associated with depth values associated with a depth map associated with the video. 24. Способ по п. 21, дополнительно содержащий этап энтропийного кодирования двоичных кодов фиксированной длины с использованием двоичного арифметического кодирования. 24. The method of claim 21, further comprising the step of entropy encoding fixed-length binary codes using binary arithmetic encoding. 25. Способ по п. 24, в котором энтропийное кодирование включает в себя для каждой разности векторов движения кодирование двоичных кодов фиксированной длины до кодирования экспоненциального кода Голомба. 25. The method of claim 24, wherein the entropy encoding includes, for each motion vector difference, encoding fixed-length binary codes prior to encoding exponential Golomb codes.
RU2022119574A 2011-06-16 2022-07-18 Entropy coding of motion vector differences RU2820857C2 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US61/497,794 2011-06-16
US61/508,506 2011-07-15

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2021131724A Division RU2776910C1 (en) 2011-06-16 2021-10-29 Entropy encoding of differences in motion vectors

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2024114803A Division RU2839971C1 (en) 2011-06-16 2024-05-30 Entropy coding of motion vector differences

Publications (2)

Publication Number Publication Date
RU2022119574A RU2022119574A (en) 2024-01-18
RU2820857C2 true RU2820857C2 (en) 2024-06-11

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
WO2007032861A1 (en) * 2005-08-22 2007-03-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
RU2371881C1 (en) * 2005-07-08 2009-10-27 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method of modelling video signal coding information for information compression/decompression
EP1294193B1 (en) * 2001-09-12 2010-06-23 Thomson Licensing Method and apparatus for changing received streaming content channels
RU2406258C2 (en) * 2006-03-27 2010-12-10 Квэлкомм Инкорпорейтед Method and system for coding and decoding of information related to compression of video signal
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1294193B1 (en) * 2001-09-12 2010-06-23 Thomson Licensing Method and apparatus for changing received streaming content channels
US6900748B2 (en) * 2003-07-17 2005-05-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Method and apparatus for binarization and arithmetic coding of a data value
RU2371881C1 (en) * 2005-07-08 2009-10-27 ЭлДжи ЭЛЕКТРОНИКС ИНК. Method of modelling video signal coding information for information compression/decompression
WO2007032861A1 (en) * 2005-08-22 2007-03-22 Streaming Networks (Pvt.) Ltd. Method and system for fast context based adaptive binary arithmetic coding
RU2406258C2 (en) * 2006-03-27 2010-12-10 Квэлкомм Инкорпорейтед Method and system for coding and decoding of information related to compression of video signal
US7932843B2 (en) * 2008-10-17 2011-04-26 Texas Instruments Incorporated Parallel CABAC decoding for video decompression

Similar Documents

Publication Publication Date Title
RU2758981C2 (en) Entropy encoding of motion vector differences
HK1248434A1 (en) Decoder, encoder, method and storage media for decoding and encoding a video
HK1248948A1 (en) Decoder, encoder, method and storage media for decoding and encoding a video
HK1249313A1 (en) Decoder, method for decoding and encoding a video
AU2024201207A1 (en) Context initialization in entropy coding
RU2820857C2 (en) Entropy coding of motion vector differences
RU2839971C1 (en) Entropy coding of motion vector differences
RU2776910C1 (en) Entropy encoding of differences in motion vectors
RU2839276C2 (en) Context initialization in entropy coding