RU2776910C1 - Entropy encoding of differences in motion vectors - Google Patents

Entropy encoding of differences in motion vectors Download PDF

Info

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

Links

Images

Abstract

FIELD: video encoding.
SUBSTANCE: invention relates to means for video encoding. For the horizontal and vertical components of each of the motion vector differences, a truncated unary code and exponential Golomb code are obtained from the data stream. The truncated unary code is decoded using context-adaptive binary entropy decoding with one context per bin position of the truncated unary code. Wherein the context is shared by the horizontal and vertical components of the difference of motion vectors. The exponential Golomb code is decoded using the constant equiprobability bypass mode to obtain the horizontal and vertical components of the motion vector difference. The video is reconstructed based on the horizontal and vertical components of the motion vector differences.
EFFECT: improving the efficiency of video encoding.
28 cl, 22 dwg, 12 tbl

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 the video content, i.e. they compress data. In the context of video coding, it is known that video data compression is advantageously achieved by successively applying different coding techniques: motion-compensated prediction is used to predict the content of an image. The motion vectors determined by motion-compensated prediction, as well as the prediction residual, are entropy lossless encoded. To further reduce the amount of data, the motion vectors themselves are subject to prediction, so that only the motion vector differences representing the residual of the motion vector prediction need to be entropy encoded. In H.264, for example, the procedure just outlined is applied to convey motion vector difference information. In particular, the motion vector differences are binarized into rows of bins (containers) corresponding to a combination of a truncated unary code and, from a certain cutoff value, an exponential Golomb code. While the bins of the Exponential Golomb code are easily encoded using the equiprobable traversal 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 the complexity of coding, but can also have a negative impact on coding efficiency: if a context is visited very infrequently, probabilistic adaptation is not performed efficiently, i.e. adapting the probability estimate associated with the respective context at the time of the entropy encoding cause. Therefore, improperly applied probability estimates estimate the actual symbol statistics. In addition, if multiple contexts are provided for a certain binarization bin, the choice between them may require inspection of the values of neighboring bins/syntax elements, the need for which may prevent the decoding process from being performed. On the other hand, if the number of contexts is provided too small, bins with highly variable actual symbol statistics are grouped together in one context, and hence the probability score associated with that context does not efficiently encode the bins associated with it.

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

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

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

Основным решением настоящего изобретения является то, что эффективность кодирования энтропийного кодирования разностей векторов движения может быть дополнительно повышена посредством снижения значения отсечки, до которого используется усеченный унарный код, чтобы бинаризировать разности векторов движения, до двух, так что имеется только две позиции бинов усеченного унарного кода, и, если порядок единицы используется для экспоненциального кода Голомба для бинаризации разностей векторов движения от значения отсечки, и, если, дополнительно, точно один контекст обеспечивается для двух позиций бинов усеченного унарного кода, соответственно, так что не является необходимым выбор контекста, основанный на значениях бина или синтаксического элемента соседних блоков изображения, и исключается слишком мелкая классификация бинов в этих позициях бинов в контексты, так что вероятностная адаптация работает надлежащим образом, и, если одинаковые контексты используются для горизонтальных и вертикальных составляющих, тем самым дополнительно уменьшая отрицательные эффекты слишком мелкого подразделения контекста.The main solution of the present invention is that the coding efficiency of entropy coding of motion vector differences can be further improved by reducing the cutoff value up 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 choose a context based on bin or syntax element values of adjacent image blocks, and overly fine classification of bins at those bin positions into contexts is avoided so that probabilistic adaptation works properly, and if the same contexts are used for horizontal and vertical constituents, thereby further reducing the negative effects of subdividing the context too finely.

Кроме того, было обнаружено, что только что упомянутые установки в отношении энтропийного кодирования разностей векторов движения являются особенно ценными при объединении их с улучшенными способами предсказания векторов движения и уменьшения необходимого количества разностей векторов движения, подлежащих передаче. Например, могут обеспечиваться многочисленные предикторы вектора движения, чтобы получать упорядоченный список предикторов вектора движения, и индекс этого списка предикторов вектора движения может использоваться, чтобы определять фактический предиктор вектора движения, остаток предсказания которого представляется рассматриваемой разностью вектора движения. Хотя информация об используемом индексе списка должна выводиться из потока данных на декодирующей стороне, общее качество предсказания векторов движения повышается, и, следовательно, величина разностей векторов движения дополнительно уменьшается, так что в целом эффективность кодирования дополнительно повышается, и уменьшение значения отсечки и общее использование контекста для горизонтальных и вертикальных составляющих разностей векторов движения соответствуют такому улучшенному предсказанию вектора движения. С другой стороны, может использоваться слияние, чтобы уменьшить количество разностей векторов движения, подлежащих передаче в потоке данных: с этой целью, информация слияния может передаваться в потоке данных, сигнализируя блокам декодера о подразделении блоков, которые группируются в группу блоков. Разности векторов движения затем могут передаваться в потоке данных в единицах этих объединенных групп вместо индивидуальных блоков, таким образом уменьшая количество разностей векторов движения, которые необходимо передавать. Так как эта кластеризация блоков уменьшает взаимную корреляцию между соседними разностями векторов движения, только что упомянутое исключение обеспечения нескольких контекстов для одной позиции бина предотвращает очень мелкую классификацию схемы энтропийного кодирования в контексты в зависимости от соседних разностей векторов движения. Вместо этого, принцип слияния уже использует взаимную корреляцию между разностями векторов движения соседних блоков, и, следовательно, является достаточным один контекст для одной позиции бина - один и тот же для горизонтальной и вертикальной составляющих.In addition, it has been found that the just-mentioned motion vector difference entropy encoding settings are particularly valuable when combined with improved motion vector prediction techniques 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 residual is represented by the considered motion vector difference. Although the list index used information should be outputted from the data stream at the decoding side, the overall motion vector prediction quality is improved, and therefore the magnitude of the motion vector differences is further reduced, so that the overall encoding efficiency is further improved, and the reduction of the cutoff value and the overall use of the context for the horizontal and vertical components of the motion vector differences correspond to such improved motion vector prediction. On the other hand, merging may be used to reduce the number of motion vector differences to be transmitted in the data stream: to this end, merging information may be transmitted in the data stream signaling decoder blocks to subdivide blocks that are grouped into a block group. The motion vector differences can then be transmitted in the data stream in units of these combined groups instead of individual blocks, thus reducing the number of motion vector differences that need to be transmitted. Since this block clustering reduces cross-correlation between adjacent motion vector differences, the exception just mentioned of providing multiple contexts for a single bin position prevents the entropy coding scheme from being very finely classified into contexts depending on neighboring motion vector differences. Instead, the merge principle already uses the cross-correlation between the motion vector differences of adjacent blocks, and hence 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, among which:

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

фиг. 2a-2c схематически изображают разные подразделения массива элементов дискретизации, такого как изображение, на блоки;fig. 2a-2c schematically depict different 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 shows a block diagram of an encoder according to an embodiment in more detail;

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

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

фиг. 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 bitstream 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 bitstreams according to an embodiment;

фиг. 10 изображает схематическую диаграмму, иллюстрирующую пакет данных с альтернативным сегментированием, использующим сегменты фиксированного размера, согласно другому варианту осуществления;fig. 10 is a schematic diagram illustrating an alternative slicing data packet 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 mapping 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 depicts motion vector difference binarization according to an embodiment of the present invention;

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

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

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

Ниже сначала описываются варианты осуществления общего принципа видеокодирования, в отношении фиг. 1-10. Фиг. 1-6 относятся к части видеокодека, работающей на уровне синтаксиса. Последующие фиг. 8-10 относятся к вариантам осуществления для части кода, относящегося к преобразованию потока синтаксических элементов в поток данных и наоборот. Затем описываются конкретные аспекты и варианты осуществления настоящего изобретения в виде возможных реализаций общего принципа, представительно кратко изложенного в отношении фиг. 1-10.Embodiments of the general principle of video coding are first described below with respect to FIG. 1-10. Fig. 1-6 refer to the part of the video codec that works at the syntax level. The following figs. 8-10 refer to embodiments for a portion of code related to converting a stream of syntax elements to a data stream and vice versa. Specific aspects and embodiments of the present invention are then described in terms of possible implementations of the general principle representatively summarized with respect 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 an array of sampling elements 20 of information into the data stream. The information bin array may represent information bins corresponding to, for example, luminance values, chrominance values, luminance values, chroma values, or the like. However, the information bins may also be depth values in the case of the bin array 20 being a depth map generated from, for example, a 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 bin array 20 into 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 quite independently of each other. Instead, encoder 10 may use reconstructions of previously encoded blocks to extrapolate or internally predict the remaining blocks, and may use the degree of block splitting to set encoding parameters, i.e. to set the method by which each region of the bin array corresponding to the corresponding block is encoded.

Кроме того, кодер 10 представляет собой кодер с преобразованием. Т.е. кодер 10 кодирует блоки 40 посредством использования преобразования, чтобы переносить элементы дискретизации информации в каждом блоке 40 из пространственной области в спектральную область. Может использоваться двумерное преобразование, такое как дискретное косинусное преобразование (DCT) быстрого преобразования Фурье (FFT) или т.п. Предпочтительно, что блоки 40 имеют квадратную форму или прямоугольную форму.In addition, encoder 10 is a transform encoder. Those. encoder 10 encodes blocks 40 by using a transform to transfer the information bins 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 bin array 20 into blocks 40 shown in FIG. 1 is merely for illustration purposes. Fig. 1 depicts a bin array 20 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 predetermined. Those. the encoder 10 may not carry the block size information of the blocks 40 in the data stream 30 to the decoding side. For example, a 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 overlaps at most one block from among neighboring blocks adjacent to each other with the current block at a given direction. The latter means that the left and right adjacent 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, subdivision of bin array 20 into blocks 40 may be adapted to the content of bin array 20 by encoder 10, with subdivision information about the subdivision being 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 different examples for dividing the bin array 20 into blocks 40. FIG. 2a shows a quadtree subdivision of an array of 20 bins into blocks of 40 different sizes, with typical blocks being designated 40a, 40b, 40c and 40d in increasing size. According to the subdivision in FIG. 2a, the bin array 20 is first divided into a conventional two-dimensional arrangement of treeblocks 40d, which in turn have individual subdivision information associated with it, according to which some treeblock 40d may or may not be further subdivided according to the quadtree structure. The tree block to the left of block 40d is, by way of example, subdivided into smaller blocks according to the quadtree structure. Encoder 10 may perform one 2D transform for each of the blocks shown in solid and dashed lines in FIG. 2a. In other words, encoder 10 may transform array 20 in units of block subdivision.

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

Фиг. 2b изображает другой пример для подразделения. В соответствии с фиг. 2b массив 20 элементов дискретизации сначала делится на макроблоки 40b, расположенные в обычном двумерном расположении неперекрывающимся, взаимно примыкающим образом, причем каждый макроблок 40b имеет ассоциированную с ним информацию подразделения, в соответствии с которой макроблок не подразделяется, или, если подразделяется, подразделяется обычным двумерным образом на подблоки равного размера для достижения разных степеней разбиения подразделения для разных макроблоков. Результатом является подразделение массива 20 элементов дискретизации в блоках 40 с разным размером, причем представители разных размеров обозначаются позициями 40a, 40b и 40a’. Как на фиг. 2a, кодер 10 выполняет двумерное преобразование в отношении каждого из блоков, показанных на фиг.2b сплошными и пунктирными линиями. Фиг. 2c описывается ниже.Fig. 2b shows another example for a division. In accordance with 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, each macroblock 40b having subdivision information associated with it, according to which the macroblock is not subdivided, or if subdivided, is subdivided in a conventional two-dimensional manner. into subblocks of equal size to achieve different degrees of subdivision partitioning for different macroblocks. The result is a division of the array of 20 bins into blocks 40 with different sizes, with representatives of different sizes being denoted by positions 40a, 40b and 40a'. As in FIG. 2a, encoder 10 performs a 2D transform on each of the blocks shown in solid and dashed lines in FIG. 2b. Fig. 2c is described below.

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

Кодер 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 information about transform coefficient blocks into and extract the information from the data stream, respectively. Details in this regard are described below in accordance with various embodiments. It should be noted that the data stream 30 does not necessarily contain transform coefficient block information for all blocks 40 of the bin array 20 . Instead, since a subset of blocks 40 may be encoded into bitstream 30 in a different manner. For example, encoder 10 may instead choose to refrain from inserting a block of transform coefficients for some block of blocks 40 with insertion into bitstream 30 of alternative encoding parameters that allow decoder 50 to predict or otherwise populate the corresponding block in reconstructed version 60. For example , the encoder 10 may perform texture analysis to determine the location of blocks in the bin array 20, which may be populated on 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 with respect to the following figures, the blocks of transform coefficients do not necessarily represent the spectral domain representation of the original bin information of the corresponding block 40 of the bin array 20. Instead, such a block of transform coefficients may represent a spectral region representation of the prediction residual of the corresponding block 40. FIG. 4 depicts an embodiment for such an encoder. The encoder of 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, and an adder 110. The subtractor 108, the transformation stage 100 and the entropy encoder 102 are connected in series in the mentioned order between the input 112 and encoder output 114 in FIG. 4. Inverse transform stage 104, adder 110, and predictor 106 are connected in this order between the output of transform stage 100 and the inverting input of subtractor 108, with the output of predictor 106 also connected to another input of adder 110.

Кодер по фиг. 4 представляет собой блочный кодер на основе преобразования с предсказанием. Т.е. блоки массива 20 элементов дискретизации, поступающие на вход 112, предсказываются из ранее кодированных и восстановленных частей этого же массива 20 элементов дискретизации или ранее кодированных и восстановленных других массивов элементов дискретизации, которые могут предшествовать или следовать за текущим массивом 20 элементов дискретизации во времени представления. Предсказание выполняется предиктором 106. Вычитатель 108 вычитает предсказание из такого исходного блока, и ступень 100 преобразования выполняет двумерное преобразование остатков предсказания. Само двумерное преобразование или последующая мера в ступени 100 преобразования могут приводить к квантованию коэффициентов преобразования в блоках коэффициентов преобразования. Квантованные блоки коэффициентов преобразования кодируются без потерь, например, посредством энтропийного кодирования в энтропийном кодере 102, причем результирующий поток данных выводится на выходе 114. Ступень 104 обратного преобразования восстанавливает квантованный остаток, и сумматор 110, в свою очередь, объединяет восстановленный остаток с соответствующим предсказанием для получения восстановленных элементов дискретизации информации, основываясь на которых предиктор 106 может предсказывать вышеупомянутые кодируемые в настоящий момент блоки предсказания. Предиктор 106 может использовать разные режимы предсказания, такие как режимы внутреннего предсказания и режимы внешнего предсказания, чтобы предсказывать блоки, и параметры предсказания направляются энтропийному кодеру 102 для вставки в поток данных. Для каждого блока предсказания с внешним предсказанием соответствующие данные движения вставляются в битовый поток при помощи энтропийного кодера 114, чтобы предоставить возможность декодирующей стороне повторно выполнить предсказание. Данные движения для блока предсказания изображения могут включать в себя часть синтаксиса, включающую в себя синтаксический элемент, представляющий разность вектора движения, дифференциально кодирующую вектор движения для текущего блока предсказания относительно предиктора вектора движения, полученного, например, посредством заданного способа из векторов движения соседних, уже кодированных блоков предсказания.The encoder of FIG. 4 is a block encoder based on predictive transform. Those. bin array blocks 20 input 112 are predicted from previously encoded and reconstructed portions of the same bin array 20 or previously encoded and reconstructed other bin arrays that may precede or follow the current bin array 20 in presentation time. Prediction is performed by predictor 106. Subtractor 108 subtracts the prediction from such an original block, and transform stage 100 performs a two-dimensional transform of the prediction residuals. The 2D transform itself, or a subsequent measure in the transform stage 100, may result in quantization of the transform coefficients in blocks of transform coefficients. The quantized blocks of transform coefficients are losslessly encoded, for example, by entropy coding in entropy encoder 102, with the resulting data stream output at output 114. Inverse transform stage 104 reconstructs the quantized residual, and adder 110 in turn combines the reconstructed residual with the corresponding prediction for obtaining recovered bins of information 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, the corresponding motion data is inserted into the bitstream by the entropy encoder 114 to enable the decoding side to re-perform the prediction. The motion data for the image prediction block may include a syntax part including a syntax element representing a motion vector difference differentially encoding a motion vector for the current prediction block with respect to a motion vector predictor obtained, for example, by a predetermined method from neighboring motion vectors already encoded 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 bin array rather than its actual information bins. Those. according to the embodiment of FIG. 4, a sequence of syntax elements may be provided to an entropy encoder 102 for entropy encoding into a data stream 114. The sequence of syntax elements may contain syntax elements of motion vector differences for inter prediction blocks and syntax elements relating to a significance map indicating the positions of significant levels of transform coefficients, as well as syntax elements defining the significant levels of transform coefficients themselves for transformation blocks.

Необходимо отметить, что несколько альтернатив существует для варианта осуществления по фиг. 4, причем некоторые из них были описаны в вводной части описания изобретения, описание которых включено в описание фиг. 4 настоящего документа.It should be noted that several alternatives exist for the embodiment of FIG. 4, some of which have been 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 shows a decoder capable of decoding a data stream generated by the encoder of FIG. 4. The decoder of FIG. 5 includes an entropy decoder 150, an inverse transform stage 152, an adder 154, and a predictor 156. An entropy decoder 150, an inverse transform stage 152, and an adder 154 are connected in series between input 158 and output 160 of the decoder of FIG. 5 in that order. The other 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 input to the decoder of FIG. 5 at input 158, transform coefficient blocks, with an inverse transform being applied to the transform coefficient blocks at stage 152 to produce a residual signal. The residual signal is combined with the prediction from predictor 156 at summer 154 to obtain a reconstructed block of the reconstructed version of the bin array at output 160. Based on the reconstructed versions, predictor 156 generates predictions, thereby recovering the predictions made by encoder-side predictor 106. To obtain the same predictions as those used at the encoder side, the predictor 156 uses the prediction parameters that the entropy decoder 150 also receives from the data stream at the input 158.

Необходимо отметить, что в вышеописанных вариантах осуществления пространственная степень разбиения, с которой выполняется предсказание и преобразование остатка, не должна быть равной друг другу. Это показано на фиг. 2C. Эта фигура изображает подразделение для блоков предсказания степени разбиения предсказания сплошными линиями и степень разбиения остатка - пунктирными линиями. Как можно видеть, подразделения могут выбираться кодером независимо друг от друга. Более точно, синтаксис потока данных может учитывать определение подразделения остатка независимо от подразделения предсказания. Альтернативно, подразделение остатка может представлять собой расширение подразделения предсказания, так что каждый блок остатка или равен блоку предсказания или представляет собой надлежащее подмножество его. Это показано на фиг. 2a и фиг. 2b, например, где снова степень разбиения предсказания показана сплошными линиями и степень разбиения остатка - пунктирными линиями. Т.е. на фиг. 2a-2c все блоки, имеющие ссылочную позицию, ассоциированную с ними, будут блоками остатка, для которых будет выполняться одно двумерное преобразование, тогда как блоки со сплошными линиями большего размера, охватывающие блоки 40a с пунктирными линиями, например, будут блоками предсказания, для которых установка параметров предсказания выполняется индивидуально.It should be noted that in the above-described embodiments, the spatial division degree with which prediction and residual transformation 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 prediction split ratio with solid lines and the residual split ratio with dotted lines. As can be seen, the subdivisions may be independently selected by the encoder. More specifically, the dataflow syntax may allow for the definition of a residual division regardless of the prediction division. Alternatively, the residual division may be an extension of the prediction division such that each residual 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 splitting of the prediction is shown by solid lines and the degree of splitting of the residual is shown 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 transformation will be performed, while larger blocks with solid lines spanning blocks 40a with dotted lines, 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 common that a block (of residual bins or original bins) must be transformed at the encoder side into a block of transform coefficients, which in turn must be back-transformed into a reconstructed block of bins at the decoder side. This is shown in FIG. 6. FIG. 6 shows a bin block 200. In the case of FIG. 6, this block 200 is, by way of example, square and has 4×4 bins 202 in size. The bins 202 are regularly arranged in the horizontal x direction and in the vertical y direction. Through the aforementioned two-dimensional T transform, the block 200 is transformed into a spectral domain, namely, a block 204 of the transform coefficients 206, with the transform block 204 having the same size as the block 200. That is, transform block 204 has as many transform coefficients 206 as 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 the 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 an axis along which the spectral frequency in the horizontal direction is monotonically increases while the vertical axis corresponds to an axis along which the spatial frequency in the vertical direction increases monotonically, with the DC component conversion factor located at the corner—here, by way of example, the upper left corner—of the block 204, so that in the lower right corner is the conversion factor 206 corresponding to the highest frequency in both the horizontal and vertical directions. Neglecting the spatial direction, the spatial frequency to which a certain transform factor 206 belongs typically increases from the upper left corner to the lower right corner. Through the inverse transform T -1 , the transform block 204 is transferred from the spectral domain to the spatial domain to re-obtain a copy 208 of the block 200. If there is no introduction of 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 large 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 features in blocks 200 tend to lead to deviations in the retransformed 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, i.e. non-zero (quantized) transformation coefficients, i.e. levels, on the one hand, and the number of insignificant transform coefficients, on the other hand, can be reduced in large blocks compared to smaller blocks, thereby allowing better coding efficiency to be obtained. In other words, often significant levels of transform coefficients, i.e. transform coefficients not quantized to zero are rarely distributed over transform block 204. As a consequence, according to the embodiments described in more detail below, the positions of the significant levels of the transform coefficients are signaled in the data stream by a significance map. Apart from it, the values of the significant transformation coefficient, i.e. the levels of the transform coefficients in the case where the transform coefficients are quantized are transmitted in the data stream.

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

Другими словами, вышеупомянутое описание, имеющее дело главным образом с преобразованием мультимедийных данных, здесь, в качестве примера, видеоданные, в последовательность синтаксических элементов в соответствии с предварительно определенной синтаксической структурой, задающей некоторые типы синтаксических элементов, его семантикой и порядком среди них. Энтропийный кодер и энтропийный декодер по фиг. 4 и 5 может быть выполнен с возможностью работы, и может быть структурирован, как кратко изложено ниже. Они отвечают за выполнение преобразования между последовательностью синтаксических элементов и потоком данных, т.е. потоком символов или битов.In other words, the above description, dealing mainly with the transformation of multimedia data, here, as an example, video data, into a sequence of syntax elements in accordance with a predefined syntax structure defining some types of syntax elements, its semantics, and the order among them. The entropy encoder and entropy decoder of FIG. 4 and 5 may be made operable, and may be structured as summarized below. They are responsible for performing the transformation between the sequence of syntax elements and the data stream, i.e. 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 stream of syntax elements 301 into a set of two or more partial bitstreams 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. the type of the syntax element. As an example, the categories may define the type of a syntax element. In the context of hybrid video coding, a particular category may be associated with macroblock coding modes, block coding modes, reference picture indices, motion vector differences, division flags, coded block flags, quantization parameters, transform coefficient levels, and so on. In other applications, such as audio, speech, text, document, or conventional data encoding, different categorizations of syntax elements are possible.

Обычно, каждый синтаксический элемент может принимать значение конечного или счетно-бесконечного множества значений, где множество возможных значений синтаксического элемента может различаться для разных категорий синтаксических элементов. Например, имеются двоичные синтаксические элементы, а также целочисленные.Typically, each syntax element can take on the value of a finite or countably infinite set of values, where the set of possible values of a syntax element may differ for different categories of syntax 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 allow common design of encoding and decoding for different syntax elements and categories of syntax elements, the syntax elements 301 are converted into ordered binary decision sets, and these binary decisions 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 (or string or word) of bins 303. A bin sequence 303 represents a set of ordered binary solutions. Each bin 303 or binary decision may take one value out of a set of two values, such as one of the values 0 and 1. The binarization scheme may be different for different categories of syntax elements. The binarization scheme for a particular category of syntax elements may depend on the set of possible syntax element values and/or other properties of the syntax element for a particular category.

Таблица 1 иллюстрирует три примерные схемы бинаризации для счетно-бесконечных множеств. Схемы бинаризации для счетно-бесконечных множеств также могут применимы для конечных множеств значений синтаксических элементов. В частности для больших конечных множеств значений синтаксических элементов может быть незначительной неэффективность (являющаяся результатом неиспользованных последовательностей бинов), но универсальность таких схем бинаризации обеспечивает преимущество в смысле сложности и требований к памяти. Для малых конечных множеств значений синтаксических элементов часто бывает предпочтительным (в смысле эффективности кодирования) адаптировать схему бинаризации к количеству возможных значений символов.Table 1 illustrates three exemplary binarization schemes for countably infinite sets. Binarization schemes for countably infinite sets can also be applied to finite sets of values of syntactic elements. In particular, for large finite sets of syntax element values, there may be a slight 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 syntax element values, it is often preferable (in terms of coding efficiency) to adapt the binarization scheme to the number of possible character values.

Таблица 2 иллюстрирует три примерные схемы бинаризации для конечных множеств из 8 значений. Схемы бинаризации для конечных множеств могут быть выведены из универсальных схем бинаризации для счетно-бесконечных множеств посредством модифицирования некоторых последовательностей бинов таким образом, что конечные множества последовательностей бинов представляют код без избыточности (и потенциально переупорядочение последовательностей бинов). В качестве примера, схема усеченной унарной бинаризации в таблице 2 была создана посредством модифицирования последовательности бинов для синтаксического элемента 7 универсальной унарной бинаризации (см. таблицу 1). Усеченная и переупорядоченная экспоненциальная бинаризация Голомба порядка 0 в таблице 2 была создана посредством модифицирования последовательности бинов для синтаксического элемента 7 универсальной экспоненциальной бинаризации Голомба порядка 0 (см. таблица 1) и посредством переупорядочения последовательностей бинов (усеченная последовательность бинов для символа 7 была назначена символу 1). Для конечных множеств синтаксических элементов также возможно использование несистематических/неуниверсальных схем бинаризации, как приведено в качестве примера в последнем столбце таблицы 2.Table 2 illustrates three exemplary 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 a code without redundancy (and potentially reordering of sequences of bins). As an example, the truncated unary binarization scheme in Table 2 was created by modifying the bin sequence for syntax element 7 of the universal unary binarization (see Table 1). The truncated and reordered exponential Golomb 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 syntax elements, it is also possible to use non-systematic/non-universal binarization schemes, as given as an example in the last column of Table 2.

Figure 00000001
Figure 00000001

Figure 00000002
Figure 00000002

Каждый бин 303 последовательности бинов, создаваемых бинаризатором 302, подается в средство 304 назначения параметра в последовательном порядке. Средство назначения параметра назначает множество из одного или нескольких параметров каждому бину 303 и выводит бин с ассоциированным множеством параметров 305. Множество параметров определяется точно одинаковым образом в кодере и декодере. Множество параметров может состоять из одного или нескольких из следующих параметров:Each bin 303 of the sequence of bins generated by the binarizer 302 is provided 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 parameter set 305. The parameter set is defined in exactly the same way in the encoder and decoder. The parameter set 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 can be configured to assign a context model to the current bean 303 . 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 which current bean binarizes. 303 is the part and position of the current bin 303 in the last binarization. The selection of a context from among the available set of contexts may depend on the previous beans and the syntax elements associated with the last one. Each of these contexts has a probabilistic model associated with it, i.e. a measure for estimating the probability for one of the two possible bin values for the current bin. The probability model may in particular be a measure for estimating a probability for a less likely or more likely bin value for the current bin, the probability model being further defined by an identifier specifying which of the 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 probability model adaptation to adapt the probability models associated with different contexts with the actual bin statistics of the respective 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 follows, but the mode of operation of the parameter assigner 304 tends to be less complex in the LC mode, however, coding gain is increased in the high efficiency mode due to that the parameter assigner 304 causes the association of individual bins 310 to individual encoders 310 with bin statistics to be more closely adapted, thereby optimizing the entropy with respect to the LC mode.

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

В предпочтительном варианте осуществления изобретения селектор 306 буфера бинов не модифицирует значение бина, т.е. выводимый бин 307 всегда имеет одно и тоже значение, что и вводимый бин 305. В другом предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет значение 307 выводимого бина, основываясь на значении 305 вводимого бина и ассоциированной мере для оценки вероятности для одного из двух возможных значений бина для текущего бина. В предпочтительном варианте осуществления изобретения значение 307 выводимого бина устанавливается равным значению 305 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего бина меньше (или меньше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего бина больше или равна (или больше) конкретного порога, значение 307 выводимого бина модифицируется (т.е. устанавливается на противоположное значение значению вводимого бина). В другом предпочтительном варианте осуществления изобретения значение 307 выводимого бина устанавливается равным значению 305 вводимого бина, если мера для вероятности для одного из двух возможных значений бина для текущего бина больше (или больше или равна) конкретному порогу; если мера для вероятности для одного из двух возможных значений бина для текущего бина меньше или равна (или меньше) конкретному порогу, значение 307 выводимого бина модифицируется (т.е. устанавливается на противоположное значение значению вводимого бина). В предпочтительном варианте осуществления изобретения значение порога соответствует значению 0,5 для оцененной вероятности для обоих возможных значений бина.In the preferred embodiment, the bin buffer selector 306 does not modify the value of the bin, ie. 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 an associated measure to estimate the probability for one of 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 which of the two possible bin values represents the less likely or more likely bin value for the current bin. In the preferred embodiment of the invention, output bin value 307 is set equal to input bin value 305 if the identifier specifies that the first of two possible bin values represents the less likely (or more likely) bin value for the current bin, and output bin value 307 is modified (i.e., e. set to the opposite value of the input bin 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 the preferred embodiment, the bin buffer selector 306 determines the bin buffer 308 to which the output bin 307 is sent based on an associated measure to estimate the probability for one of the two possible bin values for the current bin. In a preferred embodiment of the invention, the set of possible values for the probability score 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 score for one of the two possible values. bin values, where different values for the measure to estimate the probability for one of the two possible bin values can 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 the two possible bin values is divided into multiple intervals, the bin buffer selector 306 determines the interval 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 can be associated with the same bin buffer 308. In a preferred embodiment of the invention, input bins 305 with opposite measures for the probability score for one of the two possible bin values (the opposite measure being those representing the P and 1-P probability scores) are fed into the same bin buffer 308. In another preferred embodiment of the invention, the association of a measure for estimating a probability for one of the two possible bin values for the current bin with a particular bin buffer is adapted over time, for example, to ensure that the generated partial bitstreams have similar bit rates. In addition, the interval index is also called the pipe index (probability interval division entropy), while the pipe index, together with the refinement index, and the flag indicating the more probable value of the bin, indexes the actual probability model, i.e. probability estimate.

В другом предпочтительном варианте осуществления изобретения селектор 306 буфера бинов определяет буфер 308 бинов, на который посылается выводимый бин 307, основываясь на ассоциированной мере для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина является конечным, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением оценки вероятности для менее вероятного или более вероятного значения бина, где разные значения для меры для оценки вероятности для менее вероятного или более вероятного значения бина могут ассоциироваться с одним и тем же буфером 308 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина разделяется на несколько интервалов, селектор 306 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для менее вероятного или более вероятного значения бина, и селектор 306 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 308 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 308 бинов. В другом предпочтительном варианте осуществления ассоциирование меры для оценки вероятности для менее вероятного или более вероятного значения бина для текущего бина с конкретным буфером бинов адаптируется во времени, например, чтобы гарантировать, что создаваемые частичные битовые потоки имеют подобные скорости передачи битов.In another preferred embodiment of the invention, the bin buffer selector 306 determines the bin buffer 308 to which the output bin 307 is sent based on the associated measure to estimate the probability for the less likely or more likely bin value for the current bin. In a preferred embodiment of the invention, the set of possible values for a measure to estimate a probability 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 a likely bin value, where different values for a measure for estimating a probability for a less likely or more likely bin value can 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 the less likely or more likely bin value is divided into multiple 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, the association of a measure for estimating a probability for 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 generated partial bitstreams have similar bit rates.

Каждый из двух или более буферов 308 бинов соединен с точно одним кодером 310 бинов, и каждый кодер бинов соединен только с одним буфером 308 бинов. Каждый кодер 310 бинов считывает бины из ассоциированного буфера 308 бинов и преобразует последовательность бинов 309 в кодовое слово 311, которое представляет последовательность битов. Буферы 308 бинов представляют буферы «первым пришел - первым обслужен»; бины, которые подаются позже (в последовательном порядке) в буфер 308 бинов, не кодируются перед бинами, которые подаются ранее (в последовательном порядке) в буфер бинов. Кодовые слова 311, которые представляют собой выходной результат конкретного кодера 310 бинов, записываются в конкретный частичный битовый поток 312. Общий алгоритм кодирования преобразует синтаксические элементы 301 в два или более частичных битовых потока 312, где количество частичных битовых потоков равно количеству буферов бинов и кодеров бинов. В предпочтительном варианте осуществления изобретения кодер 310 бинов преобразует изменяемое количество бинов 309 в кодовое слово 311 с изменяемым количеством битов. Одним преимуществом вышеупомянутых и ниже кратко изложенных вариантов осуществления изобретения является то, что кодирование бинов может выполняться параллельно (например, для разных групп мер вероятности), что уменьшает время обработки для нескольких реализаций.Each of the two or more bin buffers 308 is connected to exactly one bin encoder 310, and each bin encoder is connected to only one bin buffer 308. Each bin encoder 310 reads bins from an associated bin buffer 308 and converts a sequence of bins 309 into a codeword 311 that represents a sequence of bits. The bin buffers 308 represent first-come-first-served buffers; bins that are fed later (in sequential order) into the 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 the preferred embodiment of the invention, the bin encoder 310 converts the variable number of bins 309 into a codeword 311 with a variable number of bits. One advantage of the above and below summarized embodiments of the invention is that the encoding of the bins can be performed in parallel (eg, for different groups of probability measures), which reduces the 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 coding 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 coding algorithms (i.e., mapping bin sequences to codewords) for different groups of measures to estimate a 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 coding algorithms for different measure groups to estimate the probability for the less likely or more likely bin value for the current bin.

В предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности вводимых бинов 309 в кодовые слова 310. Такое отображение может быть эффективно реализовано и не требует сложного механизма арифметического кодирования. Обратное отображение кодовых слов в последовательности бинов (что выполняется в декодере) должно быть уникальным, чтобы гарантировать совершенное декодирование вводимой последовательности, но отображение последовательностей 309 бинов в кодовые слова 310 необязательно должно быть уникальным, т.е. возможно, что конкретная последовательность бинов может отображаться на более чем одну последовательность кодовых слов. В предпочтительном варианте осуществления изобретения отображение последовательностей вводимых бинов 309 в кодовые слова 310 является биективным. В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности переменной длины вводимых бинов 309 в кодовые слова 310 переменной длины. В предпочтительном варианте осуществления изобретения выводимые кодовые слова представляют коды без избыточности, такие как общие коды Хаффмана или канонические коды Хаффмана.In the preferred embodiment, the 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 a mapping can be efficiently implemented and does not require a complex arithmetic encoding mechanism. The reverse mapping of codewords to bin sequences (which is done in 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. it is possible that a particular bin sequence may map to more than one codeword sequence. In the preferred embodiment of the invention, the mapping of input bin sequences 309 to codewords 310 is bijective. In another preferred embodiment of the invention, the bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map variable length sequences of input bins 309 into variable length codewords 310. In a preferred embodiment of the invention, the output codewords represent non-redundant codes such as generic Huffman codes or canonical Huffman codes.

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

Figure 00000003
Figure 00000003

Figure 00000004
Figure 00000004

В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности переменной длины вводимых бинов 309 в кодовые слова 310 фиксированной длины. В другом предпочтительном варианте осуществления изобретения кодеры 310 бинов - или один или несколько из кодеров бинов - представляют энтропийные кодеры, которые прямо отображают последовательности фиксированной длины вводимых бинов 309 в кодовые слова 310 переменной длины.In another preferred embodiment of the invention, the bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map variable length sequences of input bins 309 into fixed length codewords 310. In another preferred embodiment of the invention, the bin encoders 310—or one or more of the bin encoders—are entropy encoders that directly map fixed length sequences of input bins 309 into 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 basically the inverse of the encoder, so that the (previously encoded) sequence of syntax elements 327 is decoded from a set of two or more partial bitstreams 324. The decoder includes two different processing streams: a stream for requesting data, which repeats the encoder data stream, and the data stream that represents the reverse of the encoder data stream. In the illustration in FIG. 8, dashed arrows represent the data request flow, while solid arrows represent the data flow. The building blocks of the decoder basically repeat the building blocks of the encoder, but implement the reverse operations.

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

Бинаризатор 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 bin request that is sent to parameter assigner 316 by binarizer 314, binarizer 314 receives decoded bin 326 from bin buffer selector 318 . The binarizer 314 compares the received sequence of decoded bins 326 with those of the particular binarization scheme binarization for the requested syntax element, and if the received sequence of decoded bins 26 matches the binarization of the syntax element, the binarizer releases its bin buffer and outputs the decodable syntax element as the final response to the request for a new one. decoded character. If the already received decodable bin sequence does not match any of the binarization scheme bin sequences for the requested syntax element, the binarizer sends another bin request to the parameter assigner until the decodable bin sequence matches one of the binarization scheme bin sequences for the requested syntax element. syntax 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 syntax elements may depend on the set of possible values of the syntax element and/or other properties of the syntax elements for the 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 parameter set to the bin buffer selector. The parameter set 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 set of parameters may consist of one or more parameters, which are mentioned in the description of the encoder in FIG. 7.

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

Средство 316 назначения параметра может определять одну или несколько из вышеупомянутых мер вероятности (мера для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина, мера для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина, идентификатор, задающий оценку, какое из двух возможных значений бина представляет менее вероятное или более вероятное значение бина для текущего запрашиваемого бина), основываясь на множестве из одного или нескольких уже декодированных символов. Определение мер вероятности для конкретного запроса бина повторяет процесс в кодере для соответствующего бина. Декодированные символы, которые используются для определения мер вероятности, могут включать в себя один или несколько уже декодированных символов этой же категории символов, один или несколько уже декодированных символов этой же категории символов, которая соответствует множествам данных (таким как блоки или группы элементов дискретизации) соседних пространственных и/или временных расположений (в отношении множества данных, ассоциированного с текущим запросом синтаксического элемента), или один или несколько уже декодированных символов разных категорий символов, которые соответствуют множествам данных этого же и/или соседних пространственных и/или временных расположений (в отношении к множеству данных, ассоциированному с текущим запросом синтаксического элемента).The parameter assigner 316 may determine one or more of the above probability measures (a measure for estimating a probability for one of the two possible bin values for the current requested bin, a measure for estimating a probability for a less likely or more likely bin value for the current requested bin, an identifier specifying judging which of the two possible bin values represents the less likely or more likely bin value for the currently requested bin) based on the set of one or more already decoded symbols. Determining the probability measures for a particular bin request 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 neighboring spatial and/or temporal locations (in relation to the data set associated with the current syntax element request), or one or more already decoded symbols of different character categories that correspond to data sets of the same and/or neighboring spatial and/or temporal locations (in relation 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 bin request with an associated parameter set 317, which is the output of the parameter assigner 316, is applied to a bin buffer selector 318 . Based on the associated parameter set 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 bean 325 is potentially modified, and the decoded output bean 326—with the potentially modified value—is sent to the binarizer 314 as the final response to the bean request with the associated parameter set 317.

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

В предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет буфер 320 бинов, на который посылается запрос бина 319, основываясь на ассоциированной мере для оценки вероятности для одного из двух возможных значений бина для текущего запрашиваемого бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для одного из двух возможных значений бина является конечным, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением оценки вероятности для одного из двух возможных значений бина, где разные значения для меры для оценки вероятности для одного из двух возможных значений бина могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для одного из двух возможных значений бина разделяется на несколько интервалов, селектор 318 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для одного из двух возможных значений бина, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 320 бинов. В предпочтительном варианте осуществления изобретения запросы бинов 317 с противоположными мерами для оценки вероятности для одного из двух возможных значений бина (противоположной мерой являются те, которые представляют оценки P и 1-P вероятности) направляются одному и тому же буферу 320 бинов. В другом предпочтительном варианте осуществления изобретения ассоциирование меры для оценки вероятности для одного из двух возможных значений бина для текущего запроса бина с конкретным буфером бинов адаптируется во времени.In the preferred embodiment, the bin buffer selector 318 determines the bin buffer 320 to which the bin request 319 is sent based on the associated measure to estimate the probability for one of the two possible bin values for the currently requested bin. In a preferred embodiment of the invention, the set of possible values for a measure for a probability score 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 score value for one of the two possible values. bin, where different values for the measure to estimate the probability for one of the two possible values of the bin can be associated with the same buffer 320 bins. In another preferred embodiment of the invention, the range of possible values for the probability measure for one of the two possible bin values is divided into multiple intervals, the bin buffer selector 318 determines the interval 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 may be associated with the same bin buffer 320. In a preferred embodiment of the invention, requests for bins 317 with opposite measures for a probability score for one of two possible bin values (the opposite measure being those representing the P and 1-P probability scores) are sent to the same bin buffer 320. In another preferred embodiment of the invention, the association of a measure for estimating a probability for one of the two possible bin values for the current bin request with a particular bin buffer is adapted over time.

В другом предпочтительном варианте осуществления изобретения селектор 318 буфера бинов определяет буфер 320 бинов, на который посылается запрос бина 319, основываясь на ассоциированной мере для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина. В предпочтительном варианте осуществления изобретения множество возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина является конечным, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением оценки вероятности для менее вероятного или более вероятного значения бина, где разные значения для меры для оценки вероятности для менее вероятного или более вероятного значения бина могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения диапазон возможных значений для меры для оценки вероятности для менее вероятного или более вероятного значения бина разделяется на несколько интервалов, селектор 318 буфера бинов определяет индекс интервала для текущей меры для оценки вероятности для менее вероятного или более вероятного значения бина, и селектор 318 буфера бинов содержит таблицу, которая ассоциирует точно один буфер 320 бинов с каждым возможным значением для индекса интервала, где разные значения для индекса интервала могут ассоциироваться с одним и тем же буфером 320 бинов. В другом предпочтительном варианте осуществления изобретения ассоциирование меры для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запроса бина с конкретным буфером бинов адаптируется во времени.In another preferred embodiment of the invention, the bin buffer selector 318 determines the bin buffer 320 to which the bin request 319 is sent, based on the associated measure for estimating the probability for the less likely or more likely bin value for the current requested bin. In a preferred embodiment of the invention, the set of possible values for a measure to estimate a probability 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 a likely bin value, where different values for a measure for estimating a probability for a less likely or more likely bin value can be associated with the same bin buffer 320 . In another preferred embodiment of the invention, the range of possible values for the probability score measure for the less likely or more likely bin value is divided into multiple bins, the bin buffer selector 318 determines the bin index for the current probability score 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 can be associated with the same bin buffer 320. In another preferred embodiment of the invention, the association of a probability measure for a less likely or more likely bin value for the current bin request with a particular bin buffer is time-adaptive.

После приема декодированного бина 325 от выбранного буфера 320 бинов селектор 318 буфера бинов потенциально модифицирует вводимый бин 325 и посылает выводимый бин 326 - с потенциально модифицированным значением - бинаризатору 314. Отображение вводимого/выводимого бина селектора 318 буфера бинов представляет собой обратное отображению вводимого/выводимого бина селектора буфера бинов на стороне кодера.Upon receipt of 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 reverse 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, the bin buffer selector 318 does not modify the value of the bin, ie. 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 to estimate the probability for one of two possible bin values. for the current requested bean that is associated with the bean request 317. In a preferred embodiment of the invention, output bean value 326 is set equal to input bin value 325 if the measure for the probability for one of the two possible bin values for the current bean 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 request 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). In another preferred embodiment of the invention, output bin value 326 is set equal to 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). 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 bin buffer selector 318 determines the output bin value 326 based on the input bin value 325 and an identifier specifying which of the two possible bin values represents the less likely or more likely bin value for the current bin request that is associated with bean request 317. In the preferred embodiment of the invention, output bin value 326 is set to input bin value 325 if the identifier specifies that the first of two possible bin values represents the less likely (or more likely) bin value for the current bean request, and output bin value 326 the bean is modified (ie, set to the opposite value of the input bean) if the identifier specifies that the second of the 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 . The bin buffers 20 represent a first-come-first-served buffer to which sequences of decoded bins 321 are fed from connected bin decoders 322. In response to the bin request 319 that is sent to the bin buffer 320 from the bin buffer selector 318, the bin buffer 320 removes the bin from its contents that was first submitted to the bin buffer 320 and sends it to the bin buffer selector 318. The bins that were previously sent to the bin buffer 320 are previously removed and sent to the bin buffer selector 318 .

Каждый из двух или более буферов 320 бинов соединен с точно одним декодером 322 бинов, и каждый декодер бинов соединен только с одним буфером 320 бинов. Каждый декодер 322 бинов считывает кодовые слова 323, которые представляют последовательности битов, из отдельного частичного битового потока 324. Декодер бинов преобразует кодовое слово 323 в последовательность бинов 321, которая посылается на подсоединенный буфер 320 бинов. Общий алгоритм декодирования преобразует два или более частичных битовых потока 324 в несколько декодированных синтаксических элементов, где количество частичных битовых потоков равно количеству буферов бинов и декодеров бинов, и декодирование синтаксических элементов запускается запросами новых синтаксических элементов. В предпочтительном варианте осуществления изобретения декодер 322 бинов преобразует кодовые слова 323 с переменным количеством битов в последовательность переменного количества бинов 321. Одним преимуществом вариантов осуществления изобретения является то, что декодирование бинов из двух или более частичных битовых потоков может выполняться параллельно (например, для разных групп мер вероятности), что уменьшает время обработки для нескольких реализаций.Each of the two or more bin buffers 320 is connected to exactly one bin decoder 322, and each bin decoder is connected to only one bin buffer 320. Each bin decoder 322 reads codewords 323, which represent sequences of bits, from a separate partial bitstream 324. The bin decoder converts codeword 323 into a sequence of bins 321, which is sent to the attached bin buffer 320. The 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 syntax element decoding is triggered by requests for new syntax elements. In a preferred embodiment of the invention, a bin decoder 322 converts variable-bit codewords 323 into a variable-bit-number sequence 321. probability measures), which reduces the processing time for several implementations.

Другим преимуществом вариантов осуществления изобретения является то, что декодирование бинов, которое выполняется декодерами 322 бинов, может быть специально разработано для разных множеств параметров 317. В частности, кодирование и декодирование бинов может оптимизироваться (в смысле эффективности и/или сложности кодирования) для разных групп оцениваемых вероятностей. С одной стороны, это позволяет уменьшить сложность кодирования/декодирования относительно современных алгоритмов энтропийного кодирования с подобной эффективностью кодирования. С другой стороны, это позволяет улучшить эффективность кодирования относительно современных алгоритмов энтропийного кодирования с подобной сложностью кодирования/декодирования. В предпочтительном варианте осуществления изобретения декодеры 322 бинов реализуют разные алгоритмы декодирования (т.е. отображение последовательностей бинов в кодовые слова) для разных групп мер для оценки вероятности для одного из двух возможных значений 317 бина для текущего запроса бина. В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов реализуют разные алгоритмы декодирования для разных групп мер для оценки вероятности для менее вероятного или более вероятного значения бина для текущего запрашиваемого бина.Another advantage of embodiments of the invention is that the bin decoding that is performed by the bin decoders 322 can be specifically designed for different parameter sets 317. In particular, bin encoding and decoding can be optimized (in terms of coding efficiency and/or complexity) for different groups. estimated probabilities. On the one hand, this makes it possible to reduce the coding/decoding complexity relative to modern entropy coding algorithms with similar coding efficiency. On the other hand, this improves 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 (i.e., mapping bin sequences to codewords) for different measure groups 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 measure groups to estimate the probability for the less likely or more likely bin value for the currently requested bin.

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

В предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 в последовательности бинов 321. Такое отображение может быть эффективно реализовано и не требует сложного механизма арифметического кодирования. Отображение кодовых слов в последовательности бинов должно быть уникальным. В предпочтительном варианте осуществления изобретения отображение кодовых слов 323 в последовательности бинов 321 является биективным. В другом предпочтительном варианте осуществления изобретения декодеры 310 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 переменной длины в последовательности переменной длины бинов 321. В предпочтительном варианте осуществления изобретения вводимые кодовые слова представляют коды без избыточности, такие как общие коды Хаффмана или канонические коды Хаффмана. Два примера для биективного отображения кодов без избыточности в последовательности бинов приведены в таблице 3.In the preferred embodiment, the 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 bin sequence must be unique. In the preferred embodiment of the invention, the mapping of codewords 323 to bin sequence 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 to a variable length sequence of bins 321. In a preferred embodiment of the invention, the input codewords represent codes without redundancy, such as general Huffman codes or canonical Huffman codes. Two examples for bijective mapping of codes without redundancy in a sequence of bins are given in Table 3.

В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 фиксированной длины на последовательности переменной длины бинов 321. В другом предпочтительном варианте осуществления изобретения декодеры 322 бинов - или один или несколько из декодеров бинов - представляют энтропийные декодеры, которые прямо отображают кодовые слова 323 переменной длины на последовательности фиксированной длины бинов 321.In another preferred embodiment of the invention, bin decoders 322—or one or more of the bin decoders—are entropy decoders that directly map fixed-length codewords 323 to variable-length sequences of bins 321. In another preferred embodiment, bin decoders 322 are either one or several of the bin decoders are entropy decoders that directly map variable length codewords 323 onto sequences of fixed length 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 show an embodiment for an encoder to encode the 3 symbol sequence and a decoder to recover them. The encoder includes assigner 304 configured to assign multiple parameters 305 to each character of a character 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 derived from the history of the previous syntax elements 1 and symbols 3. In addition, the encoder contains a plurality of entropy encoders 10, each of which is configured to convert symbols 3, sent to the corresponding entropy encoder, into the corresponding bitstream 312, and a selector 306 configured to direct each symbol 3 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 3. The assigner 304 may be considered to be integrated into the selector 206 to obtain with the corresponding 502 selector.

Декодер для восстановления последовательности символов содержит множество энтропийных декодеров 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 recovery decoder comprises a plurality of entropy decoders 322, each of which is configured to convert a respective bitstream 323 into symbols 321; assignment means 316, configured to assign multiple parameters 317 to each character 315 of the character sequence to be recovered based on information contained in previously recovered characters of the character sequence (see 326 and 327 in FIG. 8); and a selector 318 for extracting each symbol from the symbol sequence to be recovered from a selected one of the 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 contains, or is, a measure for estimating a probability distribution among the possible symbol values that the corresponding symbol can take. Again, assigner 316 and selector 318 may be considered to be integrated into one block, selector 402. The sequence of characters to be recovered may be a binary alphabet, and assigner 316 may be configured such that the probability distribution estimate consists of a measure for estimating the probability a less likely or more likely bin value of the two possible binary alphabet bin values; and an identifier specifying an estimate of 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 character sequence to be recovered 315 based on information contained in previously recovered symbols of the character 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 the previously recovered symbols to which the corresponding context is assigned. The context may take into account the spatial dependence or proximity of the positions to which the syntactic elements belong, such as in video or image coding, or even in tables, in the case of financial applications. Then, a measure for estimating a probability distribution for each symbol may be determined based on an estimate of a probability distribution associated with the context assigned to the corresponding symbol, for example, by quantization, or using as an index in the corresponding table, an estimate of the probability distribution associated with the context assigned with the corresponding symbol (in later embodiments, indexed by a pipe index along with a refinement index), to one of the plurality of probability distribution estimation representatives (cutting out the refinement index) to obtain a measure for estimating the probability distribution (pipe index indexes partial bitstream 312). The selector may be configured such that a bijective association is determined between a plurality of entropy encoders and a plurality of representatives of the probability distribution estimate. The selector 18 may be configured to time-vary a quantization mapping from a range of probability distribution estimates to a plurality of probability distribution estimate representatives in a predetermined manner depending on previously recovered symbols of the symbol sequence. Those. selector 318 may change the quantization step sizes, i. e. intervals of probability distributions mapped to 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 factor for some probability distribution estimate within the corresponding probability distribution estimate quantization interval, and may change its codeword/symbol sequence mapping to adapt the position of that certain probability distribution estimate within the corresponding probability distribution estimate quantization interval as the latter changes to be optimized. The selector may be configured to change the quantization mapping so that the rates at which symbols are extracted from multiple entropy decoders are made less dispersed. With regard to the binarizer 314, it is noted that it can 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 syntax elements

В предпочтительном варианте осуществления изобретения кодирование и декодирование выполняется для конечного множества синтаксических элементов. Часто кодируется некоторое количество данных, такое как неподвижное изображение, кадр или поле видеопоследовательности, слайс изображения, слайс кадра или поля видеопоследовательности или множество последовательных элементов дискретизации аудио и т.д. Для конечных множеств синтаксических элементов, как правило, частичные битовые потоки, которые создаются на стороне кодера, должны завершаться, т.е. необходимо гарантировать, что все синтаксические элементы могут декодироваться из передаваемых или хранимых частичных битовых потоков. После того как последний бин будет вставлен в соответствующий буфер 308 бинов, кодер 310 бинов должен гарантировать, что полное кодовое слово записывается в частичный битовый поток 312. Если кодер 310 бинов представляет энтропийный кодер, который реализует прямое отображение последовательностей бинов в кодовые слова, последовательность бинов, которая сохраняется в буфере бинов после записи последнего бина в буфер бинов, может не представлять последовательность бинов, которая ассоциируется с кодовым словом (т.е. она может представлять префикс двух или более последовательностей бинов, которые ассоциируются с кодовыми словами). В таком случае, любое из кодовых слов, ассоциированное с последовательностью бинов, которая содержит последовательность бинов в буфере бинов в качестве префикса, должна записываться в частичный битовый поток (буфер бинов должен быть очищен). Это может выполняться посредством вставки бинов с конкретным или произвольным значением в буфер бинов до тех пор, пока не будет записано кодовое слово. В предпочтительном варианте осуществления изобретения кодер бинов выбирает одно из кодовых слов с минимальной длиной (в дополнение к свойству, что ассоциированная последовательность бинов должна содержать последовательность бинов в буфере бинов в качестве префикса). На стороне декодера декодер 322 бинов может декодировать больше бинов, чем требуется для последнего кодового слова в частичном битовом потоке; эти бины не запрашиваются селектором 318 буфера бинов и отбрасываются и игнорируются. Декодирование конечного множества символов управляется запросами декодируемых синтаксических элементов; если не запрашивается дальнейший синтаксический элемент для количества данных, декодирование завершается.In a preferred embodiment of the invention, encoding and decoding is performed on a finite set of syntax elements. Often, some amount of data is encoded, such as a still picture, a frame or field of a video sequence, an image slice, a slice of a frame or fields of a video sequence, or a plurality of consecutive audio bins, and so on. For finite sets of syntax elements, as a rule, partial bitstreams that are created on the encoder side must terminate, i.e. it is necessary to ensure that all syntax elements can be decoded from transmitted or stored partial bitstreams. After the last bin has been inserted into the corresponding bin buffer 308, the bin encoder 310 must ensure that the complete codeword is written to the partial bitstream 312. , which is stored in the bin buffer after the last bin is written to the bin buffer, may not represent a bin sequence that is associated with a codeword (ie, it may represent a prefix of two or more bin sequences that are associated with codewords). In such a case, any of the codewords associated with a bin sequence that contains the bin sequence 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 minimum length codewords (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 may decode more bins than required for the last codeword in the partial bitstream; these bins are not requested by the bin buffer selector 318 and are discarded and ignored. The decoding of a finite set of characters is driven by requests for decoded syntax elements; if no further syntax element is requested for the amount of data, decoding ends.

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

Частичные битовые потоки 312, которые создаются кодером, могут передаваться отдельно, или они могут мультиплексироваться в единственный битовый поток, или кодовые слова частичных битовых потоков могут перемежаться в единственном битовом потоке.The partial bitstreams 312 that are generated 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 in a single bitstream.

В варианте осуществления изобретения каждый частичный битовый поток для некоторого количества данных записывается в один пакет данных. Количество данных может представлять собой произвольное множество синтаксических элементов, такое как неподвижное изображение, поле или кадр видеопоследовательности, слайс неподвижного изображения, слайс поля или кадра видеопоследовательности, или кадр элементов дискретизации аудио, и т.д.In an embodiment of the invention, each partial bit stream for a certain amount of data is recorded in one data packet. The amount of data may be an arbitrary set of syntax elements, such as a still picture, a field or frame of a video sequence, a slice of a still picture, a slice of a field or frame of a video sequence, or a frame of audio bins, and so on.

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

Пакет 400 данных состоит из заголовка и одного раздела для данных каждого частичного битового потока (для рассматриваемого количества данных). Заголовок 400 пакета данных содержит указания для разделения (остальной части) пакета данных на сегменты данных 402 битового потока. Кроме указаний для разделения заголовок может содержать дополнительную информацию. В предпочтительном варианте осуществления изобретения указания для разделения пакета данных представляют собой расположения начала сегментов данных в единицах битов или байтов или кратных битам или кратным байтам. В предпочтительном варианте осуществления изобретения расположения начала сегментов данных кодируются в виде абсолютных значений в заголовке пакета данных, или относительно начала пакета данных, или относительно конца заголовка, или относительно начала предыдущего пакета данных. В другом предпочтительном варианте осуществления изобретения расположения начала сегментов данных кодируются дифференцированно, т.е. кодируется только разность между фактическим началом сегмента данных и предсказанием для начала сегмента данных. Предсказание может выводиться на основе уже известной или переданной информации, такой как общий размер пакета данных, размер заголовка, количество сегментов данных в пакете данных, расположение начала предшествующих сегментов данных. В предпочтительном варианте осуществления изобретения расположение начала первого пакета данных не кодируется, но выводится на основе размера заголовка пакета данных. На стороне декодера переданные указания о разделах используются для выведения начала сегментов данных. Сегменты данных затем используются в качестве частичных битовых потоков, и данные, содержащиеся в сегментах данных, подаются в соответствующие декодеры бинов в последовательном порядке.The data packet 400 consists of a header and one section for the data of each partial bitstream (for the amount of data in question). The header 400 of the data packet contains instructions for dividing the (remainder) of the data packet into data segments 402 of the bitstream. In addition to splitting instructions, the header may contain additional information. In a preferred embodiment of the invention, the indications for splitting a data packet are the locations of the start 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 beginning of the data segments are encoded as absolute values in the header of the data packet, or relative to the beginning 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 locations of the start 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 already known or transmitted information, 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 the preceding 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 header of the data packet. On the decoder side, the transmitted section indications are used to deduce the start of data segments. The data segments are then used as partial bit streams, and the data contained in the data segments are fed to the respective 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, which may reduce the side information required, in particular for cases in which the sizes of the partial streams are very similar, is depicted in FIG. 10. The payload of the data packet, 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 with the first part of the partial bitstream 413. If the partial bitstream is larger than the associated data segment, its remainder 414 is placed in unused space at the end of the other data segments. This can be done in such a way that the rest of the bit stream is inserted in reverse order (starting from the end of the data segment), which reduces the extra information. Associating the remaining portions of 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 shall be signaled within the bitstream, eg in the header of the data packet.

Перемежение кодовых слов переменной длиныVariable length codeword interleaving

Для некоторых применений вышеописанное мультиплексирование частичных битовых потоков (для некоторого количества синтаксических элементов) в одном пакете данных может иметь следующие недостатки: С одной стороны, для малых пакетов данных количество битов для дополнительной информации, которая требуется для сигнализации разделения, может стать существенным относительно фактических данных в частичных битовых потоках, что, в конце концов, уменьшает эффективность кодирования. С другой стороны, мультиплексирование может не быть подходящим для применений, которые требуют низкой задержки (например, для приложений видеоконференции). С описанным мультиплексированием кодер не может начать передачу пакета данных, перед тем как не будут полностью созданы частичные битовые потоки, так как прежде неизвестны расположения начала разделов. Кроме того, как правило, декодеру приходится ожидать до тех пор, пока он не примет начало последнего сегмента данных, перед тем как он сможет начать декодирование пакета данных. Для применений в качестве систем видеоконференции эти задержки могут добавлять к дополнительной общей задержке системы нескольких изображений (в частности, для скоростей передачи битов, которые близки к скорости передачи битов и для кодеров/декодеров, которые требуют чуть ли не временной интервал между двумя изображениями для кодирования/декодирования изображения), что является критичным для таких приложений. Чтобы преодолеть недостатки для некоторых применений, кодер предпочтительного варианта осуществления изобретения может быть выполнен таким образом, что кодовые слова, которые генерируются двумя или более кодерами бинов, перемежаются в единственный битовый поток. Битовый поток с перемежаемыми кодовыми словами может непосредственно посылаться декодеру (при игнорировании малой задержки буфера, см. ниже). На стороне декодера два или более декодеров бинов считывают кодовые слова непосредственно из битового потока в порядке декодирования; декодирование может начинаться с первым принятым битом. Кроме того, не требуется никакая дополнительная информация для сигнализации мультиплексирования (или перемежения) частичных битовых потоков. Другой путь уменьшения сложности декодера может достигаться тогда, когда декодеры 322 бинов не считывают кодовые слова переменной длины из глобального буфера битов, но, вместо этого, они всегда считывают последовательности фиксированной длины битов из глобального буфера битов и добавляют эти последовательности фиксированной длины битов в локальный буфер битов, где каждый декодер 322 бинов соединен с отдельным локальным буфером битов. Кодовые слова переменной длины затем считываются из локального буфера битов. Следовательно, синтаксический анализ кодовых слов переменной длины может выполняться параллельно, только доступ к последовательностям фиксированной длины битов должен выполняться синхронизированным образом, но такой доступ к последовательностям фиксированной длины битов обычно является очень быстрым, так что общая сложность декодирования может быть уменьшена для некоторых архитектур. Фиксированное количество бинов, которые посылаются в конкретный локальный буфер битов, может быть разным для разных локальных буферов битов, и оно также может изменяться во времени в зависимости от некоторых параметров, таких как события в декодере бинов, буфере бинов или буфере битов. Однако количество битов, которые считываются посредством конкретного доступа, не зависит от фактических битов, которые считываются во время конкретного доступа, что представляет собой важное отличие от считывания кодовых слов переменной длины. Считывание последовательностей фиксированной длины битов запускается некоторыми событиями в буферах бинов, декодерах бинов или локальных буферах битов. В качестве примера, возможно выполнять запрос считывания новой последовательности фиксированной длины битов, когда количество битов, которые присутствуют в подсоединенном буфере битов, падает ниже заданного порога, когда разные пороговые значения могут использоваться для разных буферов битов. В кодере необходимо гарантировать, что последовательности фиксированной длины бинов вставляются в том же порядке в битовый поток, в котором они считываются из битового потока на стороне декодера. Также является возможным объединение этого перемежения последовательностей фиксированной длины с управлением с малой задержкой, подобно тем, которые описаны выше. Ниже описывается предпочтительный вариант осуществления для перемежения последовательностей фиксированной длины битов. В отношении дополнительных подробностей, касающихся последних схем перемежения, ссылка делается на WO2011/128268A1.For some applications, the above described multiplexing of partial bitstreams (for a certain number of syntax elements) in one data packet may have the following disadvantages: in partial bitstreams, which ultimately reduces the coding efficiency. On the other hand, multiplexing may not be suitable for applications that require low latency (eg video conferencing applications). With the described multiplexing, the encoder cannot start transmitting a data packet before the partial bitstreams have been completely created, since the locations of the beginning of the sections are not known beforehand. Also, a decoder typically has to wait until it receives the start of the last data segment before it can start decoding a data packet. For videoconferencing applications, these delays can add to the additional overall multi-picture system delay (particularly for bit rates that are close to the bit rate and for encoders/decoders that require almost the time interval between two pictures to encode). /image decoding), which is critical for such applications. To overcome disadvantages for some applications, the encoder of the 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 bitstream. The bitstream with interleaved codewords can be directly sent to the decoder (ignoring the small buffer delay, see below). On the decoder side, two or more bin decoders read codewords directly from the bitstream in decoding order; decoding may start with the first received bit. In addition, no additional information is required for signaling the multiplexing (or interleaving) of partial bitstreams. Another way to reduce decoder complexity can be achieved when 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 bin decoder 322 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 performed in parallel, only access to fixed length bit sequences must be performed in a synchronized manner, but such access to fixed length bit sequences is usually very fast, so that 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 during 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 fixed-length bit sequences is triggered by some events in bin buffers, bin decoders, or local bit buffers. As an example, it is possible to perform a read request for a new fixed length bit sequence when the number of bits that are present in the attached bit buffer falls below a predetermined 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 in the bitstream as they are read from the bitstream at the decoder side. It is also possible to combine this interleaving of fixed length sequences with low latency control like those described above. The preferred embodiment for interleaving fixed bit length sequences is described below. For additional details regarding the latest interleaving schemes, reference is made to WO2011/128268A1.

После описания вариантов осуществления, согласно которым даже ранее кодирование используется для сжатия видеоданных, описывается в качестве еще другого варианта осуществления для реализации вариантов осуществления настоящего изобретения, которое изображает реализацию, особенно эффективную в смысле хорошего компромисса между коэффициентом сжатия, с одной стороны, и таблицей поиска и издержками вычисления, с другой стороны. В частности, нижеследующие варианты осуществления позволяют использовать менее сложные в смысле вычисления коды переменной длины для энтропийного кодирования индивидуальных битовых потоков, и эффективно закрывают части оценки вероятности. В вариантах осуществления, описанных ниже, символы являются двоичной природы, и коды VLC (коды переменной длины), представленные ниже, эффективно закрывают оценку вероятности, представленную, например, посредством RLPS (наименее вероятный символ), проходящего в пределах [0; 0,5].After describing embodiments according to which, even before, encoding is used to compress video data, is described as yet another embodiment for implementing embodiments of the present invention, which shows an implementation particularly efficient 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 coding of individual bitstreams, and effectively cover parts of the probability estimate. In the embodiments described below, the symbols are of a binary nature, and the VLCs (Variable Length Codes) below effectively close the probability estimate represented by, for example, R LPS (Least Likely 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 the individual entropy encoders 310 and decoders 322 in FIG. 7-17 respectively. They are suitable for encoding beans, i.e. binary characters as they occur in image or video compression applications. Therefore, these embodiments are also applicable to image or video coding, where such binary symbols are split into one or more bin streams 307 to be encoded and bitstreams 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 the bin streams. A v2v code can be thought of as two unprefixed codes with the same number of codewords. Primary and secondary unprefixed code. Each codeword of the primary unprefixed code is associated with one codeword of the secondary unprefixed code. In accordance with the embodiments described below, at least some of the encoders 310 and decoders 322 operate as follows: bitstream 312. The same procedure is used to decode such bitstream 324, but the primary and secondary unprefixed codes are reversed. Those. to decode bitstream 324, whenever a codeword of the secondary unprefix code is read from the corresponding bitstream 324, the corresponding codeword of the primary unprefix code is written to buffer 320.

Полезно, что коды, описанные ниже, не требуют таблиц поиска. Коды являются реализуемыми в виде конечных автоматов. v2v-коды, представленные здесь, могут генерироваться простыми правилами построения, такими как, что нет необходимости сохранять большие таблицы для кодовых слов. Вместо этого, простой алгоритм может использоваться для выполнения кодирования или декодирования. Ниже описываются три правила построения, где два из них могут параметризоваться. Они закрывают разные или даже непересекающиеся части вышеупомянутого интервала вероятностей и, следовательно, являются особенно полезными, если используются вместе, например, все три кода параллельно (каждый для разных кодеров/декодеров 11 и 22) или два из них. С описанными ниже правилами построения является возможным разрабатывать набор v2v-кодов, так что для процессов Бернулли с произвольной вероятностью p, один из кодов хорошо работает в отношении избыточной длины кода.Usefully, the codes described below do not require lookup tables. The codes are realizable as state machines. The v2v codes presented here can be generated with simple construction rules, such as that there is no need to maintain large tables for codewords. Instead, a simple algorithm may 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 aforementioned 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 develop a set of v2v codes such that, for Bernoulli processes with an 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 for each stream, or in an interleaved manner. This, however, is not specific to the v2v code classes presented, and therefore, only the encoding and decoding of a particular codeword is described for each of the three construction rules in the following. However, it is emphasized that all of the aforementioned embodiments regarding interleaved solutions are also suitable for combination 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-кода он использует беспрефиксный код в качестве первичного и вторичного кода, но меняются местами два кодовых слова вторичного беспрефиксного кода. Это означает, что за исключением двух кодовых слов бины записываются в битовый поток неизменными. С этим методом необходимо сохранять только один беспрефиксный код вместе с информацией, какие два кодовых слова меняются местами, и, таким образом, уменьшается потребление памяти. Отметьте, что это имеет смысл только для перестановки кодовых слов разной длины, так как, в противном случае, битовый поток будет иметь такую же длину, что и поток бинов (не учитывая эффекты, которые могут иметь место в конце потока бинов).The entropy codes for the division of the probability interval (pipe) of unary bins 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 belonging to some probability sub-interval of the aforementioned probability range [0; 0.5]. First, the construction of pipe bean codes is described. A bean pipe code can be built from any unprefixed code with at least three codewords. To form a v2v code, it uses an unprefixed code as a primary and secondary code, but swaps two codewords of the secondary unprefixed code. This means that, except for two codewords, the bins are written to the bitstream unchanged. With this method, only one unprefixed code needs to be stored, along with information about 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 bin stream (ignoring effects that may take place at the end of the bin stream).

Вследствие этого правила построения известным свойством кодов pipe бинов является, что, если первичный и вторичный беспрефиксный код переставляется (тогда как отображение кодовых слов сохраняется), результирующий v2v-код является идентичным исходному v2v-коду. Поэтому, алгоритм кодирования и алгоритм декодирования идентичны для кодов pipe бинов.Because of this construction rule, a well-known property of bean pipe 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 the decoding algorithm are identical for the bin pipe 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 beans is made up of a special unprefixed code. This special unprefixed code is composed as follows. First, an unprefixed code consisting of n unary codewords is generated starting from "01", "001", "0001", ... until n codewords are received. n is a parameter for the pipe code of unary beans. The trailing 1 is removed from the longest codeword. This corresponds to a truncated unary code (but without the "0" codeword). Then n-1 unary codewords are generated starting from "10", "110", "1110", ... until n-1 codewords are received. The trailing 0 is removed from the longest of these codewords. The union set of these two unprefixed codes is used as input to generate the pipe code of the unary beans. The two codewords that are swapped are one consisting of only 0's and one consisting of only 1's.

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

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

1 0000 1111 0000 111

2 001 000120010001

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-in-Rice-codes and unary-in-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 at "1", "01", "001", ... until 2n +1 codewords are generated and the trailing 1 is removed from the longest codeword. n is the unary-to-rice parameter -code. The secondary unprefixed code is composed of the code words of the primary unprefixed code as follows. A primary codeword consisting of only 0 is assigned a codeword "1". All other codewords consist of the concatenation of the codeword "0" with the n-bit binary representation of the number 0 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 00012010001

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 010000

2 001 1002001 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 characters) has a fixed length (always three bins) and the codewords are sorted by ascending numbers 1.

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

В кодере (любой из 10) три бина считываются из потока бинов (т.е. 7). Если эти три бина содержат точно одну 1, кодовое слово «1» записывается в битовый поток, за которыми следует два бина, состоящие из двоичного представления позиции 1 (начиная справа с 00). Если три бина содержат точно один 0, кодовое слово «111» записывается в битовый поток, за которым следует два бина, состоящие из двоичного представления позиции 0 (начиная справа с 00). Остальные кодовые слова «000» и «111» отображаются на «0» и «11111» соответственно.At the encoder (any one of 10), three bins are read from the bin stream (ie 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 position 1 (starting from 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 position 0 (starting from 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» декодируется в поток бинов.At the decoder (any one of 22), one bin or bit is read from the corresponding bit stream 24. If it is "0", codeword "000" is decoded into a 21 bin stream. If it is "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 a number, and two 0's and one 1's are decoded into the bitstream, so that position 1 is determined by the number . If two bits are "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 specifies the position 0. If it is 3, "111" is decoded into a bin stream.

Ниже описывается эффективная реализация кодов pipe унарных бинов. Кодер и декодер для кодов pipe унарных бинов могут эффективно реализоваться посредством использования счетчика. Вследствие структуры кодов pipe бинов, кодирование и декодирование кодов pipe бинов легко реализовать:The following describes an efficient implementation of pipe codes for unary beans. The encoder and decoder for pipe codes of unary bins can be efficiently implemented through the use of a counter. Due to the structure of bean pipe codes, encoding and decoding bean pipe 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 записывается в битовый поток.At the encoder (any of 10), if the first bin of the codeword is "0", the bins are processed until a "1" is encountered, or until n 0's have been read (including the first "0" of the codeword). If a "1" is encountered, the read bins are written to the bitstream unchanged. Otherwise, (ie, n 0 were read), n-1 1 are written to the bitstream. If the first bin of the codeword is "1", the bins are processed until "0" is encountered, or until n-1 1's have been read (including the first "1" of the codeword). If "0" is encountered, the read bins are written to the bitstream unchanged. Otherwise, (ie, n-1 1's have been read), n 0 is written to the bitstream.

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

Ниже описывается эффективная реализация унарных-в-Райс-кодов. Кодер и декодер для унарных-в-Райс-кодов могут быть эффективно реализованы посредством использования счетчика, как описывается ниже.An efficient implementation of unary-in-Rice codes is described below. The 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 битами.At the encoder (any one of 310), bins are read from the bin stream (ie 7) until a 1 is encountered, or until 2 n 0 have been read. The number of 0's is counted. If the counted number is 2 n , the codeword "1" is written to the bitstream. Otherwise, "0" is written, followed by the binary representation of the count, written with n bits.

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

Другими словами, только что описанные варианты осуществления описывают кодер для кодирования последовательности символов 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

Figure 00000005
{0,1}. Однако возможны альтернативы.In other words, the embodiments just described describe an encoder for encoding a character sequence 303, comprising assigner 316 configured to assign multiple parameters 305 to each symbol of the character sequence based on information contained in previous symbols of the character sequence; a plurality of entropy encoders 310 each configured to convert symbols 307 sent to a respective entropy encoder 310 into a respective bitstream 312; and a selector 6 configured to direct 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 variable-length character sequences in character stream 307 to variable-length codewords to be inserted into bitstream 312, respectively, wherein each of the first subset entropy encoders 310 uses a bijective mapping rule, according to which the 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, so that all but two of the codewords of the primary prefix-free code are mapped to identical secondary codewords of the primary and secondary prefix-free codes, while the two codewords of the primary and secondary prefix-free codes have different lengths and are alternately mapped onto each other, and entropy encoders can use different n to cover different parts of the interval of the aforementioned probability interval. The first unprefixed code can be composed so that the codewords of the first unprefixed 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 top of each other alternately are (a, …, a) n and (b, …, b) n-1 with b≠a and a,b
Figure 00000005
{0,1}. However, alternatives are possible.

Другими словами, каждый из первого подмножества энтропийных кодеров может быть выполнен, при преобразовании символов, направляемых соответствующему энтропийному кодеру, в соответствующий битовый поток, с возможностью исследования первого символа, направляемого соответствующему энтропийному кодеру, для определения, (1) равен ли первый символ a

Figure 00000005
{0,1}, в этом случае соответствующий энтропийный кодер выполняется с возможностью исследования следующих символов, направляемых соответствующему энтропийному кодеру, для определения, (1.1) встречается ли b с b≠a и b
Figure 00000006
{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 can be performed, while converting the symbols sent to the corresponding entropy encoder into the corresponding bitstream, with the possibility of examining the first symbol sent to the corresponding entropy encoder to determine if (1) the first symbol is equal to a
Figure 00000005
{0,1}, in which case the corresponding entropy encoder is configured to examine the next symbols sent to the corresponding entropy encoder to determine if (1.1) b occurs with b≠a and b
Figure 00000006
{0,1} in the next n-1 symbols following the first symbol, in which case the corresponding entropy encoder is configured to write the codeword to the corresponding bitstream, which is equal to the first symbol, followed by subsequent symbols sent to the corresponding entropy encoder, before the character b; (1.2) does b occur in the next n-1 characters following the first character, in which case the corresponding entropy encoder is configured to write the codeword to the corresponding bitstream, which is equal to (b, …, b) n-1 ; or (2) whether the first character is equal to b, in which case the corresponding entropy encoder is configured to examine subsequent characters sent to the corresponding entropy encoder to determine, (2.1) whether a occurs in the next n-2 characters following the first character, in in this case, the corresponding entropy encoder is configured to write a codeword to the corresponding bitstream, which is equal to the first symbol followed by subsequent symbols sent to the corresponding entropy encoder up to symbol a; or (2.2) does a occur in the next n-2 characters following the first character, in which case the corresponding entropy encoder is configured to write the codeword to the corresponding bitstream, which is equal to (a, …, a) n .

Дополнительно или альтернативно, второе подмножество энтропийных кодеров 10 может представлять собой кодер переменной длины, выполненный с возможностью отображения последовательностей символов переменной длины на кодовые слова фиксированной длины соответственно, причем каждый из энтропийных кодеров второго подмножества использует правило биективного отображения, согласно которому кодовые слова первичного усеченного унарного кода с 2n+1 кодовыми словами типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и a,b

Figure 00000006
{0,1} отображаются на кодовые слова вторичного беспрефиксного кода, так что кодовое слово (bb…b) первичного усеченного унарного кода отображается на кодовое слово (c) вторичного беспрефиксного кода, и все другие кодовые слова {(a), (ba), (bba), …, (b…ba)} первичного усеченного унарного кода отображаются на кодовые слова, имеющие (d) с c≠d и c,d
Figure 00000006
{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, with each of the entropy encoders of the second subset using a bijective mapping rule such that the primary truncated unary codewords code with 2 n +1 code words like {(a), (ba), (bba), …, (b…ba), (bb…b)} with b≠a and a,b
Figure 00000006
{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 to code words having (d) with c≠d and c,d
Figure 00000006
{0,1} as a prefix and an n-bit word as a suffix, with entropy encoders using different n's. Each of the second subset of entropy encoders can be configured such that an n-bit word is an n-bit representation of the number b in the corresponding codeword of the primary truncated unary code. However, alternatives are possible.

Снова, с точки зрения режима работы соответствующего кодера 10, каждый из второго подмножества энтропийных кодеров может быть выполнен, при преобразовании символов, направляемых соответствующему энтропийному кодеру, в соответствующий битовый поток, с возможностью подсчета количества b в последовательности символов, направляемых соответствующему энтропийному кодеру до тех пор, пока не встретится, или пока количество последовательности символов, направляемых соответствующему энтропийному кодеру, не достигнет 2n, причем все 2n символов в последовательности равны b, и (1) если количество b равно 2n, записи c с c

Figure 00000006
{0,1} в качестве кодового слова вторичного беспрефиксного кода в соответствующий битовый поток, и (2) если количество b меньше 2n, записи кодового слова вторичного беспрефиксного кода в соответствующий битовый поток, которое имеет (d) с c≠d и d
Figure 00000006
{0,1} в качестве префикса и n-битовое слово, определенное в зависимости от количества b, в качестве суффикса.Again, in terms of the mode of operation of the respective entropy encoder 10, each of the second subset of entropy encoders can be performed by converting the symbols sent to the corresponding entropy encoder to the corresponding bitstream, with the possibility of counting the number b in the sequence of symbols sent to the corresponding entropy encoder up to until it does, or until the number of character sequences sent to the corresponding entropy encoder reaches 2 n , where all 2 n characters in the sequence are b, and (1) if the number of b is 2 n , write c with c
Figure 00000006
{0,1} as the codeword of the secondary unprefix code to the corresponding bitstream, and (2) if the number b is less than 2 n , write the codeword of the secondary unprefix code to the corresponding bitstream, which has (d) with c≠d and d
Figure 00000006
{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

Figure 00000006
{0,1}, отображается на кодовое слово (с) с c
Figure 00000006
{0,1}, все три кодовых слова первичного кода, имеющие точно одну b с b≠a и b
Figure 00000006
{0,1}, отображаются на кодовые слова, имеющие (d) с c≠d и d
Figure 00000006
{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, the predefined one of the entropy encoders 10 may be a variable length encoder configured to map fixed length symbol sequences to variable length codewords, respectively, wherein the predefined entropy encoder uses a bijective mapping rule such that 2 3 codewords of length The 3 primary code maps to the codewords of the secondary unprefixed code, so that the codeword (aaa) 3 of the primary code with a
Figure 00000006
{0,1}, mapped to codeword(s) with c
Figure 00000006
{0,1}, all three primary code words having exactly one b with b≠a and b
Figure 00000006
{0,1} are mapped to codewords having (d) with c≠d and d
Figure 00000006
{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 codewords of the primary code having exactly one a are mapped to codewords having (d) as prefix and concatenation of the first 2-bit word not a member of the first set and the second 2-bit word of the second 2-bit word set as a suffix, and in which the 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 a member of the first set and the second 2-bit word that is not a member of the second set as a suffix. The first 2-bit word of primary code codewords having exactly one b may be a 2-bit representation of the position of b in the corresponding primary codeword, and the second 2-bit word of primary 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, while converting the symbols sent to the predefined entropy encoder into the corresponding bit stream, with the possibility of examining the symbols to the predefined entropy encoder in triplets, (1) whether the triple consists of a, in this case the predetermined entropy encoder is configured to write a codeword (c) to the corresponding bitstream, (2) whether the triple contains exactly one b, in which case the predetermined entropy encoder is configured to write a codeword having (d) as a prefix, and 2-bit representation of position b in a triple as a suffix, into the corresponding bitstream; (3) whether the triple contains exactly one a, in which case the predetermined entropy encoder is configured to write a codeword having (d) as a prefix and the concatenation of the first 2-bit word that is not a member of the first set and the 2-bit representation positions a in a triple as a suffix, into the corresponding bitstream; or (4) whether the triple consists of b, in which case the predetermined entropy encoder is configured to write a codeword having (d) as a prefix and the concatenation of the first 2-bit word that is not a member of the first set and the first 2-bit 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

Figure 00000006
{0,1}. Однако возможны альтернативы.On the decoding side, the embodiments just described describe a decoder for character sequence recovery 326, comprising a plurality of entropy decoders 322, each of which is configured to convert a corresponding bitstream 324 into symbols 321; assignment means 316, configured to assign multiple parameters to each symbol 326 of the character sequence to be recovered based on information contained in the previously recovered characters of the character sequence; and a selector 318 configured to extract each symbol 325 of the sequence of symbols to be recovered from a selected one of the 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 sequences of variable length symbols, respectively, with each of the first subset entropy decoders 22 using a bijective mapping rule, according to with which codewords of a primary unprefix code with (2n-1)≥3 codewords are mapped to codewords of a secondary unprefix code that is identical to the primary prefix code, such that all but two of the codewords of the primary unprefix code are mapped to identical codewords of the secondary unprefix code , while the two codewords of the primary and secondary unprefixed codes have different lengths and are mapped onto each other alternately, with entropy encoders using different n. The first unprefixed code can be constructed so that the codewords of the first unprefixed 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 code words, mapped onto each other alternately can be (a, …, a) n and (b, …, b) n-1 with b≠a and a,b
Figure 00000006
{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 can be configured, when converting the corresponding bitstream into symbols, to examine the first bit of the corresponding bitstream to determine if (1) the first bit is a 0 {0,1}, in which case the corresponding entropy the encoder is configured to examine the next bits of the corresponding bitstream to determine if (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 possibility of recovering the character sequence, which is equal to the first bit, followed by subsequent bits of the corresponding bitstream, up to bit b; or (1.2) does b occur in the next n-1 bits following the first bit, in which case the corresponding entropy decoder is capable of recovering a character sequence that is (b, …, b) n-1 ; or (2) whether the first bit is equal to b, in which case the corresponding entropy decoder is configured to examine subsequent bits of the corresponding bitstream to determine (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 character sequence that is equal to the first bit followed by subsequent bits of the corresponding bitstream up to character a; or (2.2) whether a occurs in the next n-2 bits following the first bit, in which case the corresponding entropy decoder is capable of recovering a character sequence that is equal to (a, …, a) n .

Дополнительно или альтернативно, по меньшей мере второе подмножество энтропийных декодеров 322 может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов фиксированной длины на последовательности символов переменной длины соответственно, причем каждый из энтропийных декодеров второго подмножества использует правило биективного отображения, согласно которому кодовые слова вторичного беспрефиксного кода отображаются на кодовые слова первичного усеченного унарного кода с 2n+1 кодовыми словами типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и a,b

Figure 00000006
{0,1}, так что кодовое слово (c) вторичного беспрефиксного кода отображается на кодовое слово (bb…b) первичного усеченного унарного кода, и кодовые слова, имеющие (d) с c≠d и c,d
Figure 00000006
{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 to variable length symbol sequences, respectively, wherein each of the second subset entropy decoders uses a bijective mapping rule such that the codewords of the secondary unprefixed code are mapped to codewords of the primary truncated unary code with 2 n +1 codewords like {(a), (ba), (bba), …, (b…ba), (bb…b)} with b≠a and a,b
Figure 00000006
{0,1} so that the codeword (c) of the secondary unprefixed code maps to the codeword (bb…b) of the primary truncated unary code, and codewords having (d) with c≠d and c,d
Figure 00000006
{0,1} as prefix and n-bit word as suffix, map 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 an n-bit word is an n-bit representation of the number b in the corresponding codeword of the primary truncated unary code. However, alternatives are possible.

Каждый из второго подмножества энтропийных декодеров может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов фиксированной длины на последовательности символов переменной длины соответственно, и выполненный, при преобразовании битового потока соответствующего энтропийного декодера в символы, с возможностью исследования первого бита соответствующего битового потока для определения, (1) равен ли он c с c

Figure 00000006
{0,1}, в этом случае соответствующий энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (bb…b)2 n с b
Figure 00000006
{0,1}; или (2) равен ли он d с c≠d и c,d
Figure 00000006
{0,1}, в этом случае соответствующий энтропийный декодер выполняется с возможностью определения n-битового слова из n дополнительных битов соответствующего битового потока, следующих за первым битом, и восстановления из них последовательности символов, которая является типа {(a), (ba), (bba), …, (b…ba), (bb…b)} с b≠a и b
Figure 00000006
{0,1}, причем количество b зависит от n-битового слова.Each of the second subset of entropy decoders may be a variable-length decoder configured to map fixed-length codewords to variable-length symbol sequences, respectively, and configured, when converting the corresponding entropy decoder's bitstream into symbols, to examine the first bit of the corresponding bitstream for determining (1) whether it is equal to c with c
Figure 00000006
{0,1}, in this case the corresponding entropy decoder is performed with the possibility of recovering the symbol sequence, which is equal to (bb…b) 2 n with b
Figure 00000006
{0,1}; or (2) is it equal to d with c≠d and c,d
Figure 00000006
{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 bitstream following the first bit and recover from them a character sequence that is of type {(a), (ba ), (bba), …, (b…ba), (bb…b)} with b≠a and b
Figure 00000006
{0,1}, with the number of b depending on the n-bit word.

Дополнительно или альтернативно, предварительно определенный один из энтропийных декодеров 322 может быть декодером переменной длины, выполненным с возможностью отображения кодовых слов переменной длины на последовательности символов фиксированной длины соответственно, причем предварительно определенный энтропийный декодер использует правило биективного отображения, согласно которому кодовые слова вторичного беспрефиксного кода отображаются на 23 кодовые слова длины 3 первичного кода, так что кодовое слово (c) с c

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

Предварительно определенный один из энтропийных декодеров может представлять собой декодер переменной длины, выполненный с возможностью отображения кодовых слов переменной длины на последовательности символов из трех символов каждая соответственно, и выполненный, при преобразовании битового потока соответствующего энтропийного декодера в символы, с возможностью исследования первого бита соответствующего битового потока для определения, (1) равен ли первый бит соответствующего битового потока c с c

Figure 00000006
{0,1}, в этом случае заданный энтропийный декодер выполняется с возможностью восстановления последовательности символов, которая равна (aaa)3 с a 0 {0,1}; или (2) равен ли первый бит соответствующего битового потока d с c≠d и d
Figure 00000006
{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.The predetermined one of the entropy decoders may be a variable length decoder configured to map variable length codewords onto symbol sequences 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 bitmap. stream to determine if (1) the first bit of the corresponding bitstream c is equal to c
Figure 00000006
{0,1}, in this case, the given entropy decoder is performed with the possibility of recovering the symbol sequence, which is equal to (aaa) 3 with a 0 {0,1}; or (2) whether the first bit of the corresponding bitstream d is equal to c≠d and d
Figure 00000006
{0,1}, in this case the predefined entropy decoder is configured to determine the first 2-bit word from the 2 additional bits of the corresponding bitstream that follows the first bit, and 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 the predefined entropy decoder is capable of recovering a character sequence that has exactly one b with b≠a and b 0 {0,1} , where the position b in the corresponding character 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 the predefined entropy decoder is configured to determine the second 2-bit word from 2 additional bits of the corresponding bitstream following the two bits of which the first 2-bit was determined first word, and with the possibility of examining the second 2-bit word to determine (3.1) whether the second 2-bit word is an element of the second set of three 2-bit words, in this case, the predetermined entropy decoder is performed with the possibility of recovering the character sequence, which has exactly one a, where the position of a in the corresponding character sequence depends on the second 2-bit word, or (3.2) whether the second 2-bit word is an element of the second set of three 2-bit words, in which case the predefined entropy decoder is executed with the ability to recover the character sequence, which is equal to (bbb) 3 .

Теперь после описания общего принципа схемы видеокодирования описываются варианты осуществления настоящего изобретения в отношении вышеупомянутых вариантов осуществления. Другими словами, варианты осуществления, кратко описанные ниже, могут быть реализованы посредством использования вышеупомянутых схем, и наоборот, вышеупомянутые схемы кодирования могут быть реализованы с использованием и применением вариантов осуществления, кратко описанных ниже.Now, after describing the general principle of the video coding scheme, embodiments of the present invention will be described with respect to the above embodiments. In other words, the embodiments briefly described below may be implemented using the above schemes, and conversely, the above coding schemes may be implemented using and applying 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 encoders/decoders 310 and 322 with single-probability arithmetic state. As described below, in an alternative embodiment, objects 306-310 and corresponding objects 318-322 may be replaced by a conventional entropy encoding mechanism. As an example, consider an arithmetic encoding mechanism that manages only one shared R and L state and encodes all characters into one common bitstream, thus forgoing the beneficial aspects of the present PIPE principle regarding parallel processing, but eliminating the need for partial bitstream interleaving, as further described below. By doing so, the number of probability states by which the context probabilities are estimated by updating (such as a table lookup) can be higher than the number of probability states by which the 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 may 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 coding/decoding mechanisms.

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

0. Средство 304 назначения направляет значение бина вместе с параметром вероятности. Вероятность равна pState_current[bin].0. The assigner 304 forwards the value of the bin 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 engine accepts: 1) valLPS, 2) bin and 3) estimate pState_current[bin] of the probability distribution. pState_current[bin] may have more states than the number of distinct probability state indices Rtab. If so, pState_current[bin] may be quantized such that, for example, by ignoring the m Least Significant Bits (LSB), where m is 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 common bitstream) is used/managed for all distinguishable p_state values, or one R (and corresponding L with associated partial bitstream per R/L pair ) per distinguishable p_state value, this latter case would correspond to having one encoder 310 bins per such value)

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

3. Затем выполняется определение RLPS и R:3. Then R LPS and R are determined:

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

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

4. Вычисление нового предварительного интервала:4. Calculation of a 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. Renormalization of L and R, writing bits,

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

0. Средство 304 назначения направляет значение бина вместе с параметром вероятности. Вероятностью является pState_current[bin].0. The assigner 304 forwards the value of the bin 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 receives a bin request along with: 1) valLPS, and 2) a probability distribution estimate pState_current[bin]. pState_current[bin] may have more states than the number of distinct probability state indices Rtab. If so, pState_current[bin] can be quantized like this, eg by neglecting m LSBs, where m is greater than or equal to 1 and 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 (и соответствующий 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 common bitstream) is used/managed for all distinguishable p_state values, or one R (and corresponding V with associated partial bitstream per R/L pair ) per distinguishable p_state value, this last case corresponds to having one encoder 310 bins per such value)

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

3. Затем выполняется определение RLPS и R:3. Then R LPS and R are determined:

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

R=R-RLPS [т.е. R предварительно предобновляется, как если бы «бином» был MPS]R=RR LPS [i.e. R is pre-updated as if "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 bin value 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 an 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, assigner 4 assigns pState_current[bin] to each bin. The association may be performed based on context selection. Those. assigner 4 can 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 pState_current[bin] probability has been applied to the current bin. The probability state update pState_current[bin] is performed depending on the value of the encoded bit:

Figure 00000007
Figure 00000007

Если обеспечивается более одного контекста, адаптация выполняется по контексту, т.е. 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 bean's current value (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, low complexity (LC) and high efficiency (HE) mode. This is depicted mainly in relation to PIPE encoding in the following (referring to the LC and HE PIPE modes then), but the description of complexity scalability details is easily transferred to other implementations of entropy encoding/decoding mechanisms, such as the embodiment of using a single common context-adaptive arithmetic encoder/ decoder.

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

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

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

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

применение 8-битовых значений инициализации вероятностной модели (вместо 16-битовых значений инициализации, определенных в настоящее время для CABAC)use of 8-bit probability 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 the complexity of processing, such as the complexity of choosing a 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, the LC mode can work under the following restrictions: There can be exactly one probability model for each bin (binIdx), i.e. one ctxIdx. Those. context selection/adaptation cannot be provided in LC PIPE. Specific syntax elements, such as those used to encode the remainder, may, however, be encoded using contexts, as further discussed 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 the 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. Specific syntax elements for encoding the remainder, i.e. significance_coeff_flag and coeff_abs_level_greaterX (with X=1,2), the semantics of which are detailed below, may be assigned to probability models, such as (at least) groups of, for example, 4 syntax elements are encoded/decoded with the same probability of the model. Compared to CAVLC (context adaptive variable length code), the LC-PIPE mode achieves roughly the same R-D performance and the same 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 in case of 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 the states, not the behavior of the state machine itself (i.e. the probability score). As discussed in more detail below, the initialization of the probability models may use 8-bit initialization values as described above. The backscan of the syntax 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 power map). The context derivation for encoding coeff_abs_level_greaterX (with X=1,2) can also be simplified. Compared to CABAC, the proposed HE-PIPE achieves roughly the same R-D performance 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 mechanism, since it operates in different modes.

Таким образом, согласно варианту осуществления в соответствии с первым аспектом настоящего изобретения декодер для декодирования потока данных может быть выполнен так, как показано на фиг. 11. Декодер предназначен для декодирования потока 401 данных, такого как битовый поток 340 с перемежением, в какие медиаданные, такие как данные видео, кодируется. Декодер содержит переключатель 400 режима, выполненный с возможностью активизирования режима низкой сложности или режима высокой эффективности в зависимости от потока 401 данных. С этой целью, поток 401 данных может содержать синтаксический элемент, такой как двоичный синтаксический элемент, имеющий двоичное значение 1 в случае режима низкой сложности, являющегося тем, который необходимо активизировать, и имеющий двоичное значение 0 в случае режима высокой эффективности, являющегося тем, который необходимо активизировать. Очевидно, что ассоциирование между двоичным значением и режимом кодирования может переключаться, и также может использоваться недвоичный синтаксический элемент, имеющий более двух возможных значений. Так как фактический выбор между двумя режимами еще не ясен перед приемом соответствующего синтаксического элемента, этот синтаксический элемент может содержаться в некотором переднем заголовке потока 401 данных, кодированного, например, с фиксированной оценкой вероятности или вероятностной моделью или записываемого в поток 401 данных как есть, т.е. используя режим обхода.Thus, according to the embodiment according to the first aspect of the present invention, a decoder for decoding a data stream may be configured as shown in FIG. 11. The decoder is for decoding the data stream 401, such as the interleaved bitstream 340, into which 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, the 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, which is the one to be activated, and having a binary value of 0 in the case of a high efficiency mode, which is the one to be activated. needs to be activated. Obviously, the association between a binary value and an encoding mode can be switched, and a non-binary syntax element having more than two possible values can also be used. Since the actual choice between the two modes is not yet clear before the corresponding syntax element is received, this syntax element may be contained in some forward header of the data stream 401, encoded with, for example, a fixed probability score or probability 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 соответственно. Другими словами, энтропия соответствующего частичного потока уже является оптимальной.In addition, the decoder of FIG. 11 contains a plurality of entropy decoders 322, each of which is configured to convert the code words in the data stream 401 into partial character 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 being fed, on the other hand. In addition, as already described above, each of the entropy decoders 322 may be associated with a respective probability interval, with the probability intervals of the various entropy decoders together covering the entire probability interval from 0 to 1 - or 0-0.5 in the case of entropy decoders 322 dealing with with MPS and LPS, not absolute character values. Details regarding this issue have been described above. Later, the number of decoders 322 is assumed to be 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 with pipe_id equal to 0, is optimized for bins having equiprobable statistics, i.e. their bin value is 1 and 0 equally likely. This decoder can simply skip bins. The corresponding encoder 310 operates in a similar manner. Even any bin manipulation can be excluded depending on the value of the most likely 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 a 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 syntax 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 the activated one of the low complexity mode and the high efficiency mode, as indicated by arrow 406.

Как уже упомянуто выше, восстановитель 404 может быть частью видеодекодера на основе блоков предсказания, работающего с фиксированным синтаксисом и семантикой синтаксических элементов, т.е. фиксированными относительно выбора режима переключателем 400 режима. Т.е. конструкция восстановителя 404 не допускает переключаемости режимов. Более точно, восстановитель 404 не увеличивает издержки реализации из-за переключаемости режимов, предлагаемой переключателем 400 режима, и по меньшей мере функциональная возможность в отношении данных остатка и данных предсказания остается такой же независимо от режима, выбранного переключателем 400. Это также применимо, однако, в отношении энтропийных декодеров 322. Все эти декодеры 322 повторно используются в обоих режимах, и, следовательно, нет дополнительных издержек реализации, хотя декодер по фиг. 11 является совместимым с обоими режимами, режимами низкой сложности и высокой эффективности.As already mentioned above, the restorer 404 may be part of a prediction block-based video decoder operating with a fixed syntax and syntax element semantics, i.e. fixed with respect to the mode selection by the mode switch 400 . Those. the design of the reducer 404 does not allow switching modes. More specifically, the restorer 404 does not increase implementation overhead due to the mode switching offered by the mode switch 400, and at least the functionality regarding residual data and prediction data remains the same regardless of the mode selected by the mode switch 400. This also applies, however, with respect to entropy decoders 322. All of these decoders 322 are reused in both modes and hence 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 able to work 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, can be configured such that switching between both modes is even possible during one piece of media data, for example, during video or some piece of audio, in order, for example, to control the complexity of encoding on the decoding side depending on external or environmental conditions such as battery condition or the like. using a decoder-to-encoder feedback channel to appropriately control the mode selection in a closed loop.

Таким образом, декодер по фиг. 11 работает аналогично в обоих случаях, в случае, когда выбирается режим LC или когда выбирается режим HE. Восстановитель 404 выполняет восстановление с использованием синтаксических элементов и запрашивает текущий синтаксический элемент заданного типа синтаксического элемента посредством обработки или подчинения некоторому предписанию структуры синтаксиса. Десимволизатор 314 запрашивает несколько бинов, чтобы выдать достоверную бинаризацию для синтаксического элемента, запрашиваемого восстановителем 404. Очевидно, что в случае двоичного алфавита бинаризация, выполняемая десимволизатором 314 понижает до простого пропускания соответствующего бина/символа 326 на восстановитель 404 в качестве запрашиваемого в настоящий момент двоичного синтаксического элемента.Thus, the decoder of FIG. 11 works similarly in both cases, in the case when the LC mode is selected or when the HE mode is selected. The restorer 404 performs the restoration using the syntax elements and queries the current syntax element of the given syntax element type by processing or obeying some syntax structure prescription. Desymbolizer 314 requests several bins to provide a valid binarization for the syntax element requested by restorer 404. Clearly, in the case of a binary alphabet, the binarization performed by desymbolizer 314 downgrades to simply passing the corresponding bin/symbol 326 to 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 the selector 402 tends to be more complex in the case of the high efficiency mode and less complex in the case of the low complexity mode. In addition, the following description shows that the mode of operation of the selector 402 in the low complexity mode also tends to reduce the frequency with which the selector 402 changes the selection among the entropy decoders 322 when extracting consecutive symbols from the entropy decoders 322. In other words, in the low complexity mode, there is an increased the probability that immediately subsequent symbols are extracted from the same entropy decoder among the plurality of entropy decoders 322. This, in turn, allows faster extraction of symbols from the entropy decoders 322. In high efficiency mode, in turn, the mode of operation of the selector 402 tends 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 being extracted by the selector 402, thus obtaining a better coefficient compression at the encoding side while generating the corresponding data stream in accordance with the high performance mode.

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

Согласно другому варианту осуществления поток 401 данных может быть структурирован в последовательные части, такие как слайсы, кадры, группы изображений, последовательности кадров или т.п., и каждый символ последовательности символов может ассоциироваться с соответствующим одним из множества типов символа. В данном случае, селектор 402 может быть выполнен с возможностью изменения, для символов заданного типа символа в текущей части, выбора в зависимости от ранее извлеченных символов последовательности символов заданного типа символа в текущей части в случае активизированного режима высокой эффективности и оставления выбора постоянным в текущей части в случае активизированного режима низкой сложности. Т.е. селектору 402 может быть предоставлена возможность изменять выбор среди энтропийных декодеров 322 для заданного типа символа, но эти изменения ограничены тем, что происходят между переходами между последовательными частями. Посредством этой меры оценки фактической статистики символов ограничиваются редко встречающимися временными случаями, тогда как сложность кодирования уменьшается в большей части времени.According to another embodiment, the data stream 401 may be structured into sequential parts such as slices, frames, groups of pictures, sequences of frames, or the like, and each character of the character sequence may be associated with a corresponding one of a plurality of character types. In this case, the selector 402 can be configured to change, for characters of a given character type in the current part, to select, depending on the previously retrieved characters, a sequence of characters of a given character type in the current part in the case of an activated high performance mode, and leave the selection constant in the current part. in the case of an activated low complexity mode. Those. the selector 402 may be allowed to change the selection among the entropy decoders 322 for a given character type, but these changes are limited to what happens between transitions between successive parts. By this measure, estimates of the actual symbol statistics are limited to rarely occurring transient cases, while the coding complexity is reduced for 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 performed, for a given character of a given character type, to select one of a plurality of contexts depending on previously retrieved characters of the character sequence 326 and perform selecting among the entropy decoders 322 depending on the probability model associated with the selected context along with updating the probability model associated with the selected context depending on the given symbol in the case of an activated high performance mode, and performing selection of one of the plurality of contexts depending on previously extracted symbols symbol sequence 326 and performing selection among entropy decoders 322 depending on the probability model associated with the selected context, while leaving the probability model associated with the selected context constant in when the low complexity mode is activated. Those. selector 402 can use context adaptivity on some type of syntax element in both modes while suppressing probabilistic adaptation in the case of LC mode.

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

Кроме того, другими словами, возможные аспекты, характерные для LC-PIPE, т.е. аспекты режима LC, могут быть описаны следующим образом. В частности, неадаптивные вероятностные модели могут использоваться в режиме LC. Неадаптивная вероятностная модель может или иметь жестко закодированную, т.е. полную постоянную вероятность, или ее вероятность поддерживается фиксированной только во время обработки слайса и, таким образом, может устанавливаться в зависимости от типа слайса и QP, т.е. параметра квантования, который, например, сигнализируется в потоке 401 данных для каждого слайса. Предполагая, что последовательные бины, назначенные одному и тому же контексту, придерживаются фиксированной вероятностной модели, возможно декодирование нескольких из этих бинов на одном шаге, когда они кодируются с использованием одного и того же кода pipe, т.е. используя один и тот же энтропийный декодер, и опускается обновление вероятности после каждого декодированного бина. Опускание обновлений вероятности экономит операции во время процесса кодирования и декодирования и, таким образом, также приводит к уменьшению сложности и существенному упрощению аппаратной конструкции.In addition, in other words, possible aspects specific to LC-PIPE, ie. 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 type of slice and QP, i.e. a quantization parameter, which, for example, is signaled in the data stream 401 for each slice. Assuming that successive bins assigned to the same context adhere to a fixed probability 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 the probability update after each decoded bin is omitted. Omitting probability updates saves operations during the encoding and decoding process and thus also results in a reduction in complexity and a 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. An appropriate update interval allows for probabilistic adaptation while being able to decode multiple bins at the same time.

Ниже представлено более подробное описание возможных общих и с масштабируемой сложностью аспектов LC-pipe и HE-pipe. В частности, ниже описываются аспекты, которые могут использоваться для режима LC-pipe и режима HE-pipe одинаковым образом или с масштабируемой сложностью. Масштабируемая сложность означает, что случай LC выводится из случая HE посредством удаления конкретных частей или посредством замены их несколько менее сложными. Однако перед продолжением с ними необходимо упомянуть, что вариант осуществления на фиг.11 является легко переносимым на вышеупомянутый вариант осуществления контекстно-адаптивного двоичного арифметического кодирования/декодирования: селектор 402 и энтропийные декодеры 322 сосредотачиваются в контекстно-адаптивный двоичный арифметический декодер, который непосредственно принимает поток 401 данных и выбирает контекст для бина, подлежащего извлечению в настоящий момент из потока данных. Это особенно верно для контекстной адаптивности и/или вероятностной адаптивности. Обе функциональные возможности/адаптивности могут быть отключены, или разработаны более ослабленными, во время режима низкой сложности.Below is a more detailed description of the possible general and complexity-scalable aspects of the LC-pipe and HE-pipe. In particular, aspects that can be used for the LC-pipe mode and the 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 continuing with them, it should be mentioned that the embodiment in FIG. 11 is easily portable to the above context-adaptive binary arithmetic coding/decoding embodiment: the selector 402 and the entropy decoders 322 are lumped 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 context adaptivity and/or probabilistic adaptivity. Both functionality/adaptability can be disabled, or designed to be more relaxed, during the low complexity mode.

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

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

Figure 00000008
Figure 00000008

Эта модифицированная схема кодирования может использоваться в качестве основы для подхода видеокодирования с масштабируемой сложностью. При выполнении вероятностной адаптации режима селектор 402 или контекстно-адаптивный двоичный арифметический декодер соответственно выбирают декодер 322 PIPE, т.е. выводят индекс pipe, подлежащий использованию, и индекс вероятности в Rtab, соответственно, основываясь на индексе состояния вероятности - здесь в качестве примера диапазон составляет от 0 до 62 - ассоциированный с подлежащим декодированию текущим символом - например, при помощи контекста - используя отображение, показанное в таблице A, и обновляет этот индекс состояния вероятности в зависимости от декодируемого в настоящий момент символа, используя, например, конкретные значения перехода обхода таблицы, указывающие на следующий индекс состояния вероятности, подлежащий посещению в случае MPS и LPS соответственно. В случае режима LC обновление последнего может быть исключено. Даже отображение может быть исключено в случае глобально фиксированных вероятностных моделей.This modified coding scheme can be used as the basis for a scalable complexity video coding approach. When performing probabilistic mode adaptation, the selector 402 or the context adaptive binary arithmetic decoder respectively selects the PIPE decoder 322, i. 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 0 to 62 - associated with the current character to be decoded - e.g. by 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 traversal 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 omitted in the case of globally fixed probabilistic models.

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

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

Например, восстановитель 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 syntax element sequence regardless of whether the high performance mode or the low complexity mode is activated, wherein the portion of the syntax element sequence 327 contains, without interleaving, the syntax elements of a salience map. , defining a saliency map indicating the positions of non-zero transform coefficient levels in transform block 200, and then (followed by) defining level syntax elements defining non-zero transform coefficient levels. In particular, the following elements may be included: end 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 syntax elements (coeff_significant_flag) together defining a significance map and indicating, for each position along a one-dimensional path (274) leading from the DC (direct current) position to the position of the last non-zero level of the transform coefficients in the transform block (200), as to whether whether the level of the transform coefficients in 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, in relation to whether the level of transform coefficients in 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, the level of transform coefficients is greater than one, the amount by which the corresponding level of transform coefficients at the corresponding position exceeds one.

Порядок среди синтаксических элементов конечной позиции, первых, вторых и третьих синтаксических элементов может быть одинаковым для режима высокой эффективности и режима низкой сложности, и селектор 402 может быть выполнен с возможностью выполнения выбора из числа энтропийных декодеров 322 для символов, от которого десимволизатор 314 получает синтаксические элементы конечной позиции, первые синтаксические элементы, вторые синтаксические элементы и/или третьи синтаксические элементы, в разной зависимости от активизированного режима низкой сложности или режима высокой эффективности.The order among the syntax elements of the end position, 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 perform a selection from among entropy decoders 322 for symbols from which the desymbolizer 314 obtains syntax end position elements, first syntax elements, second syntax elements, and/or third syntax elements, depending on which low complexity mode or 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, the selector 402 may be configured, for characters of a given character type, from among the sequence of characters from which the decharacter 314 obtains first syntax elements and second syntax elements, with the possibility of selecting, for each character of the given character type, one of a plurality of contexts depending on previously retrieved characters of a given character type from among a sequence of characters, and making a selection depending on the probability model associated with the selected context in the case of the enabled high performance mode, and making the selection in a piecewise constant manner such that the selection is constant over successive contiguous subparts of the sequence in the case of the enabled mode low complexity. As described above, subparts may be measured by the number of positions that the corresponding subpart extends when measured along the one-dimensional path 274, or by the number of syntax 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 encoded context-adaptive with decoder 322 selection based on a probability 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 syntax 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 can be defined to be 4, 8, 16 block 200 positions long, regardless on whether or not the corresponding syntax 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 to be 4, 8, 16 syntax elements long, 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 meaningful positions, and thus portions of each of the four syntax elements may traverse more than 4 block positions due to positions between them along path 274 for which no such syntax element is passed, such as neither coeff_abs_greater1 , nor coeff_abs_greater2, since the corresponding level at that position is zero.

Селектор 402 может быть выполнен, для символов заданного типа символа в последовательности символов, из которой десимволизатор получает первые синтаксические элементы и вторые синтаксические элементы, с возможностью выбора для каждого символа заданного типа символа одного из множества контекстов в зависимости от количества ранее извлеченных символов заданного типа символа в последовательности символов, которые имеют заданное значение символа и принадлежит к этой же подчасти, или количества ранее извлеченных символов заданного типа символа в последовательности символов, которые принадлежат этой же подчасти. Первая альтернатива была верной для coeff_abs_greater1, и вторая альтернатива была верной для coeff_abs_greater2 в соответствии с вышеупомянутыми конкретными вариантами осуществления.The selector 402 may be performed, for characters of a given character type in a sequence of characters from which the decharacter 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 characters of a given character type in a sequence of characters that have a given character value and belong to that same subpart, or the number of previously extracted characters of a given character type in a sequence of characters that belong to that 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 specific embodiments.

Кроме того, третьи синтаксические элементы, показывающие, для каждой позиции одномерного пути, где, согласно первым двоичным синтаксическим элементам, располагается уровень коэффициентов преобразования больший единицы, величину, на которую соответствующий уровень коэффициентов преобразования в соответствующей позиции превышает единицу, могут содержать целочисленные синтаксические элементы, т.е. coeff_abs_minus3, и десимволизатор 314 может быть выполнен с возможностью использования функции отображения, управляемой параметром управления для отображения области определения слов последовательности символов на область значений целочисленных синтаксических элементов, и установления параметра управления на целочисленный синтаксический элемент в зависимости от целочисленных синтаксических элементов предыдущих третьих синтаксических элементов, если активизирован режим высокой эффективности, и выполнения установления кусочно-постоянным образом, так что установление является постоянным по последовательным непрерывным подчастям последовательности в случае активизированного режима низкой сложности, причем селектор 402 может быть выполнен с возможностью выбора заданного одного из энтропийных декодеров (322) для символов слов последовательности символов, отображаемых на целочисленные синтаксические элементы, которая ассоциируется с равно-вероятным распределением как в режиме высокой эффективности, так и в режиме низкой сложности. Т.е. даже если десимволизатор может работать в зависимости от режима, выбранного переключателем 400, как изображено пунктирной линией 407. Вместо кусочно-постоянного установления параметра управления десимволизатор 314 может поддерживать параметр управления постоянным во время текущего слайса, например, или постоянным глобально во времени.In addition, the third syntax elements showing, for each position of the one-dimensional path, where, according to the first binary syntax elements, the level of the transformation coefficients is greater than one, the amount by which the corresponding level of the transformation coefficients in the corresponding position exceeds one, may contain integer syntax elements, those. coeff_abs_minus3, and the desymbolizer 314 can be configured to use a mapping function controlled by a control parameter to map the word domain of the character sequence to the integer syntax element range, 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 settling in a piecewise constant manner such that the settling is constant over successive contiguous subsequences in the case of the low complexity mode enabled, wherein the selector 402 can be configured to select a given one of the entropy decoders (322) for the symbols words sequence of characters mapped to integer syntax elements that is associated with an equiprobable distribution as in high efficiency mode vnosti, and in the mode of low complexity. Those. even though the desymbolizer may operate depending on the mode selected by switch 400, as depicted by dashed line 407. Instead of setting the control parameter piecewise, the desymbolizer 314 may keep the control parameter constant during the current slice, for example, or constant globally in time.

Ниже описывается моделирование контекста с масштабируемой сложностью.The following describes context modeling with scalable complexity.

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

В предпочтительном варианте осуществления все синтаксические элементы оценки ступени контекстного моделирования соседних квадратных или прямоугольных блоков или единиц предсказания являются фиксированными для одной контекстной модели. Это равнозначно запрещению адаптивности на ступени выбора контекстной модели. Для этого предпочтительного варианта осуществления выбор контекстной модели в зависимости от индекса бина строки бинов после бинаризации не модифицируется по сравнению с текущей разработкой для CABAC. В другом предпочтительном варианте осуществления дополнительно к фиксированной контекстной модели для синтаксических элементов применяют оценку соседей, также является фиксированной контекстная модель для другого индекса бина. Отметьте, что описание не включает бинаризацию и выбор контекстной модели для разностей векторов движения и синтаксических элементов, относящихся к кодированию уровней коэффициентов преобразования.In a preferred embodiment, all context modeling stage evaluation syntax elements of neighboring square or rectangular blocks or prediction units are fixed for one context model. This is equivalent to the prohibition of adaptability at the stage of choosing a context model. For this preferred embodiment, the choice of 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 the syntax elements, neighbor estimation is applied, and the fixed context model for the other bin index is also fixed. Note that the description does not include binarization and context model selection for motion vector differences and syntax elements related to encoding levels of transform coefficients.

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

В предпочтительном варианте осуществления оцениваются все доступные соседи. Например, в дополнение к верхнему и левому соседу верхний левый, верхний правый и нижний левый соседи оцениваются в случае доступности.In the preferred embodiment, all available neighbors are evaluated. For example, in addition to the top and left neighbors, 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 character sequence related to more different neighboring media blocks in the case of an activated high performance mode, to select one of a plurality of contexts and select between entropy decoders 322 depending on the probability model associated with the selected context. Those. neighboring blocks may be neighbors in time and/or space. Spatially adjacent blocks are visible, for example in FIG. 1-3. The selector 402 can then respond to the mode selection by the mode switch 400 and perform contact adaptation based on previously retrieved symbols or syntax elements related to more neighboring blocks in the case of HE mode compared to LC mode, thus reducing storage overhead as just described. .

Ниже описывается кодирование с уменьшенной сложностью разностей векторов движения согласно варианту осуществления.The following describes the reduced complexity coding of motion vector differences according to the 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, a 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 mean motion vector predictor. When CABAC is used as an entropy encoder, mvd is encoded as follows. The integer mvd is split into an absolute and a signed part. The absolute part is binarized using a combination of a truncated unary code and a 3rd order Exponential Golomb code, referred to as the prefix and suffix of the resulting bin string. Bins related to truncated unary binarization are encoded using context models, while bins related to exponential Golomb binarization are encoded in bypass mode, i.e. with a fixed probability of 0.5 with CABAC. Unary binarization works as follows. Let the absolute integer value of mvd be n , then the resulting bin string consists of n "1s" and one trailing "0". As an example, let n=4, then the bin string is "11110". In the case of truncated unary, there is a limit, and if the value exceeds this limit, the bin string 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 exponential Golomb binarization. Context modeling for the truncated unary part is done as follows. For the first bin of the bin row, the absolute mvd values from the top and left neighbor 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 (the absolute sum is less than 3) the first context model is selected. In addition, context models are different for each component. For the second bin in the bin string, the fourth context model is used, and the fifth context model is applied to 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 encoded in bypass mode using 3rd order exponential Golomb 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 latest encoding method for mvd when using CABAC as an entropy encoder is specified in the current test 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 a prediction unit (PU). The top and left neighbor PU size may have different shapes and sizes than the current PU. Therefore, where appropriate, the top-left neighbor definition 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 the embodiment. Instead of estimating the absolute sum of MVs from neighbors, each neighbor can be rated separately. If the neighbor's absolute MV is available and is greater than 16, the context model index may be incremented, resulting in the same number of context models for the first bin, while the encoding of the remaining absolute MVD level and sign is 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 described briefly above, up to 9 bins must be encoded with a context model, while the rest of the mvd value may be encoded in a low complexity traversal mode along with sign information. This present embodiment describes a method for reducing the number of bins encoded with context models resulting in an increased number of bypasses 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 bin specifying whether the absolute mvd is greater than zero and one, is 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 the VLC code - not using a unary or truncated unary code - are encoded using a low complexity traversal mode. In the case of PIPE, direct insertion to and from a bitstream is possible. Also, if available, a different top and left neighbor definition can be used to derive the best context model choice for the first bin.

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

В альтернативе вышеописанному кратко методу использования двух, умноженных на пять, контекстов при кодировании абсолютной MVD, чтобы кодировать 9 бинов бинаризации унарным кодом, также может использоваться 14 контекстных моделей (7 для каждой составляющей). Например, в то время как первый и второй бины унарной части могут кодироваться при помощи четырех разных контекстов, как описано ранее, пятый контекст может использоваться для третьего бина, и шестой контекст может использоваться в отношении четвертого бина, тогда как пятый-девятый бины кодируются с использованием седьмого контекста. Таким образом, в данном случае, будет требоваться даже 14 контекстов, и просто оставшееся значение может кодироваться в режиме обхода низкой сложности. Метод для уменьшения количества бинов, кодируемых при помощи контекстных моделей, приводя к увеличенному количеству обходов и уменьшению количества контекстных моделей, требуемых для кодирования MVD, должен уменьшать значение отсечки, например, с 9 до 1 или 2. Это означает, то только первый бин, задающий, является ли абсолютная MVD больше нуля, будет кодироваться с использованием контекстной модели, или первый и второй бины, задающие, является ли абсолютная MVD больше нуля и единицы, будет кодироваться с использованием соответствующей контекстной модели, тогда как оставшееся значение кодируется при помощи кода VLC. Все бины, являющиеся результатом бинаризации с использованием кода VLC, кодируются с использованием режима обхода низкой сложности. В случае PIPE, возможно непосредственное вставление в битовый поток и из него. Кроме того, представленный вариант осуществления использует другое определение верхнего и левого соседа для выведения выбора лучшей контекстной модели для первого бина. В дополнение к этому, контекстное моделирование модифицируется таким образом, что количество контекстных моделей, требуемых для первого или первого и второго бинов уменьшается, приводя к дальнейшему снижению объема памяти. Также, оценка соседей, таких как вышеприведенный сосед, может запрещаться, приводя к экономии объема памяти/буфера строк, требуемого для хранения значений mvd соседей. Наконец, порядок кодирования составляющих может быть разделен таким образом, который позволяет выполнять кодирование бинов префикса для обоих составляющих (т.е. бинов, кодированных контекстными моделями), за которым следует кодирование бинов обхода.In an alternative to the above-described briefly method of using two times five contexts when encoding the absolute MVD to encode 9 unary code binarization bins, 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 with four different contexts as described previously, the fifth context may be used for the third bin and the sixth context may be used for the fourth bin, while the fifth through ninth bins are encoded with using the seventh context. Thus, in this case, even 14 contexts would be required, and just the remaining value could be encoded in a low complexity traversal mode. A method for reducing the number of bins encoded with context models, resulting in an increased number of bypasses and a decrease 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 appropriate context model, while the remaining value is encoded using the VLC code . All bins resulting from binarization using the VLC code are encoded using a low complexity traversal mode. In the case of PIPE, direct insertion to and from the bitstream is possible. In addition, the presented embodiment uses a different top and left neighbor definition to derive the best context model choice for the first bin. In addition, 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 neighbor above, may be disabled, resulting in savings in the amount of memory/row buffer required to store mvd neighbor values. Finally, the coding order of the constituents can be separated in such a way that the encoding of the prefix bins for both constituents (ie, context model encoded bins) is performed, followed by the 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 rest of the absolute terms mvd. For this, the order of the exponential Golomb code is variable. The exponential Golomb code order can be derived as follows. After the context model for the first bin, and therefore the index of that context model, is obtained, the index is used as the order for exponential Golomb 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 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. In addition, 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 parameter of 0 or 1, or a single threshold 32, resulting in an Exponential Golomb parameter of 0 or 2). This preferred embodiment saves the line buffer required to store mvd. In another preferred embodiment, the threshold is modified to be 2 and 16. For this preferred embodiment, a total of 3 context models are required for mvd coding, and a possible exponential Golomb code parameter is in the range 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 may be performed as state of the art or modified in the manner described in the preferred embodiment above. For the second bin, a separate context model is selected, as is the state of the art. In another preferred embodiment, the context model for the second bin is selected by evaluating 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 constituents 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 derived by evaluating 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 for mvd encoding. In both preferred embodiments of the invention, the exponential Golomb code parameter may be fixed and equal to 1. The described preferred embodiment of the invention 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 selection sum of the normal H.264/AVC context model is used to infer the order for the exponential part of the Golomb code. This preferred embodiment can be used for the HE case.

В другом предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба является фиксированным и устанавливается на 0. В другом предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба является фиксированным и устанавливается на 1. В предпочтительном варианте осуществления порядок экспоненциальных кодов Голомба фиксируется на 2. В другом варианте осуществления порядок экспоненциальных кодов Голомба фиксируется на 3. В другом варианте осуществления порядок экспоненциальных кодов Голомба фиксируется в соответствии с формой и размером текущего PU. Представленные предпочтительные варианты осуществления могут использоваться для случая LC. Отметьте, что фиксированный порядок части экспоненциального кода Голомба рассматривается с уменьшенным количеством бинов, кодированных с контекстными моделями.In another preferred embodiment, the order of the Exponential Golomb codes is fixed and set to 0. In another preferred embodiment, the order of the Exponential Golomb codes is fixed and set to 1. In a preferred embodiment, the order of the Exponential Golomb codes is fixed to 2. In another embodiment, the order of the Exponential Golomb codes is fixed to 2. of the Golomb codes is fixed at 3. In another embodiment, the order of exponential Golomb codes is fixed according to the shape and size of the current PU. The present preferred embodiments can be used for the LC case. Note that the fixed order part of the exponential Golomb code is considered with a reduced number of bins coded 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 highest MV is used. This also holds for the left neighbor. All PUs that close 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 boundaries of the current PU is used to derive the first bin.

Для представленных выше предпочтительных вариантов осуществления является возможным изменять порядок кодирования следующим образом. mvd должен быть задан для горизонтального и вертикального направления один за другим (или наоборот). Таким образом, две строки бинов должны кодироваться. Чтобы минимизировать количество переключений режима для механизма энтропийного кодирования (т.е. переключение между режимом обхода и обычным режимом), является возможным кодировать бины, кодированные с контекстными моделями для обоих составляющих на первом этапе, за которым следует бины, кодированные в режиме обхода на втором этапе. Отметьте, что это представляет собой только переупорядочивание.For the preferred embodiments presented above, it is possible to change the encoding order as follows. mvd must be given for horizontal and vertical direction one after the other (or vice versa). Thus, two strings of bins 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 step, followed by bins encoded in bypass mode in the second stage. Note that this is 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 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 current bin index. As an example, the cutoff value for the truncated unary binarization mvd is set to 2, resulting in codewords 0, 10, 11 for the values 0, 1, 2. With a corresponding fixed length binarization with one flag per bin index, one flag for bin index 0 (ie 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, this results in the same codewords 0, 10, 11.

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

При установке HE-PIPE, внутреннее состояние вероятностной модели обновляется после кодирования бина с ним. Обновленное состояние выводится посредством табличного поиска перехода состояния, используя старое состояние и значение кодированного бина. В случае CABAC вероятностная модель может принимать 63 разных состояний, когда каждое состояние соответствует вероятности модели в интервале (0,0, 0,5). Каждое из этих состояний используется для реализации двух вероятностей модели. В дополнение к вероятности, назначенной состоянию, 1,0 минус вероятность также используется, и флаг, названный valMps, хранит информацию, используется ли вероятность или 1,0 минус вероятность. Это приводит к сумме в 126 состояний. Чтобы использовать такую вероятностную модель с принципом кодирования PIPE, каждое из 126 состояний необходимо отображать на один из доступных кодеров PIPE. В текущих реализациях кодеров PIPE это выполняется посредством использования таблицы поиска. Пример такого отображения описывается в таблице A.When HE-PIPE is set, the internal state of the probabilistic model is updated after a bean has been encoded with it. The updated state is output via a state transition table lookup using the old state and the encoded bin value. In the case of CABAC, the probabilistic model can take 63 different states, when each state corresponds to the probability of the model 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 the probability is also used, and a flag named valMps stores whether the probability or 1.0 minus the probability is used. This results in a sum 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. In current implementations of PIPE encoders, this is done through the use of 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 probability model can be represented to eliminate the use of a lookup table to convert the internal state to a PIPE index. Only some simple bit masking operations are needed to extract the PIPE index from the internal state variable of the probabilistic model. This new scalable complexity representation of the internal state of a probabilistic model is designed in a two-level fashion. For applications where a low complexity operation is required, only the first level is used. It only describes the pipe index and the valMps flag, which is used to encode or decode the associated beans. In the case of the described PIPE entropy coding scheme, the first layer can be used to distinguish between 8 different model probabilities. So the first level will need 3 bits for pipeIdx, and one extra bit for the valMps flag. With the second level, each of the first level coarse probability ranges is refined into slightly smaller intervals that support the representation of probabilities at higher resolutions. This more detailed representation allows for more accurate operation of probability estimators. In general, it is suitable for coding applications that aim for high RD performance. As an example, this scalable complexity representation of the internal state of probabilistic models using PIPE is depicted as follows:

Figure 00000009
Figure 00000009

Первый и второй уровни сохраняются в единственной 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 - an 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 behavior of the CABAC probability estimator, 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 displayed in table B.

Figure 00000010
Figure 00000010

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

Во время процесса кодирования или декодирования бина к индексу 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 application of a simple bit mask or bit shift operations. Low complexity coding processes require 4 bits of the first layer, and high efficiency coding processes may additionally use 4 bits of the second layer to perform an update of the probability model of the CABAC probability estimator. To accomplish 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, multiplied by 63 elements. For each input state, it contains two output states. When using a representation with scalable complexity, the size of the state transition table does not exceed 2 times 128 elements, which is a reasonable increase in the size of the table. This increase depends on how many bits are used to represent the refinement index and accurately mimic the behavior of the CABAC probability estimator, four bits are needed. However, other probability estimators can be used that can operate on a reduced CABAC state set such that no more than 8 states are allowed per pipe index. Therefore, memory consumption can be matched with 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 probability state of a model 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 update of the context model with scalable complexity according to the embodiment is described below.

Для обновления контекстной модели ее индекс состояния вероятности может обновляться на основе одного или нескольких ранее кодированных бинов. В установке 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 has been 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 may be based on various aspects. For example, the encoder setting may not update only for specific context models, like, for example, the context models of the coeff_significant_flag syntax element, and always update for all other context models.

Другими словами, селектор 402 может быть выполнен, для символов каждого из нескольких заданных типов символа, с возможностью выполнения выбора среди энтропийных декодеров 322 в зависимости от соответствующей вероятностной модели, ассоциированной с соответствующим заданным символом, так что количество заданных типов символа меньше в режиме низкой сложности по сравнению с режимом высокой эффективности.In other words, the selector 402 can be configured, for symbols of each of a plurality of given symbol types, to perform a selection among entropy decoders 322 depending on the corresponding probability model associated with the corresponding given symbol, so that the number of given symbol types is smaller 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 particular fixed or variable number of bins for the context model.

С данной схемой для принятия решения, обновлять ли контекстные модели или нет, может быть реализовано обновление контекстной модели с масштабируемой сложностью. Это позволяет увеличивать или уменьшать долю бинов в битовом потоке, для которого выполняется обновления контекстной модели. Чем больше количество обновлений контекстной модели, тем лучше эффективность кодирования и выше вычислительная сложность. Таким образом, обновление контекстной модели с масштабируемой сложностью может достигаться с описанной схемой.With this scheme for deciding whether to update the context models or not, updating the context model with scalable complexity can be implemented. This allows you to increase or decrease the proportion of bins in the bitstream for which context model updates are performed. The greater the number of context model updates, the better the coding efficiency and the higher the computational complexity. Thus, updating the context model 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 beans of all syntax elements except for 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 for the coeff_significant_flag, coeff_abs_greater1, and coeff_abs_greater2 syntax element beans.

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

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

Другой предпочтительный вариант осуществления идентичен ранее описанному предпочтительному варианту осуществления, но он использует представление с масштабируемой сложностью внутреннего состояния контекстных моделей таким образом, что одна таблица хранит «первую часть» (valMps и pipeIdx) всех контекстных моделей, и вторая таблица хранит «вторую часть» (refineIdx) всех контекстных моделей. Тогда, когда обновление контекстной модели запрещается для всех контекстных моделей (как описано в предыдущем предпочтительном варианте осуществления), больше не требуется таблица, хранящая «вторую часть», и она может быть отброшена.Another preferred embodiment is identical to the previously described preferred embodiment, but uses a scalable complexity 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. 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 needed and can be dropped.

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

В конфигурации 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 may be performed after encoding a fixed number of bins of a given sequence. This is indicated by a multibin update in the following. However, this update may differ from an update using only the last encoded bean and the internal state of the context model. For example, for each bean that has been encoded, one step of updating the context model is performed.

Ниже приведены примеры для кодирования примерного подмножества, состоящего из 8 бинов. Буква «b» обозначает декодирование бина, и буква «u» обозначает обновление контекстной модели. В случае LC-PIPE выполняется только декодирование бинов без выполнения обновлений контекстной модели:The following are examples for encoding an exemplary subset of 8 bins. The letter "b" denotes the decoding of the bean, and the letter "u" denotes the update of the context model. In the case of LC-PIPE, only decoding of the bins 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 the complexity to some extent, updating the context model can be performed after a sequence of bins (in this example, after every 4 bins, updates of these 4 bins 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 perform a selection from among entropy decoders 322 depending on the probability model associated with the given symbol type with or without updating the associated probability model such that the rate at which symbol selection is performed of a given symbol type along with an update, less in low complexity mode compared to high efficiency mode.

В данном случае, после декодирования 4 бинов следует 4 этапа обновления, основанные на только что декодированных 4 бинах. Отметьте, что эти четыре этапа обновления могут выполняться одним единственным этапом посредством использования специальной таблицы поиска для поиска. Эта таблица поиска хранит для каждой возможной комбинации из 4 бинов и каждого возможного внутреннего состояния контекстной модели результирующее новое состояние после четырех обычных этапов обновления.In this case, after decoding 4 bins, 4 update steps follow 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 each possible combination of 4 bins and each possible internal state of the context model, the resulting new state after the four normal 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, a multibin update is used for the coeff_significant_flag syntax element. For all other syntax element beans, the context model update is not used. The number of bins that are encoded before the multi-bin update step is set to n. When the number of set bins is not a multiple of n, 1-n-1 bins remain at the end of the subset after the last multi-bin update. For each of these bins, a normal one-bin update is performed after all of these bins have been encoded. The number n can be any positive number greater than 1. The other mode can be identical to the previous mode, except that the 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). Thus, this mode will be more difficult 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 non-overlapping 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 just before the multi-bin update step. m can be any natural number less than n. Thus, 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.at n=4 and m=2.

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

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

Кроме того, селектор 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 character sequence and perform selection from among entropy decoders 322 depending on the probabilistic model associated with the selected context, so that the number of contexts, and/or the number of previously extracted symbols, is less 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 the internal state with scalable complexity of probabilistic models using the so-called 8-bit initialization value instead of two 8-bit values, as is the case with the current H.264/AVC video coding standard. It consists of two parts that are comparable to the initialization value pairs used for probability 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 particular probability (for example, as a PIPE index) from QP:

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

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

Два разных режима являются доступными для инициализации вероятностной модели, используя данное значение инициализации. Первый режим обозначается как независимая от QP инициализация. Он использует только индекс PIPE и valMps, определенные во второй части значения инициализации для всех QP. Это идентично случаю, когда наклон равен 0. Второй режим обозначается как зависимая от QP инициализация, и он дополнительно использует наклон первой части значения инициализации для изменения индекса PIPE и определения индекса уточнения. Две части 8-битового значения инициализации изображаются следующим образом:Two different modes are available for initializing a probability model using a given initialization value. The first mode is referred to 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 where the slope is 0. The second mode is referred to as QP-dependent initialization, and it additionally uses the slope of the first part of the initialization value to modify the PIPE index and determine the refinement index. The two parts of the 8-bit initialization value are shown as follows:

Figure 00000011
Figure 00000011

Оно состоит из двух 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 slopes specified, which are stored in the array. The target 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.

Figure 00000012
Figure 00000012

Таблица 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 floating point operations. The second part is the PIPE index, which represents the ascending 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. For each probability model, one PIPE probability index is available and it identifies the PIPE encoder whose probability interval contains the probability p valMPs=1 for QP=26.

Figure 00000013
Figure 00000013

Таблица 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 - equiprobability (not encoded)

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.QP and an 8-bit initialization value are required to calculate the initialization of the internal state of probabilistic models by calculating a simple linear equation in the form y=m*(QP-QPref)+256*b. Note that m defines 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 shown 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 scheme not only can be used in combination with PIPE encoders, but also in connection with the above mentioned CABAC schemes. In the absence of PIPE, the number of CABAC states, i.e. probabilistic states between which the state transition occurs when updating the probability (pState_current[bin]) on PIPE Idx (i.e. the corresponding most significant bits of pState_current[bin]) are then only a set of parameters that implement, in fact, piecewise linear interpolation CABAC states depending on QP. In addition, this piecewise linear interpolation can also be virtually disabled if the numStates parameter uses the same value for all PIPE Idx. For example, setting numStates to 8 for all cases gives a total of 16*8 states, and 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 refinement idx 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 with respect to FIG. 16.

Если наклон 8-битового значения инициализации не равен нулю, или если QP не равно 26, то необходимо вычислять внутреннее состояние применением линейного уравнения с QP процесса кодирования или декодирования. В случае наклона, равного нулю, или что QP текущего процесса кодирования равно 26, вторая часть 8-битового значения инициализации может использоваться непосредственно для инициализации внутреннего состояния вероятностной модели. В противном случае, десятичная часть результирующего внутреннего состояния может быть дополнительно использоваться для определения индекса уточнения в применениях высокоэффективного кодирования посредством линейной интерполяции между пределами конкретного кодера PIPE. В данном предпочтительном варианте осуществления линейная интерполяция выполняется простым умножением десятичной части на общее количество индексов уточнения, доступных для текущего кодера PIPE и отображением результата на ближайший целочисленный индекс уточнения.If the slope of the 8-bit initialization value is not equal to zero, or if 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 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 specific PIPE encoder limits. 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 process of initializing the internal state of probabilistic models can vary with respect to the number of states of the PIPE probability index. In particular, the double presence of the equiprobable mode using the E1 PIPE encoder, i.e. using two different PIPE indices to distinguish between MPS equal to 1 or 0 can be avoided as follows. Again, the process may be called at the start of slice data parsing, and the input of this process may be an 8-bit initialization value, as shown in Table E, which, for example, is transmitted in the bitstream for each context model to be initialized.

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

Figure 00000014
Figure 00000014

Первые 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

Figure 00000015
Figure 00000015

Биты 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 at a given QP. probIdx 0 indicates the highest probability for symbols with a value of 0 and, accordingly, 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 the PIPE and valMps encoders: UR - unary-to-Rice code, TB - three-bin code, BP - bin-pipe code, EP - equiprobability (not encoded)

Figure 00000016
Figure 00000016

С обоими значениями вычисление внутреннего состояния может выполняться посредством использования линейного уравнения, подобного y=m*x+256*b, где m обозначает наклон, x обозначает QP текущего слайса, и b выводится из probIdx, как показано в последующем описании. Все значения в данном процессе масштабируются коэффициентом 256, чтобы избежать использование операций с плавающей запятой. Выходной результат (y) данного процесса представляет внутреннее состояние вероятностной модели при текущем QP и сохраняется в 8-битовой памяти. Как показано в G, внутреннее состояние состоит из valMPs, pipeIdx и refineIdx.With both values, the 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 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 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

Figure 00000017
Figure 00000017

Figure 00000018
Figure 00000018

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

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

Figure 00000019
Figure 00000019

В предпочтительном варианте осуществления 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 probability model is processed as described in the following pseudocode:

Figure 00000020
Figure 00000020

Figure 00000021
Figure 00000021

Как показано в псевдокоде, 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 quantization of the result into the corresponding refineIdx. The offset specifies the total number of refineIdx for each pipeIdx. The interval [7, 8) fullCtxState/256 is halved. Interval [7, 7,5) maps to pipeIdx=0 and valMps=0, and interval [7,5, 8) maps to pipeIdx=0 and valMps=1. Fig. 16 shows the internal state inference process and maps fullCtxState/256 to pStateCtx.

Отметьте, что наклон указывает зависимость probIdx и QP. Если slopeIdx 8-битового значения инициализации равно 7, результирующее внутреннее состояние вероятностной модели является одинаковым для всех QP слайса - следовательно процесс инициализации внутреннего состояния является независимым от текущего QP слайса.Note that the slope indicates the relationship between probIdx and QP. If the 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 slice's current 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, the selector 402 may initialize the 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 contained within it using the given syntax element as an index into a table that can be shared between both modes, LC and HE. A table, such as table D, may contain pipe indices 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 entry a indexed by the actual QP or by the QP itself, for example by multiplying a by (QP-QPref). The only difference in LC and HE mode: The selector only calculates the result with less precision in case of LC than in HE mode. A selector, for example, could simply use the integer part of the result of the evaluation. In HE mode, a higher precision remainder, such as a fractional part, is used to select one of the available refinement indexes 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 above table traversal. If leaving the available indices for the current pipe index at the higher bound, then the higher pipe index is chosen next, minimizing the refinement index. If leaving the available indices 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 along with the refinement index determines the probability state, but to select from among partial streams, the selector simply uses the pipe index. The Refinement Index is simply for more precise probability tracking, or for higher accuracy.

Вышеупомянутое описание также показало, однако, что масштабируемость сложности может достигаться независимо от принципа кодирования PIPE по фиг. 7-10 или CABAC, используя декодер, показанный на фиг. 12. Декодер по фиг.12 предназначен для декодирования потока 601 данных, в который кодируются медиаданные, и содержит переключатель 600 режима, выполненный с возможностью активизирования режима низкой сложности или режима высокой эффективности в зависимости от потока 601 данных, а также десимволизатор 602, выполненный с возможностью десимволизирования последовательности 603 символов, полученных - или прямо или посредством энтропийного декодирования, например - из потока 601 данных для получения целочисленных синтаксических элементов 604, используя функцию отображения, управляемую параметром управления, для отображения области определения слов последовательности символов в область значений целочисленных синтаксических элементов. Восстановитель 605 выполнен с возможностью восстановления медиаданных 606, основываясь на целочисленных синтаксических элементах. Десимволизатор 602 выполнен с возможностью выполнения десимволизирования, так что параметр управления изменяется в соответствии с потоком данных с первой скоростью в случае активизированного режима высокой эффективности, и параметр управления является постоянным независимо от потока данных или изменяется в зависимости от потока данных, но со второй скоростью, которая меньше первой скорости, в случае активизированного режима низкой сложности, как показано стрелкой 607. Например, параметр управления может изменяться в соответствии с ранее десимволизированными символами.The above description has also shown, however, that complexity scalability can be achieved regardless of the PIPE coding principle of FIG. 7-10 or CABAC using the decoder shown in FIG. 12. The decoder of FIG. 12 is designed 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, as well as a desymbolizer 602 configured to the ability to desymbolize the sequence 603 of characters obtained - either directly or by entropy decoding, for example - from the data stream 601 to obtain integer syntax elements 604, using a mapping function controlled by a control parameter to map the word definition area of the character sequence to the range of integer syntax elements. The restorer 605 is configured to restore the media data 606 based on the integer syntax elements. The desymbolizer 602 is configured to perform desymbolization such that the control parameter changes according to the data stream at the first rate in the case of the high performance mode enabled, and the control parameter is constant regardless of the data stream or changes depending on the data stream but at the second rate, which is less than the first rate, in the case of the activated low complexity mode, as shown by arrow 607. For example, the 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 syntax elements coeff_abs_minus3 and MVD 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 to restore. Obviously, both aspects of FIG. 11 and 19 are easily combined, but an aspect of FIG. 12 can also be combined with other coding environments.

См., например, отмеченное выше кодирование разностей векторов движения. Десимволизатор 602 может быть выполнен так, что функция отображения использует усеченный унарный код для выполнения отображения в первом интервале области определения целочисленных синтаксических элементов ниже значения отсечки и комбинацию префикса в виде усеченного унарного кода для значения отсечки и суффикса в виде кодового слова VLC во втором интервале области определения целочисленных синтаксических элементов, включая и выше значения отсечки, причем декодер может содержать энтропийный декодер 608, выполненный с возможностью выведения количества первых бинов усеченного унарного кода из потока 601 данных, используя энтропийное декодирование с оценкой изменяющейся вероятности, и количества вторых бинов кодового слова VLC, используя режим обхода с постоянной равновероятностью. В режиме HE энтропийное кодирование может быть более сложным, чем при кодировании LC, как показано стрелкой 609. Т.е. контекстная адаптивность и/или вероятностная адаптация могут применяться в режиме HE и подавляться в режиме LC, или сложность может масштабироваться в других показателях, как изложено выше в отношении различных вариантов осуществления.See, for example, the motion vector difference coding noted above. The desymbolizer 602 may be configured such that the mapping function uses a truncated unary code to perform mapping in the first domain interval 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 domain interval determining integer syntax elements, including and above cutoff values, wherein the decoder may comprise an entropy decoder 608 configured to derive the number of first bins of the truncated unary code from the data stream 601 using entropy decoding with varying probability estimation, and the number of second bins of the VLC codeword, using the bypass mode with constant equiprobability. In the HE mode, entropy coding may be more complex than in LC coding, as indicated by arrow 609. That is, context adaptiveness and/or probabilistic adaptation may be applied in the HE mode and suppressed in the LC mode, or the complexity may be scaled in other metrics 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 precode media data 505 into a sequence 506 of syntax elements, a symbolizer 507 configured to symbolize the sequence 506 syntax elements into a character sequence 508, a plurality of entropy encoders 310, each of which is configured to convert partial character sequences into data stream codewords, and a selector 502, configured to direct each character of the character 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 which one of the low complexity mode and the high efficiency mode is activated, as indicated by arrow 511. The interleaver 510 may optionally be provided to interleave the codewords of 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 an activation of a low complexity mode or a high efficiency mode, a constructor 704 configured to precode media data 705 into a sequence 706 of syntax elements 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 the domain of integer syntax elements to the range of words of a sequence of characters, and the symbolizer 707 is configured to perform symbolization, so that the control parameter changes in accordance with the data stream at a first rate in the case of high performance mode enabled, and the control parameter is constant regardless of the data flow or varies depending on the data flow, but with the second th rate, which is less than the first rate, in the case of an activated low complexity mode, as indicated by arrow 708. The symbolization result is encoded into data stream 701.

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

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

В частности, фиг. 16 изображает декодер для декодирования видео 405 из потока 401 данных, для которого кодируются горизонтальные и вертикальные составляющие разностей векторов движения, используя бинаризации горизонтальных и вертикальных составляющих, причем бинаризации равны усеченному унарному коду горизонтальных и вертикальных составляющих соответственно в первом интервале области определения горизонтальных и вертикальных составляющих ниже значения отсечки, и комбинации префикса в виде усеченного унарного кода. Значение отсечки и суффикс в виде экспоненциального кода Голомба горизонтальных и вертикальных составляющих соответственно во втором интервале области определения горизонтальных и вертикальных составляющих включительно и выше значения отсечки, причем значение отсечки равно 2, и экспоненциальный код Голомба имеет порядок 1. Декодер содержит энтропийный декодер 409, выполненный, для горизонтальных и вертикальных составляющих разностей векторов движения, с возможностью выведения усеченного унарного кода из потока данных, используя контекстно-адаптивное двоичное энтропийное декодирование с точно одним контекстом на каждую позицию бина усеченного унарного кода, который является общим для горизонтальных и вертикальных составляющих разностей векторов движения, и экспоненциального кода Голомба, используя режим обхода с постоянной равновероятностью для получения бинаризаций разностей векторов движения. Более точно, как описано выше, энтропийный декодер 409 может быть выполнен с возможностью выведения количества бинов 326 бинаризаций из потока 401 данных, используя бинарное энтропийное декодирование, такое как вышеупомянутая схема CABAC, или бинарное декодирование PIPE, т.е. использование конструкции, включающей в себя несколько параллельно работающих энтропийных декодеров 322 вместе с соответствующим селектором/средством назначения. Десимволизатор 314 дебинаризирует бинаризации синтаксических элементов разностей векторов движения для получения целочисленных значений горизонтальных и вертикальных составляющих разностей векторов движения, и восстановитель 404 восстанавливает видео, основываясь на целочисленных значениях горизонтальных и вертикальных составляющих разностей векторов движения.In particular, FIG. 16 shows a decoder for decoding video 405 from a data stream 401 for which the horizontal and vertical components of the motion vector differences are encoded using the binarizations of the horizontal and vertical components, the binarizations being equal to the truncated unary code of the horizontal and vertical components, respectively, in the first interval of the horizontal and vertical components definition domain. below the cutoff value, and the prefix combination as a truncated unary code. The cutoff value and the exponential Golomb code suffix of the horizontal and vertical components, respectively, in the second interval of the horizontal and vertical components definition area inclusive and above the cutoff value, where the cutoff value is 2, and the exponential Golomb code has an order of 1. The decoder comprises an entropy decoder 409 made , for horizontal and vertical motion vector difference components, with the ability to derive the 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 that is common to the horizontal and vertical motion vector difference components , and exponential Golomb code, using the constant equiprobability bypass mode to obtain binarizations of motion vector differences. More specifically, as described above, entropy decoder 409 may be configured to derive the number of binarization bins 326 from data stream 401 using binary entropy decoding, such as the aforementioned CABAC scheme, or binary PIPE decoding, i. using a design including multiple entropy decoders 322 operating in parallel along with an appropriate selector/assignor. The desymbolizer 314 debinarizes the binarizations of the motion vector difference syntax elements to obtain integer values of the horizontal and vertical motion vector difference components, and the decompressor 404 reconstructs the video based on the integer values of the horizontal and vertical motion vector difference components.

Чтобы объяснить это более подробно, ссылка кратко делается на фиг. 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 made briefly to FIG. 18. Position 800 represents one motion vector difference, i. e. a vector representing the prediction residual between the predicted motion vector and the actual/recovered motion vector. Also shown are the horizontal and vertical components 802x and 802y. They may 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 x,y components 802 are integers. Their range extends from zero to infinity. The sign value can be handled separately and is no longer discussed here. In other words, the description summarized herein focuses on the magnitude of the motion vector differences 802x,y. The domain is shown at 804. On the right side of the domain axis 804 of FIG. 19 depicts, associated with vertically stacked positive component values 802x,y, a binarization into which the corresponding candidate value is mapped (binarized). As can be seen, below the cutoff value of 2, only the truncated unary code 806 takes place, while the binarization has, as a suffix, also the exponential Golomb code of order 808 of the possible values equal to or greater than the cutoff value of 2, in order to continue binarization for the remainder an 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 binarizations of the horizontal and vertical components 802x,y, and another 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 equiprobable bypass mode is used by the entropy decoder 409. That is, both bin values are assumed to occur with equal probability. The probability score for these bins is fixed. In comparison, the probability estimate associated with the just-mentioned two bin contexts of the truncated unary code 806 adapts 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, with respect to how the entropy decoder 409 can be implemented, in accordance with the above description, in order to perform the tasks just mentioned, the description now focuses on a possible implementation of the restorer 404, which uses the motion vector differences 800 and its integer values, obtained by the desymbolizer 314 by rebinarizing the code bins 106 and 108, the rebinarization being shown in FIG. 18 using the arrows 810. In particular, the restorer 404 as described above can extract from the data stream 401 information regarding the subdivision of the currently reconstructed image into blocks, among which at least some are subject to motion compensation prediction. Fig. 19 shows the image to be reconstructed representatively at 820 and the blocks of the just-mentioned sub-image 120 for which motion-compensated prediction is used to predict the image content therein at 822. As described with respect to FIG. 2A-2C, there are different possibilities for subdivision and block sizes 122. To avoid transmitting a motion vector difference 800 for each of these blocks 122, decomposer 404 can use a merge principle whereby the data stream additionally transmits merge information in addition to subdivision information. or, in the absence of division information, in addition to the fact that the division is fixed. The merge information signals the restorer 404 on which of the blocks 822 to generate merge groups. By this measure, it is possible for the restorer 404 to apply some motion vector difference 800 to the entire block merge group 822. Of course, on the coding side, the transmission of the merge information is subject to a trade-off between division transmission costs (if present), merger information transmission costs, and transmission costs. motion vector differences, which decrease as the size of the fusion groups increases. On the other hand, increasing the number of blocks per merge group reduces the adaptation of the motion vector difference 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 residual as, for example, a level of transform coefficients. Therefore, a compromise is made on the encoding side accordingly. In either case, however, the fusion principle results in motion vector differences for the fusion groups, representing less spatial cross-correlation. See, for example, FIG. 19, which depicts membership in a certain merge group by shading. Obviously, the actual movement of the image content in these blocks was so similar that the encoding side decided to merge the respective blocks. However, there is little correlation with the movement of image content in other merge groups. Therefore, the restriction to use just one context per bin of the truncated unary code 806 does not adversely affect the efficiency of entropy coding, since the fusion principle already sufficiently provides for spatial cross-correlation between the movement of the contents of neighboring images. The context may simply be selected based on the fact that the bin is part of the binarization of the x,y component 802 of the motion vector difference and the position of the bin, which is either 1 or 2 due to the cutoff value being two. Therefore, other already decoded bins/syntax elements/constituents 802 x,y mvd do not affect context selection.

Аналогично, восстановитель 404 может быть выполнен с возможностью дополнительного уменьшения информационного содержимого, подлежащего пересылке, посредством разностей векторов движения (кроме пространственного и/или временного предсказания векторов движения) посредством использования принципа многогипотезного предсказания, согласно которому, сначала, генерируется список предикторов вектора движения для каждого блока или группы слияния, затем явной или неявной передачи в потоке данных информации об индексе предиктора, подлежащего фактическому использованию для предсказания разностей векторов движения. См., например, незаштрихованный блок 122 на фиг. 20. Восстановитель 404 может обеспечивать разные предикторы для вектора движения данного блока, например, посредством предсказания вектора движения пространственно, например, из левого, из верхнего, комбинации обоих и т.п., и временного предсказания вектора движения из вектора движения совместно размещенной части ранее декодированного изображения видео и дополнительных комбинаций вышеупомянутых предикторов. Эти предикторы сортируются восстановителем 404 предсказуемым образом, который является прогнозируемым на кодирующей стороне. Некоторая информация передается с этой целью в потоке данных и используется восстановителем. Т.е. некоторая рекомендация содержится в потоке данных, в отношении того, какой предиктор из данного упорядоченного списка предикторов будет фактически использоваться в качестве предиктора для вектора движения данного блока. Этот индекс может явно передаваться в потоке данных для этого блока. Однако также является возможным, что индекс сначала предсказывается и затем передается только его предсказание. Также существуют другие возможности. В любом случае, только что упомянутая схема предсказания позволяет получить очень точное предсказание вектора движения текущего блока и, следовательно, уменьшается требование к информационному содержимому, накладываемое на разность вектора движения. Следовательно, ограничение контекстно-адаптивного энтропийного кодирования на только два бина усеченного унарного кода и уменьшение значения отсечки до 2, как описано в отношении фиг. 18, а также выбор порядка экспоненциального кода Голомба равным 1, не оказывает отрицательного эффекта на эффективность кодирования, так как разности векторов движения показывают, вследствие высокой эффективности предсказания, частотную гистограмму, согласно которой более высокие значения составляющих 802x,y разности векторов движения посещаются менее часто. Даже пропуск любого отличия между горизонтальной и вертикальной составляющими подходит для эффективного предсказания, так как являются высокими тенденции предсказания работы с одинаковым успехом по обеим направлениям точности предсказания.Similarly, the restorer 404 can be configured to further reduce the information content to be transferred 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 for each a merge block or group, then explicitly or implicitly transmitting in the data stream information about the predictor index to be actually used to predict motion vector differences. See, for example, open box 122 in FIG. 20. The 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 left, from top, a combination of both, and the like, and temporally predicting the motion vector from the motion vector of the previously co-located portion. decoded video image and additional combinations of the above predictors. These predictors are sorted by the restorer 404 in a predictable manner that is predictable at the coding side. Some information is transmitted for this purpose in the data stream and used by the restorer. Those. some advice 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 the 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 prediction scheme just mentioned makes it possible to obtain a very accurate prediction of the motion vector of the current block, and hence the content requirement imposed on the motion vector difference is reduced. Therefore, limiting the context adaptive entropy coding to only two bins of the truncated unary code and reducing the cutoff value to 2, as described with respect to FIG. 18, as well as setting the exponential Golomb code order to 1, has no negative effect on the coding efficiency, since the motion vector differences show, due to the high prediction efficiency, a frequency histogram, according to which the higher values of the 802x,y components of the motion vector differences are visited less frequently. . Even omitting any difference between the horizontal and vertical components is good for efficient prediction, since the prediction tends to work 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 FIG. 1-15 are also transferable to the objects shown in FIG. 16, such as, for example, that relate to the functionality of the desymbolizer 314, decompressor 404, and entropy decoder 409. However, for 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 outlined, see FIG. 20. As just described, the constructor 404 may obtain different predictors for the current block 822 or the current block merge group, these predictors being shown as solid line vectors 824. The predictors may be obtained by spatial and/or temporal prediction, and in addition, arithmetic mean operations or the like may be used so that the individual predictors may be obtained by the reconstructor 404 such that they correlate with each other. Regardless of the manner in which the vectors 826 were obtained, the restorer 404 sequentially presents or sorts these predictors 126 into an ordered list. This is represented by numbers 1-4 in Fig. 21. Preferably, the sorting process is uniquely defined so that the encoder and decoder can work in sync. Then the index just mentioned can be obtained by the restorer 404 for the current block, or merge group, from the data stream, explicitly or implicitly. For example, the second predictor "2" may be selected, and the reconstructor 404 adds the motion vector difference 800 to this selected predictor 126, thus obtaining a finally reconstructed motion vector 128, which is then used to predict, by motion compensated prediction, the contents of the current block/ merge groups. In the case of a merge group, it will be possible that the restorer 404 contains additional motion vector differences provided for the blocks of the merge group to further refine the motion vector 128 with respect to the 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 with the description of the implementations of the objects shown in FIG. 16, it may be that the entropy decoder 409 is configured to derive the truncated unary code 806 from the data stream 401 using binary arithmetic decoding or binary PIPE encoding. Both principles have been described above. In addition, the entropy decoder 409 may be configured to use different contexts for two bin positions of the truncated unary code 806, or alternatively even the same context for both bins. Entropy decoder 409 may be configured to perform a probability state update. Entropy decoder 409 can do this, for the bin currently derived from truncated unary code 806, by transitioning from the current probability state associated with the context selected for the currently derived bin to a new probability state depending on the bin derived in this moment. See the above tables Next_State_LPS and Next_State_MPS, which is table searched by the entropy decoder in addition to the other steps 0-5 listed above. In the above description, the current probability state has been 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 to be derived from the truncated unary code 806 by quantizing the width value of the current probability interval, i. R representing the current probability interval to obtain the probability interval index, q_index, and subdivide the interval 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 obtain 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 two or three most significant 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 the two partial bins based on an offset state value from the interior of the current probability bin, namely V, updating the probability bin width value R and the offset state value, and guessing the bin value to be output to now using the selected partial interval, and renormalizing the updated probability interval width value R and the offset state value V, including continuing to read bits from the data stream 401 . The entropy decoder 409, for example, may be configured to binary arithmetic decode a bin from the Exponential Golomb code by halving the current probability interval width value to obtain a division of the current probability interval into two partial intervals. Bisection corresponds to a probability estimate that is fixed at 0.5. It can be implemented by a simple bit shift. The entropy decoder may further be configured, for each motion vector difference, to derive a truncated unary code for the horizontal and vertical components of the corresponding motion vector difference from the data stream 401, before the exponential Golomb code of the horizontal and vertical components of the corresponding motion vector difference. Through this measure, the entropy decoder 409 can exploit that more bins together form a series of bins for which the probability score is fixed, namely 0.5. This can speed up the entropy decoding procedure. On the other hand, the entropy decoder 409 may prefer to maintain order among the motion vector differences by first deriving the horizontal and vertical components of one motion vector difference, then proceeding to simply derive 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 in Fig. 16 because 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 exactly one context is available per bin position of code 806, no spatial relationship needs to be inspected.

Восстановитель 404, как описано выше, может пространственно и/или временно предсказывать горизонтальные и вертикальные составляющие векторов движения, чтобы получать предикторы 126 для горизонтальной и вертикальной составляющих вектора движения и восстанавливать горизонтальные и вертикальные составляющие векторов движения посредством уточнения предикторов 826, используя горизонтальные и вертикальные составляющие разностей векторов движения, например, просто добавлением разности векторов движения к соответствующему предсказателю.The reconstructor 404, as described above, can spatially and/or temporally predict the horizontal and vertical components of the motion vectors to obtain predictors 126 for the horizontal and vertical components of the motion vector and reconstruct the horizontal and vertical components of the motion vectors by refining the 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, the reconstructor 404 may be configured to predict the horizontal and vertical motion vector components in different ways to obtain an ordered list of predictors for the horizontal and vertical motion vector components, obtain the index of the list from the data stream, and reconstruct the horizontal and vertical motion vector components by predictor refinement. , by 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 already described above, the restorer 404 may be configured to reconstruct the video using motion-compensated prediction by applying the horizontal and vertical components 802x,y of the motion vectors at a spatial granularity determined by subdividing the video images into blocks, wherein the restorer 404 may use the merge syntax elements present in the data stream 401 to group the blocks into merge groups and apply the integer values of the horizontal and vertical components 802x,y of the motion vector differences obtained by the binarizer 314 in units of the merge groups.

Восстановитель 404 может выводить подразделение изображений видео в блоки из части потока 401 данных, который исключает синтаксические элементы слияния. Восстановитель 404 также может адаптировать горизонтальную и вертикальную составляющие предопределенного вектора движения для всех блоков ассоциированной группы слияния, или уточнять их посредством горизонтальных и вертикальных составляющих разностей векторов движения, ассоциированных с блоками группы слияния.The decompressor 404 may output the division of the video images into blocks from the portion of the data stream 401 that excludes the 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 means of 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. The encoder of 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 compensation prediction using motion vectors, and predictively encode motion vectors by predicting motion vectors and setting integer values 506 horizontal and vertical motion vector difference components 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 the 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 a 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 definition area of the horizontal and vertical components, inclusive and above the cutoff value, where the cutoff value is two, and the exponential Golomb code has an order equal to one; and an entropy encoder 513, configured, for the horizontal and vertical motion vector difference components, to encode the truncated unary code into the data stream using context-adaptive binary entropy coding with exactly one context per bin position of the truncated unary code that is common to horizontal and the vertical components of the motion vector differences, and the exponential Golomb code, using the bypass mode with constant equiprobability. Other possible implementation details are directly transferable from the description regarding the decoder of FIG. 16 to 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, the aspects described in the context of a method step also provide a description of the corresponding block or element or feature of the corresponding device. Some or all of the steps of the method 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 important 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. The implementation may be performed using a digital storage medium such as floppy disk, digital multifunctional disk (DVD), Blue-Ray disk, CD, 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 may be computer-readable.

Некоторые варианты осуществления согласно изобретению содержат носитель данных, имеющий электронно-считываемые сигналы управления, которые способны взаимодействовать с программируемой компьютерной системой, так что выполняется один из способов, описанных в данном документе.Some embodiments of the invention comprise 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, the program code being operable to perform one of the methods when the computer program product is running on a computer. The program code may, for example, 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 an inventive method, therefore, is a computer program having program code for performing one of the methods described herein when the computer program is running 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 recorded thereon for performing one of the methods described herein. The storage medium, digital storage medium, or recorded medium is usually tangible and/or intransitive.

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

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

Дополнительный вариант осуществления содержит компьютер, имеющий установленную на нем компьютерную программу для выполнения одного из способов, описанных в данном документе.An additional 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 an apparatus or system capable of being sent (eg, electronically or optically) to a computer program receiver to perform one of the methods described herein. The receiver may, for example, be a computer, a mobile device, a memory device, or the like. The device or system, for example, may include a file server for sending a computer program to a receiver.

В некоторых вариантах осуществления программируемое логическое устройство (например, программируемая вентильная матрица) может использоваться для выполнения некоторых или всех функциональных возможностей способов, описанных в данном документе. В некоторых вариантах осуществления программируемая вентильная матрица может взаимодействовать с микропроцессором для выполнения одного из способов, описанных в данном документе. В общем, способы, предпочтительно, выполняются любым аппаратным устройством.In some embodiments, a programmable logic device (eg, a field programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a programmable gate array may communicate 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 is understood that modifications and changes to the devices and parts described herein are obvious to a person 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 way of describing and explaining the embodiments herein.

Claims (44)

1. Декодер для декодирования видео из потока данных, причем видео декодируется с предсказанием посредством предсказания с компенсацией движения, используя векторы движения и разности векторов движения, представляющие ошибку предсказания относительно векторов движения, при этом упомянутый декодер содержит:1. A decoder for decoding video from a data stream, wherein the video is predictively decoded by motion-compensated prediction using motion vectors and motion vector differences representing a prediction error with respect to the motion vectors, said decoder comprising: энтропийный декодер, выполненный, для горизонтальной и вертикальной составляющих каждой из разностей векторов движения, с возможностьюentropy decoder, made for the horizontal and vertical components of each of the motion vector differences, with the ability to получения из потока данных усеченного унарного кода и экспоненциального кода Голомба,obtaining a truncated unary code and an exponential Golomb code from the data stream, декодирования усеченного унарного кода, используя контекстно-адаптивное двоичное энтропийное декодирование с точно одним контекстом на позицию бина усеченного унарного кода, причем контекст совместно используется горизонтальной и вертикальной составляющими разности векторов движения, иdecoding the truncated unary code using context-adaptive binary entropy decoding with exactly one context per bin position of the truncated unary code, the context being shared by the horizontal and vertical motion vector difference components, and декодирования экспоненциального кода Голомба, используя режим обхода с постоянной равновероятностью, для получения горизонтальной и вертикальной составляющих разности векторов движения; иdecoding the exponential Golomb code using a constant equiprobability bypass mode to obtain horizontal and vertical motion vector difference components; and восстановитель, выполненный с возможностью восстановления видео, основываясь на горизонтальных и вертикальных составляющих разностей векторов движения.a restorer configured to restore the video based on the horizontal and vertical components of the motion vector differences. 2. Декодер по п. 1, в котором энтропийный декодер выполнен с возможностью использования разных контекстов для разных позиций бина усеченного унарного кода.2. The decoder of claim 1, wherein the entropy decoder is configured to use different contexts for different bin positions of the truncated unary code. 3. Декодер по п. 1, в котором энтропийный декодер выполнен с возможностью выполнения обновления состояния вероятности для бина, выводимого в данный момент из усеченного унарного кода, посредством перехода из текущего состояния вероятности, ассоциированного с контекстом, выбранным для бина, выводимого в данный момент, в новое состояние вероятности в зависимости от бина, выводимого в данный момент.3. The decoder of claim. 1, in which the entropy decoder is configured to update the probability state for the bin currently output from the truncated unary code by transitioning from the current probability state associated with the context selected for the bin currently output , to a new probability state depending on the bin currently being output. 4. Декодер по п. 1, в котором энтропийный декодер выполнен с возможностью двоичного арифметического декодирования бина, подлежащего выведению в данный момент из усеченного унарного кода посредством квантования значения ширины текущего интервала вероятностей, представляющего текущий интервал вероятностей, для получения индекса интервала вероятностей и выполнения подразделения интервала посредством индексирования элемента таблицы из числа элементов таблицы, используя индекс интервала вероятностей и индекс состояния вероятности в зависимости от текущего состояния вероятности, ассоциированного с контекстом, выбранным для бина, подлежащего выведению в данный момент, для получения подразделения текущего интервала вероятностей на два частичных интервала.4. The decoder of claim 1, wherein the entropy decoder is configured to binary arithmetic decode a bin currently to be derived from the truncated unary code by quantizing a current probability interval width value representing the current probability interval to obtain a probability interval index and perform subdivision interval by indexing a table element from among table elements using a probability interval index and a probability state index depending on the current probability state associated with the context selected for the currently inferred bin to obtain a division of the current probability interval into two partial intervals. 5. Декодер по п. 4, в котором энтропийный декодер выполнен с возможностью использования 8-битового представления для значения ширины текущего интервала вероятностей и получения 2 или 3 самых старших битов 8-битового представления при квантовании значения ширины текущего интервала вероятностей.5. The decoder of claim 4, wherein the entropy decoder is configured to use an 8-bit representation for the current probability interval width value and obtain the 2 or 3 most significant bits of the 8-bit representation by quantizing the current probability interval width value. 6. Декодер по п. 4, в котором энтропийный декодер выполнен с возможностью выбора частичного интервала из упомянутых двух частичных интервалов, основываясь на значении состояния смещения из внутренней части текущего интервала вероятностей, обновления значения ширины интервала вероятностей и значения состояния смещения и предположения значения бина, подлежащего выведению в данный момент, используя выбранный частичный интервал, и выполнения ренормализации обновленных значения ширины интервала вероятностей и значения состояния смещения, включая продолжение считывания битов из потока данных.6. The decoder of claim 4, wherein the entropy decoder is configured to select a partial interval from said two partial intervals based on an offset state value from the interior of the current probability interval, updating the probability interval width value and the offset state value, and guessing the bin value, currently to be inferred using the selected partial interval, and renormalizing the updated probability interval width value and offset state value, including continuing to read bits from the data stream. 7. Декодер по п. 4, в котором энтропийный декодер выполнен, в режиме обхода с постоянной равновероятностью, с возможностью двоичного арифметического декодирования бина из экспоненциального кода Голомба посредством деления пополам значения ширины текущего интервала вероятностей для получения подразделения текущего интервала вероятностей на два частичных интервала.7. The decoder according to claim 4, in which the entropy decoder is made, in the bypass mode with constant equiprobability, with the possibility of binary arithmetic decoding of the bin from the exponential Golomb code by dividing the current probability interval width value in half to obtain a division of the current probability interval into two partial intervals. 8. Декодер по п. 1, в котором энтропийный декодер выполнен, для каждой разности векторов движения, с возможностью выведения усеченного унарного кода горизонтальной и вертикальной составляющих соответствующей разности векторов движения из потока данных перед выведением экспоненциального кода Голомба горизонтальной и вертикальной составляющих соответствующей разности векторов движения.8. The decoder according to claim 1, in which the entropy decoder is configured, for each motion vector difference, with the possibility of deriving a truncated unary code of the horizontal and vertical components of the corresponding motion vector difference from the data stream before deriving the exponential Golomb code of the horizontal and vertical components of the corresponding motion vector difference . 9. Декодер по п. 1, в котором восстановитель выполнен с возможностью пространственного и/или временного предсказания горизонтальных и вертикальных составляющих векторов движения, чтобы получать предикторы для горизонтальных и вертикальных составляющих векторов движения и восстанавливать горизонтальные и вертикальные составляющие векторов движения посредством уточнения предикторов, используя горизонтальные и вертикальные составляющие разностей векторов движения.9. The decoder of claim. 1, in which the restorer is configured to spatially and/or temporally predict the horizontal and vertical components of the motion vectors to obtain predictors for the horizontal and vertical components of the motion vectors and restore the horizontal and vertical components of the motion vectors by refining the predictors using horizontal and vertical components of motion vector differences. 10. Декодер по п. 1, в котором восстановитель выполнен с возможностью предсказания горизонтальных и вертикальных составляющих векторов движения различным образом, чтобы получать упорядоченный список предикторов для горизонтальных и вертикальных составляющих векторов движения, получать из потока данных индекс списка, соответствующий предиктору в упорядоченном списке, и восстанавливать горизонтальные и вертикальные составляющие векторов движения посредством уточнения предиктора, указанного индексом списка, используя горизонтальные и вертикальные составляющие разностей векторов движения.10. The decoder according to claim 1, wherein the decoder is configured to predict the horizontal and vertical components of the motion vectors in a different way to obtain an ordered list of predictors for the horizontal and vertical components of the motion vectors, to obtain from the data stream a list index corresponding to a predictor in the ordered list, and recovering the horizontal and vertical components of the motion vectors by refining the predictor indicated by the index of the list using the horizontal and vertical components of the motion vector differences. 11. Декодер по п. 9, в котором восстановитель выполнен с возможностью восстановления видео, используя предсказание с компенсацией движения посредством использования горизонтальных и вертикальных составляющих векторов движения.11. The decoder of claim 9, wherein the decoder is configured to reconstruct the video using motion-compensated prediction by using the horizontal and vertical components of the motion vectors. 12. Декодер по п. 11, в котором восстановитель выполнен с возможностью восстановления видео, используя предсказание с компенсацией движения посредством применения горизонтальных и вертикальных составляющих векторов движения с пространственной степенью разбиения, определяемой подразделением изображений видео в блоках, причем восстановитель использует синтаксические элементы слияния, присутствующие в потоке данных, чтобы группировать блоки в группы слияния и применять горизонтальные и вертикальные составляющие разностей векторов движения в единицах групп слияния.12. The decoder of claim 11, wherein the decoder is configured to reconstruct the video using motion-compensated prediction by applying the horizontal and vertical components of the motion vectors with a spatial granularity determined by subdividing the video images into blocks, wherein the decoder uses the fusion syntax elements present in the data stream to group blocks into merge groups and apply the horizontal and vertical components of the motion vector differences in merge group units. 13. Декодер по п. 1, в котором поток данных содержит по меньшей мере часть, ассоциированную с цветными элементами дискретизации.13. The decoder of claim 1, wherein the data stream comprises at least a portion associated with color bins. 14. Декодер по п. 1, в котором поток данных содержит по меньшей мере часть, ассоциированную со значениями глубины, относящимися к карте глубины.14. The decoder of claim 1, wherein the data stream comprises at least a portion associated with depth values related to the depth map. 15. Кодер для кодирования видео в поток данных, содержащий:15. An encoder for encoding video into a data stream, containing: конструктор, выполненный с возможностью кодирования с предсказанием видео посредством предсказания с компенсацией движения, используя векторы движения и горизонтальные и вертикальные составляющие разностей векторов движения, представляющих ошибку предсказания относительно векторов движения; иa constructor configured to predictively encode video by motion-compensated prediction using motion vectors and horizontal and vertical components of motion vector differences representing a prediction error with respect to the motion vectors; and энтропийный кодер, выполненный, для горизонтальной и вертикальной составляющих каждой из разностей векторов движения, с возможностью an entropy encoder designed for the horizontal and vertical components of each of the motion vector differences, with the possibility кодирования в поток данных усеченного унарного кода, кодируемого, используя контекстно-адаптивное двоичное энтропийное кодирование с точно одним контекстом на позицию бина усеченного унарного кода, причем контекст совместно используется горизонтальной и вертикальной составляющими разности векторов движения, иencoding into the data stream a truncated unary code encoded using context-adaptive binary entropy coding with exactly one context per bin position of the truncated unary code, the context being shared by the horizontal and vertical motion vector difference components, and кодирования в поток данных экспоненциального кода Голомба, кодируемого, используя режим обхода с постоянной равновероятностью.encoding into the data stream of the exponential Golomb code encoded using the bypass mode with constant equiprobability. 16. Кодер по п. 15, в котором энтропийный кодер выполнен с возможностью использования разных контекстов для разных позиций бина усеченного унарного кода.16. The encoder of claim 15, wherein the entropy encoder is configured to use different contexts for different bin positions of the truncated unary code. 17. Кодер по п. 15, в котором энтропийный кодер выполнен с возможностью выполнения обновления состояния вероятности для бина, кодируемого в данный момент из усеченного унарного кода, посредством перехода из текущего состояния вероятности, ассоциированного с контекстом, выбранным для бина, кодируемого в данный момент, в новое состояние вероятности в зависимости от бина, кодируемого в данный момент.17. The encoder of claim 15, wherein the entropy encoder is configured to perform a probability state update for the bin currently being encoded from the truncated unary code by transitioning from a current probability state associated with a context selected for the bin currently being encoded. , to a new probability state depending on the bin currently being encoded. 18. Кодер по п. 15, в котором энтропийный кодер выполнен с возможностью двоичного арифметического кодирования бина, подлежащего кодированию в данный момент из усеченного унарного кода посредством квантования значения ширины текущего интервала вероятностей, представляющего текущий интервал вероятностей, для получения индекса интервала вероятностей и выполнения подразделения интервала посредством индексирования элемента таблицы из числа элементов таблицы, используя индекс интервала вероятностей и индекс состояния вероятности в зависимости от текущего состояния вероятности, ассоциированного с контекстом, выбранным для бина, подлежащего кодированию в данный момент, для получения подразделения текущего интервала вероятностей на два частичных интервала.18. The encoder of claim 15, wherein the entropy encoder is configured to binary arithmetic encode a bin currently to be encoded from the truncated unary code by quantizing a current probability interval width value representing the current probability interval to obtain a probability interval index and perform subdivision interval by indexing a table element from among table elements using a probability interval index and a probability state index depending on the current probability state associated with the context selected for the bin currently to be encoded to obtain a subdivision of the current probability interval into two partial intervals. 19. Кодер по п. 15, в котором конструктор выполнен с возможностью предсказания горизонтальных и вертикальных составляющих векторов движения разным образом, чтобы получать упорядоченный список предикторов для горизонтальных и вертикальных составляющих векторов движения, получения из потока данных индекса списка, соответствующего предиктору в упорядоченном списке, и определения горизонтальных и вертикальных составляющих разностей векторов движения, чтобы уточнять предиктор, указанный индексом списка к горизонтальным и вертикальным составляющим векторов движения.19. The encoder of claim 15, wherein the constructor is configured to predict the horizontal and vertical components of the motion vectors in different ways to obtain an ordered list of predictors for the horizontal and vertical components of the motion vectors, obtain from the data stream a list index corresponding to a predictor in the ordered list, and determining the horizontal and vertical components of the motion vector differences to refine the predictor indicated by the index of the list to the horizontal and vertical components of the motion vectors. 20. Кодер по п. 15, в котором энтропийный кодер выполнен, для каждой разности векторов движения, с возможностью кодирования усеченного унарного кода горизонтальной и вертикальной составляющих соответствующей разности векторов движения в поток данных перед кодированием экспоненциального кода Голомба горизонтальной и вертикальной составляющих соответствующей разности векторов движения.20. The encoder according to claim 15, wherein the entropy encoder is configured, for each motion vector difference, to encode a truncated unary code of the horizontal and vertical components of the corresponding motion vector difference into the data stream before encoding the exponential Golomb code of the horizontal and vertical components of the corresponding motion vector difference . 21. Кодер по п. 15, в котором конструктор выполнен с возможностью пространственного и/или временного предсказания горизонтальных и вертикальных составляющих векторов движения, чтобы получать предикторы для горизонтальных и вертикальных составляющих векторов движения, и определения горизонтальных и вертикальных составляющих разностей векторов движения, чтобы уточнять предикторы к горизонтальным и вертикальным составляющим векторов движения.21. The encoder of claim 15, wherein the constructor is configured to spatially and/or temporally predict the horizontal and vertical components of the motion vectors to obtain predictors for the horizontal and vertical components of the motion vectors, and determine the horizontal and vertical components of the motion vector differences to refine predictors to the horizontal and vertical components of motion vectors. 22. Кодер по п. 19, в котором энтропийный кодер выполнен с возможностью выбора из числа двух частичных интервалов, основываясь на целочисленном значении бина, подлежащего кодированию в данный момент, обновления значения ширины интервала вероятностей и смещения интервала вероятностей, используя выбранный частичный интервал, и выполнения ренормализации значения ширины интервала вероятностей и смещения интервала вероятностей, включая продолжение записи битов в поток данных.22. The encoder of claim 19, wherein the entropy encoder is configured to select from among two partial intervals based on an integer value of the bin currently to be encoded, update the probability interval width value, and offset the probability interval using the selected partial interval, and performing renormalization of the probability interval width value and the probability interval offset, including continuing to write bits to the data stream. 23. Кодер по п. 15, в котором конструктор выполнен с возможностью кодирования видео, используя предсказание с компенсацией движения посредством применения горизонтальных и вертикальных составляющих векторов движения с пространственной степенью разбиения, определяемой подразделением изображений видео в блоках, причем конструктор дополнительно выполнен с возможностью определения и вставки в поток данных синтаксических элементов слияния, чтобы группировать блоки в группы слияния и применять горизонтальные и вертикальные составляющие разностей векторов движения в единицах групп слияния.23. The encoder of claim 15, wherein the constructor is configured to encode video using motion-compensated prediction by applying the horizontal and vertical components of the motion vectors with a spatial granularity determined by subdividing the video images into blocks, wherein the constructor is further configured to determine and inserting merge syntax elements into the data stream to group blocks into merge groups and apply horizontal and vertical components of motion vector differences in merge group units. 24. Кодер по п. 15, в котором поток данных содержит по меньшей мере часть, ассоциированную с цветными элементами дискретизации.24. The encoder of claim 15, wherein the data stream comprises at least a portion associated with color bins. 25. Кодер по п. 15, в котором поток данных содержит по меньшей мере часть, ассоциированную со значениями глубины, относящимися к карте глубины.25. The encoder of claim 15, wherein the data stream comprises at least a portion associated with depth values related to the depth map. 26. Способ декодирования видео из потока данных, причем видео кодировано с предсказанием посредством предсказания с компенсацией движения, используя векторы движения и разности векторов движения, представляющие ошибку предсказания относительно векторов движения, при этом упомянутый способ содержит этапы, на которых:26. A method for decoding video from a data stream, the video being predictively encoded by motion-compensated prediction using motion vectors and motion vector differences representing a prediction error with respect to the motion vectors, said method comprising: для горизонтальной и вертикальной составляющих каждой из разностей векторов движенияfor the horizontal and vertical components of each of the motion vector differences получают из потока данных усеченный унарный код и экспоненциальный код Голомба,a truncated unary code and an exponential Golomb code are obtained from the data stream, декодируют усеченный унарный код, используя контекстно-адаптивное двоичное энтропийное декодирование с точно одним контекстом на позицию бина усеченного унарного кода, причем контекст совместно используется горизонтальной и вертикальной составляющими разности векторов движения, иdecoding the truncated unary code using context-adaptive binary entropy decoding with exactly one context per bin position of the truncated unary code, the context being shared by the horizontal and vertical motion vector difference components, and декодируют экспоненциальный код Голомба, используя режим обхода с постоянной равновероятностью, для получения горизонтальной и вертикальной составляющих разности векторов движения; иdecoding the exponential Golomb code using a constant equiprobability bypass mode to obtain horizontal and vertical motion vector difference components; and восстанавливают видео, основываясь на горизонтальных и вертикальных составляющих разностей векторов движения.reconstructing the video based on the horizontal and vertical components of the motion vector differences. 27. Считываемый компьютером носитель, хранящий компьютерную программу, содержащую программный код для выполнения, при выполнении на компьютере, способа по п. 26.27. A computer-readable medium storing a computer program containing program code for executing, when executed on a computer, the method of claim 26. 28. Невременный считываемый компьютером носитель для хранения данных, ассоциированных с видео, содержащий:28. A non-transitory computer-readable storage medium associated with video, comprising: поток данных, хранящийся на невременном считываемом компьютером носителе, причем поток данных содержит кодированные горизонтальные и вертикальные составляющие разностей векторов движения, при этом видео кодировано с предсказанием посредством предсказания с компенсацией движения с использованием векторов движения, кодированных в потоке данных, и горизонтальные и вертикальные составляющие разностей векторов движения представляют ошибку предсказания в отношении векторов движения,a data stream stored on a non-temporal computer-readable medium, wherein the data stream comprises encoded horizontal and vertical motion vector difference components, the video being predictively encoded by motion-compensated prediction using the motion vectors encoded in the data stream, and the horizontal and vertical difference components motion vectors represent the prediction error with respect to the motion vectors, при этом для горизонтальной и вертикальной составляющих каждой из разностей векторов движения усеченный унарный код кодирован, используя контекстно-адаптивное двоичное энтропийное кодирование с точно одним контекстом на позицию бина усеченного унарного кода, причем контекст совместно используется горизонтальной и вертикальной составляющими разности векторов движения, и экспоненциальный код Голомба кодирован, используя режим обхода с постоянной равновероятностью.wherein for the horizontal and vertical components of each of the motion vector differences, the truncated unary code is encoded using context-adaptive binary entropy coding with exactly one context per bin position of the truncated unary code, the context being shared by the horizontal and vertical components of the motion vector difference, and the exponential code Golomba is encoded using the constant equiprobability traversal mode.
RU2021131724A 2011-06-16 2021-10-29 Entropy encoding of differences in motion vectors RU2776910C1 (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
RU2018120845A Division RU2758981C2 (en) 2011-06-16 2018-06-06 Entropy encoding of motion vector differences

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2022119574A Division RU2022119574A (en) 2011-06-16 2022-07-18 ENTROPY CODING OF MOTION VECTOR DIFFERENCES

Publications (1)

Publication Number Publication Date
RU2776910C1 true RU2776910C1 (en) 2022-07-28

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1294193A1 (en) * 2001-09-12 2003-03-19 Thomson Licensing S.A. 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
US7221296B2 (en) * 2005-08-22 2007-05-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
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
EP1294193A1 (en) * 2001-09-12 2003-03-19 Thomson Licensing S.A. 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
US7221296B2 (en) * 2005-08-22 2007-05-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
US20210243446A1 (en) Context initialization in entropy coding
AU2024201207A1 (en) Context initialization in entropy coding
RU2776910C1 (en) Entropy encoding of differences in motion vectors