RU2808541C1 - Encoding principle that makes parallel processing possible, transport demultiplexer and video bit stream - Google Patents

Encoding principle that makes parallel processing possible, transport demultiplexer and video bit stream Download PDF

Info

Publication number
RU2808541C1
RU2808541C1 RU2022115044A RU2022115044A RU2808541C1 RU 2808541 C1 RU2808541 C1 RU 2808541C1 RU 2022115044 A RU2022115044 A RU 2022115044A RU 2022115044 A RU2022115044 A RU 2022115044A RU 2808541 C1 RU2808541 C1 RU 2808541C1
Authority
RU
Russia
Prior art keywords
image
wpp
tranches
decoder
tiles
Prior art date
Application number
RU2022115044A
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 RU2808541C1 publication Critical patent/RU2808541C1/en

Links

Images

Abstract

FIELD: encoding/decoding.
SUBSTANCE: invention relates to the field of encoding/decoding enabling parallel processing, such as in the emerging HEVC (High Efficiency Video Coding) standard. The raw byte sequence payload describing the image in slices, WPP substreams or tiles, encoded using context-adaptive binary arithmetic encoding is subdivided or divided into tranches, continuing to adapt the context-adaptive binary arithmetic encoding probabilities across the tranche boundaries. By this measure, trench boundaries further introduced into slices, WPP substreams or tiles do not reduce the entropy encoding efficiency of those elements. On the other hand, however, tranches are smaller than the original slices, WPP substreams or tiles, and therefore can be transmitted with lower latency than non-shared original objects, i.e. slices, WPP substreams or tiles. Also, substream marker NAL units are used in a sequence of video bit stream NAL units to allow the transport demultiplexer to assign data slices in NAL units to corresponding substreams or tiles to be able to feed the corresponding substreams or tiles in parallel to a multi-stream decoder.
EFFECT: increase in the efficiency of low-latency encoding in parallel processing environments.
23 cl, 20 dwg

Description

Настоящее изобретение относится к принципам кодирования, делающим возможным параллельную обработку, такую как в развивающемся стандарте HEVC (высокоэффективное видеокодирование), транспортному демультиплексору и битовому потоку видео. The present invention relates to coding principles enabling parallel processing, such as in the emerging HEVC (High Efficiency Video Coding) standard, transport demultiplexer and video bitstream.

Распараллеливание кодера и декодера является очень важным из-за повышенных требований к обработке стандартом HEVC, а также ожидаемым повышением разрешения видео. Многоядерные архитектуры становятся доступными в широком диапазоне современных электронных устройств. Следовательно, требуются эффективные способы, делающие возможным использование многоядерных архитектур.Parallelization of encoder and decoder is very important due to the increased processing requirements of the HEVC standard, as well as the expected increase in video resolution. Multi-core architectures are becoming available in a wide range of modern electronic devices. Therefore, efficient methods are required to enable multi-core architectures.

Кодирование или декодирование наибольшей единицы кодирования (LCU) происходит с растровым сканированием, посредством которого вероятности контекстно-адаптивного двоичного арифметического кодирования (CABAC) адаптируются к специфичности каждого графического изображения. Пространственные зависимости существуют между соседними LCU. Каждая LCU зависит от ее левой, верхней, верхней слева и верхней справа соседней LCU из-за разных составляющих, например, вектора движения, предсказания, внутреннего предсказания и других. Чтобы сделать возможной распараллеливание при декодировании, эти зависимости обычно должны быть прерваны или прерываются в новейших применениях.Encoding or decoding of the largest coding unit (LCU) occurs with a raster scan, whereby context-adaptive binary arithmetic coding (CABAC) probabilities are adapted to the specificity of each graphic image. Spatial dependencies exist between adjacent LCUs. Each LCU depends on its left, top, top left and top right neighboring LCUs due to different components, such as motion vector, prediction, intra prediction and others. To enable parallelization during decoding, these dependencies typically must be broken, or are broken in newer applications.

Были предложены некоторые принципы распараллеливания, а именно волновая обработка, использующая энтропийные слайсы [3], операции волновой параллельной обработки (WPP), использующие подпотоки [2] [4], [11], или тайлы [5]. Последние не требуют обязательного объединения с волновой обработкой, для того чтобы сделать возможным распараллеливание в декодере или кодере. С этой точки зрения тайлы подобны подпотокам WPP. Первоначальным мотиватором изобретателей для дальнейшего исследования принципа энтропийных слайсов является выполнение методов, которые уменьшают потери эффективности кодирования и, таким образом, уменьшают нагрузку на битовый поток для подходов распараллеливания в кодере и декодере.Some parallelization principles have been proposed, namely wave processing using entropy slices [3], wave parallel processing (WPP) operations using substreams [2] [4], [11], or tiles [5]. The latter do not necessarily require combination with wave processing in order to make parallelization possible in a decoder or encoder. From this point of view, tiles are similar to WPP substreams. The inventors' initial motivator for further research into the entropy slice principle is to implement techniques that reduce encoding efficiency losses and thus reduce the bitstream overhead for parallelization approaches in the encoder and decoder.

Чтобы обеспечить лучшее понимание, в частности использования LCU, можно сначала рассмотреть структуру H.264/AVC [1].To provide a better understanding of the use of LCUs in particular, we can first review the H.264/AVC structure [1].

Кодированная видеопоследовательность в H.264/AVC состоит из последовательности единиц доступа, которые собраны в поток единиц уровня сетевой абстракции (NAL), и они используют только один набор параметров последовательности. Каждая видеопоследовательность может декодироваться независимо. Кодированная последовательность состоит из последовательности кодированных изображений. Кодированным кадром может быть целый кадр или единственное поле. Каждое изображение разделяется на макроблоки фиксированного размера (в HEVC [5]: LCU). Несколько макроблоков или LCU могут объединяться вместе в один слайс. Изображение, поэтому, представляет собой совокупность из одного или нескольких слайсов. Целью этого разделения данных является получение возможности независимого декодирования отсчетов в области изображения, которая представлена слайсом, без использования данных из других слайсов.An encoded video sequence in H.264/AVC consists of a sequence of access units that are assembled into a stream of network abstraction layer (NAL) units, and they use only one set of sequence parameters. Each video sequence can be decoded independently. The encoded sequence consists of a sequence of encoded images. The encoded frame can be an entire frame or a single field. Each image is divided into fixed-size macroblocks (in HEVC [5]: LCU). Multiple macroblocks or LCUs can be combined together into one slice. An image, therefore, is a collection of one or more slices. The purpose of this data division is to be able to independently decode samples in the image region that is represented by the slice, without using data from other slices.

Методом, который часто упоминается как «энтропийные слайсы» [3], является разделение традиционного слайса на дополнительные подслайсы. Конкретно, это означает разделение энтропийно кодированных данных единственного слайса. Размещение энтропийных слайсов в слайсе может быть разнообразным. Самым простейшим является использование каждой строки LCU/макроблоков в кадре в качестве одного энтропийного слайса. Альтернативно, столбцы или отдельные области могут использоваться в качестве энтропийных слайсов, которые даже могут прерываться и переключаться друг с другом, например, слайс 1 на фиг. 1.A technique often referred to as “entropy slices” [3] is the division of a traditional slice into additional sub-slices. Specifically, this means dividing the entropy-encoded data into a single slice. The placement of entropy slices in a slice can be varied. The simplest is to use each LCU/macroblock row in the frame as one entropy slice. Alternatively, columns or individual regions can be used as entropy slices, which can even be interrupted and switched with each other, such as slice 1 in FIG. 1.

Очевидной целью принципа энтропийных слайсов является предоставление возможности использования параллельных центрального процессора/графического процессора (CPU/GPU) и многоядерных архитектур, чтобы улучшить время процесса декодирования, т.е. ускорить процесс. Текущий слайс может быть разделен на разделы, которые могут быть подвернуты синтаксическому анализу и восстановлены без ссылки на данные другого слайса. Хотя могут быть достигнуты некоторые преимущества с подходом энтропийных слайсов, в результате этого возникают некоторые проблемы.The obvious purpose of the entropy slice principle is to enable the use of parallel CPU/GPU and multi-core architectures to improve the decoding process time, i.e. speed up the process. The current slice can be divided into sections, which can be parsed and reconstructed without reference to the data of another slice. While some benefits can be achieved with the entropy slice approach, it does result in some problems.

Принцип энтропийных слайсов был дополнительно расширен до волновой обработки подпотоков (WPP), как предложено в [2], [10], [11] и частично интегрировано в [5]. В данном случае определяется схема повторения подпотоков. Что действительно имеет улучшенную инициализацию энтропийного состояния на строку по сравнению с энтропийными слайсами.The principle of entropy slices has been further extended to wave substream processing (WPP) as proposed in [2], [10], [11] and partially integrated in [5]. In this case, the subflow repetition scheme is determined. What does have an improved initialization of entropy state per row compared to entropy slices.

Принцип тайлов позволяет получить разделение информации изображения, подлежащей кодированию, в тоже время каждый тайл имеет свой собственный порядок растрового сканирования. Тайл определяется общей структурой, которая повторяется в кадре. Тайл также может иметь некоторую ширину столбца и высоту строки в единицах LCU или CU (единица кодирования). Тайлы также могут кодироваться независимо и также могут кодироваться таким образом, что им не требуется совместная обработка с другими тайлами, так что потоки декодера могут обрабатывать тайлы единицы доступа полностью или по меньшей мере для некоторых этапов операции кодирования независимым образом, т.е. энтропийное кодирование и кодирование с преобразованием.The tile principle allows for a division of image information to be encoded, while at the same time each tile has its own raster scanning order. A tile is defined by an overall structure that repeats throughout the frame. A tile can also have some column width and row height in LCU or CU (Coding Unit) units. Tiles can also be encoded independently and can also be encoded in such a way that they do not need to be processed jointly with other tiles, so that decoder threads can process access unit tiles in their entirety or at least for some stages of the encoding operation in an independent manner, i.e. entropy coding and transformation coding.

Поэтому тайл в значительной степени позволяет выполнять работу кодеров, а также декодеров тайла полностью или частично независимо параллельным образом, в последнем случае, например, до этапа фильтрации кодека HEVC.The tile therefore largely allows the work of the tile encoders as well as the tile decoders to be carried out entirely or partially independently in a parallel manner, in the latter case, for example, before the filtering stage of the HEVC codec.

Чтобы выполнить полное использование методов распараллеливания в цепочке захвата, кодирования, передачи, декодирования и представления системы видеосвязи, или подобных систем, транспортировка и доступ к данным между участниками связи представляет собой важный и требующий много времени этап для внесения полной сквозной задержки. Это является проблемой в особенности при использовании методов распараллеливания, таких как тайлы, подпотоки или энтропийные слайсы.To make full use of parallelization techniques in the chain of capture, encoding, transmission, decoding and presentation of a video communication system, or similar systems, transport and access of data between communication participants is an important and time-consuming step to introduce full end-to-end latency. This is a problem especially when using parallelization techniques such as tiles, substreams or entropy slices.

Подходы к передаче данных подпотоков WPP подразумевает, что кодированные данные разделов, если они обработаны, не имеют локальности данных, т.е. единственному потоку, декодирующему единицу доступа, необходимо перескакивать через потенциально большие участки памяти, чтобы выполнить доступ к данным следующей строки подпотока WPP. Многопоточной системе декодирования необходимо ожидать передачу некоторых данных, т.е. подпотоков WPP, чтобы работать полностью параллельным образом, так чтобы использовать волновую обработку.Substream data transfer approaches WPP implies that the encoded partition data, if processed, does not have data locality, i.e. the single thread decoding an access unit needs to jump through potentially large chunks of memory to access the next line of WPP substream data. A multi-threaded decoding system needs to wait for some data to be transmitted, i.e. WPP substreams to operate in a completely parallel manner so that wave processing can be used.

В потоковом видео обеспечение более высоких разрешений (Full-HD, QUAD-HD и т.д.) приводит к большему количеству данных, которые должны передаваться. Для чувствительных к времени сценариев, так называемому варианту использования с малой задержкой, такому как видеоконференция (<145 мс), или игровые приложения (<40 мс), требуются очень малые сквозные задержки. Поэтому, время передачи становится критическим фактором. Изобретатели рассматривают линию загрузки в асимметричной цифровой абонентской линии (ADSL) для применения в видеоконференции. В данном случае, так называемые точки произвольного доступа потока, обычно они ссылаются на I-кадры, будут кандидатами на то, чтобы вызвать узкое место во время передачи.In video streaming, providing higher resolutions (Full-HD, QUAD-HD, etc.) results in more data that must be transferred. For time-sensitive scenarios, so-called low-latency use cases such as video conferencing (<145 ms), or gaming applications (<40 ms), require very low end-to-end latencies. Therefore, transmission time becomes a critical factor. The inventors are considering a load line in an asymmetric digital subscriber line (ADSL) for videoconferencing applications. In this case, the so-called random access points of the flow, usually they refer to I-frames, will be candidates to cause a bottleneck during transmission.

HEVC допускает так называемую волновую обработку, а также обработку тайлов на стороне кодера, а также декодера. Это делается возможным посредством использования энтропийных слайсов, подпотоков WPP или даже их объединения. Параллельная обработка также допускается параллельным кодированием и декодированием тайлов.HEVC allows for so-called wave processing as well as tile processing on the encoder side as well as the decoder side. This is made possible by using entropy slices, WPP substreams, or even combining them. Parallel processing is also allowed by parallel encoding and decoding of tiles.

В случае «цели без распараллеливания» данные всего слайса доставляются одновременно, таким образом последняя CU слайсов является доступной для декодера, если она была передана. Это не является проблемой, если имеется декодер с единственным потоком.In the case of a "non-parallelization target", the data of the entire slice is delivered simultaneously, so the last CU of the slices is available to the decoder if it has been transmitted. This is not a problem if you have a single stream decoder.

В многопоточном случае, если могут использоваться многочисленные CPU или ядра, процесс декодирования, однако, будет начинаться, как только кодированные данные поступят в потоки волнового декодера или декодера тайлов.In the multi-threaded case, if multiple CPUs or cores can be used, the decoding process will, however, begin as soon as the encoded data arrives at the wave decoder or tile decoder threads.

Таким образом, было бы полезным иметь наготове принципы, которые делают возможным уменьшить задержку кодирования в средах параллельной обработки с менее резкими снижениями эффективности кодирования.Thus, it would be useful to have in place principles that make it possible to reduce encoding latency in parallel processing environments with less drastic reductions in encoding efficiency.

Следовательно, задачей настоящего изобретения является обеспечение принципа кодирования, принципа транспортного демультиплексирования и битового потока видео, которые делают возможным такое более эффективное кодирование с малой задержкой в средах параллельной обработки.Therefore, it is an object of the present invention to provide an encoding principle, a transport demultiplexing principle, and a video bitstream that enables such more efficient, low latency encoding in parallel processing environments.

Эта задача достигается объектом прилагаемых зависимых пунктов формулы изобретения.This object is achieved by the subject matter of the appended dependent claims.

Согласно первому аспекту настоящей заявки полезная нагрузка последовательности необработанных байтов, описывающая изображение слайсами, подпотоками WPP или тайлами и кодированная с использованием контекстно-адаптивного двоичного арифметического кодирования, подразделяется или разделяется на транши с продолжением адаптации вероятностей контекстно-адаптивного двоичного арифметического кодирования по границам траншей. Посредством этой меры границы траншей, дополнительно введенные в слайсы, подпотоки WPP или тайлы, не приводят к снижению эффективности энтропийного кодирования этих элементов. С другой стороны, однако, транши являются меньше исходных слайсов, подпотоков WPP или тайлов, и, следовательно, они могут передаваться раньше, т.е. с меньшей задержкой, чем неразделяемые исходные объекты, т.е. слайсы, подпотоки WPP или тайлы.According to the first aspect of the present application, a payload of a sequence of raw bytes describing an image in slices, WPP substreams or tiles and encoded using context-adaptive binary arithmetic encoding is subdivided or divided into tranches, continuing to adapt the context-adaptive binary arithmetic encoding probabilities across the tranche boundaries. By this measure, trench boundaries further introduced into slices, WPP substreams, or tiles do not reduce the entropy encoding efficiency of those elements. On the other hand, however, tranches are smaller than the original slices, WPP substreams or tiles, and therefore they can be transmitted earlier, i.e. with lower latency than non-shared source objects, i.e. slices, WPP substreams or tiles.

Согласно другому аспекту, который является объединяемым с первым аспектом, единицы NAL маркера подпотока используются в последовательности единиц NAL битового потока видео, чтобы предоставить возможность транспортному демультиплексору назначать данные слайсов в единицах NAL соответствующим подпотокам или тайлам, чтобы иметь возможность параллельно подавать соответствующие подпотоки или тайлы на многопоточный декодер.According to another aspect, which is combinable with the first aspect, substream marker NAL units are used in a sequence of video bitstream NAL units to enable a transport demultiplexer to assign slice data in NAL units to corresponding substreams or tiles to be able to feed corresponding substreams or tiles in parallel to multi-threaded decoder.

Полезные реализации является предметом зависимых пунктов формулы изобретения. Кроме того, предпочтительные варианты осуществления настоящего изобретения объясняются более подробно ниже в отношении фигур, на которыхUseful implementations are the subject of dependent claims. Moreover, preferred embodiments of the present invention are explained in more detail below with respect to the figures in which

фиг. 1 изображает схему, иллюстрирующую возможные соединения энтропийных слайсов;fig. 1 is a diagram illustrating possible connections of entropy slices;

фиг. 2 изображает схему, иллюстрирующую три тайла, распределенные по трем слайсам;fig. 2 is a diagram illustrating three tiles distributed among three slices;

фиг. 3 изображает схему, иллюстрирующую пример перемежения траншей схемы циклического перемежения четырех траншей с переменной длиной;fig. 3 is a diagram illustrating a trench interleaving example of a four-trench variable length cyclic interleaving scheme;

фиг. 4 изображает схему, иллюстрирующую кодирование, сегментирование, перемежение и декодирование данных энтропийного слайса;fig. 4 is a diagram illustrating encoding, segmentation, interleaving, and decoding of entropy slice data;

фиг. 5 изображает схему, иллюстрирующую пример перемежения траншей схемы циклического перемежения четырех траншей с переменной длиной, использующей всегда коды маркера и распределяющей фактические данные слайса по многочисленным единицам NAL. Коды маркера используются, даже если не присутствует подраздел. Это может быть дополнительно улучшено использованием идентификатора транша после маркера, указывающего номер транша. Это устраняет потребность посылки всегда маркера, что требуется для циклического режима.fig. 5 is a diagram illustrating an example of a trench interleaving scheme of a four-trench variable length round robin interleaving scheme that always uses token codes and distributes the actual slice data across multiple NAL units. Marker codes are used even if no subsection is present. This can be further improved by using a tranche identifier after the marker indicating the tranche number. This eliminates the need to always send a token, which is required for cyclic mode.

фиг. 6 изображает таблицу псевдокода, иллюстрирующего синтаксис единицы NAL;fig. 6 is a pseudocode table illustrating the syntax of a NAL unit;

фиг. 7 изображает таблицу псевдокода, иллюстрирующего синтаксис набора параметров последовательности;fig. 7 is a pseudocode table illustrating the syntax of a sequence parameter set;

фиг. 8 изображает таблицу псевдокода, иллюстрирующего синтаксис полезных данных последовательности необработанных байтов (RBSP) уровня слайса с малой задержкой;fig. 8 is a pseudocode table illustrating the low latency slice layer raw byte sequence payload (RBSP) syntax;

фиг. 9 изображает таблицу псевдокода, иллюстрирующего синтаксис заголовка слайса;fig. 9 is a pseudocode table illustrating slice header syntax;

фиг. 10 изображает таблицу псевдокода, иллюстрирующего синтаксис маркера подпотока;fig. 10 is a pseudocode table illustrating the syntax of a subflow marker;

фиг. 11 изображает схему, иллюстрирующую пример простой инкапсуляции данных энтропийного слайса (AF представляет собой поле адаптации TS MPEG-2);fig. 11 is a diagram illustrating an example of simple entropy slice data encapsulation (AF is an MPEG-2 TS adaptation field);

фиг. 12 изображает схему, иллюстрирующую другой пример инкапсуляции единственного элементарного потока (ES) данных энтропийного слайса;fig. 12 is a diagram illustrating another example of encapsulating a single elementary stream (ES) of entropy slice data;

фиг. 13 изображает схему, иллюстрирующую другой пример инкапсуляции упакованных многочисленных ES данных энтропийного слайса;fig. 13 is a diagram illustrating another example of encapsulation of packed multiple ES entropy slice data;

фиг. 14 изображает блок-схему, изображающую транспортный демультиплексор для единственного ES;fig. 14 is a block diagram depicting a transport demultiplexer for a single ES;

фиг. 15 изображает блок-схему, изображающую транспортный демультиплексор для многочисленных ES;fig. 15 is a block diagram depicting a transport demultiplexer for multiple ESs;

фиг. 16 изображает блок-схему, изображающую кодер;fig. 16 is a block diagram showing an encoder;

фиг. 17 изображает блок-схему, изображающую декодер;fig. 17 is a block diagram showing a decoder;

фиг. 18 изображает блок-схему последовательности операций этапов, выполняемых декодером; иfig. 18 is a flowchart of steps performed by the decoder; And

фиг. 19 изображает схему, иллюстрирующую пример для многочисленных ES, используя транспортный протокол реального времени (RTP).fig. 19 is a diagram illustrating an example for multiple ESs using the Real Time Transport Protocol (RTP).

Чтобы уменьшить время, в течение которого поток параллельного декодера может начать и завершить обработку своих данных кадра, представленные ниже варианты осуществления используют сегментирование данных, структурированных для распараллеливания, таких как данные одного или нескольких тайлов или данные одного или нескольких подпотоков WPP, на малые транши посредством подхода перемежения с малой задержкой.To reduce the time in which a parallel decoder thread can begin and complete processing of its frame data, the following embodiments use segmentation of data structured for parallelization, such as one or more tile data or one or more WPP substream data, into small tranches by low latency interleaving approach.

Следовательно кодер может доставлять данные, соответствующие конкретному набору LCU или по меньшей мере выровненной по байтам части подпотока или тайла или их частей в виде транша, декодеру по тракту передачи от кодера до декодера.Therefore, the encoder can deliver data corresponding to a particular set of LCUs, or at least a byte-aligned portion of a substream or tile, or tranche portions thereof, to the decoder along an encoder-to-decoder transmission path.

Так как транши меньше полного подпотока WPP или тайла и/или могут адаптироваться к фактической максимальной единице передачи (MTU) тракта передачи, так что транши многочисленных подпотоков WPP или тайлов могут размещаться в единице передачи между кодером и декодером перед завершением полной единицы доступа, декодирование на стороне декодера может начинаться существенно раньше, чем при использовании последовательной передачи полных подпотоков WPP или тайлов единицы доступа.Since tranches are smaller than a full WPP sub-stream or tile and/or can adapt to the actual maximum transmission unit (MTU) of the transmission path, so that tranches of multiple WPP sub-streams or tiles can be placed in a transmission unit between the encoder and decoder before completing the full access unit, decoding at on the decoder side may begin significantly earlier than when using sequential transmission of complete WPP substreams or access unit tiles.

Это очевидно приводит к более быстрой передаче траншей и более раннему началу процесса параллельного декодирования в декодере. Подход также может применяться по границам кадра в случае, если слайс(-ы) следующего кадра или энтропийный слайс(-ы) уже могут быть декодированы, например, волновым образом, основываясь на сведениях, что требуемая информация для декодирования энтропийного слайса следующего кадра из-за доступности межкадровых ссылок. Эти уже декодируемые данные кадра, последующего в порядке декодирования, могут извлекаться из максимально допустимой/сигнализируемой длины вектора движения или дополнительной информации в потоке, указывая зависимости частей данных с предыдущим кадром(-ами), или схемы с фиксированными ссылками, указывающей используемую позицию, сигнализируемую в позиции фиксированной последовательности, такой как набор параметров.This obviously results in faster transmission of tranches and an earlier start of the parallel decoding process at the decoder. The approach can also be applied at frame boundaries in the case where the next frame slice(s) or entropy slice(s) can already be decoded, for example, in a waveform, based on the knowledge that the required information to decode the next frame entropy slice(s) is from for the availability of interframe links. This already decodable data of a frame subsequent in the decoding order may be derived from the maximum allowed/signaled motion vector length or additional information in the stream indicating dependencies of parts of the data with the previous frame(s), or a fixed-reference scheme indicating the position being signaled in use at a fixed sequence position such as a parameter set.

Изображение может кодироваться одним энтропийным слайсом на строку(-и) наибольшей единицы кодирования (LCU), или используя подпоток WPP, или даже комбинацию в виде одного подпотока WPP на строку, которая может дополнительно содержаться в отдельном энтропийном слайсе. Такие структуры данных необходимы для использования метода волновой обработки на стороне декодера. Или тайлы могут использоваться, чтобы сделать возможной параллельную обработку.The image may be encoded with one entropy slice per Largest Coding Unit (LCU) line(s), or using a WPP substream, or even a combination of one WPP substream per line, which may further be contained in a separate entropy slice. Such data structures are necessary to use the wave processing method on the decoder side. Or tiles can be used to enable parallel processing.

Во время процесса кодирования битовый поток каждого слайса, содержащий данные потоков WPP или тайлов, может разделяться на транши с переменной длиной, чтобы соответствовать максимальному размеру единицы передачи, между кодером и декодером. Тогда результирующие транши перемежаются и могут передаваться для передачи и размещения в пакетах размера MTU.During the encoding process, the bitstream of each slice containing WPP or tile stream data can be divided into variable length tranches to match the maximum transmission unit size between the encoder and decoder. The resulting tranches are then interleaved and can be transmitted for transmission and placement in MTU size packets.

Чтобы сделать возможной обработку на стороне декодера перед или после каждого транша, может вставляться код маркера. Соответствующим кодом маркера для HEVC может быть «0x00 00 02», который будет даже пропускать предотвращение эмуляции кода начала. После приема пакета, включающего в себя многочисленные транши, приемник или декодер может выполнять синтаксический анализ фактически содержащегося битового потока во время процесса предотвращения эмуляции кода начала, чтобы не требовался дополнительный этап синтаксического анализа. Может быть, например, два режима для идентификации транша. Может быть всегда циклическое размещение траншей, начиная с транша с tranche_id (идентификатор транша), равного 1, до транша с tranche_id, равным n. Это может безопасно сигнализировать данные для второго общего способа. Альтернативным способом может быть конкретный заголовок, следующий за маркером, указывающий tranche_id, например, в виде 8-битового значения.To enable decoder-side processing before or after each tranche, a token code may be inserted. The corresponding token code for HEVC could be "0x00 00 02", which would even skip the start code emulation prevention. After receiving a packet including multiple tranches, the receiver or decoder may parse the actual contained bitstream during the start code emulation prevention process so that an additional parsing step is not required. There may be, for example, two modes for tranche identification. There can always be a cyclic allocation of tranches, starting with a tranche with tranche_id (tranche identifier) equal to 1, to a tranche with tranche_id equal to n. It can safely signal data for the second general mode. An alternative could be a specific header following the token indicating the tranche_id, for example as an 8-bit value.

Деперемежение данных перемеженных траншей может применяться на основе сведения о количестве траншей на пакет, которым может быть пакет единиц NAL. Поэтому, может быть дополнительно отображение подпотоков WPP или тайлов на транши. Это отображение может неявно выводиться из количества тайлов/количества подпотоков WPP, или может сигнализироваться непосредственно в наборе параметров последовательности (SPS). Отображение является важным для процесса деперемежения, так что данные некоторых подпотоков WPP или тайлов могут идентифицироваться и предоставляться потоку волнового или параллельного декодера, ответственного за декодирование данного подпотока WPP или тайла.De-interleaving of these interleaved tranches can be applied based on the knowledge of the number of tranches per package, which may be a package of NAL units. Therefore, there may be an additional display of WPP sub-streams or tiles per tranche. This mapping may be implicitly derived from the number of tiles/number of WPP substreams, or may be signaled directly in the Sequence Parameter Set (SPS). The mapping is essential to the deinterleaving process so that data from certain WPP substreams or tiles can be identified and provided to the waveform or parallel decoder thread responsible for decoding that WPP substream or tile.

Чтобы информировать декодер об использовании схемы перемежения для инкапсуляции с малой задержкой, в заголовке единицы NAL может быть low_delay_flag (флаг малой задержки).To inform the decoder to use an interleaving scheme for low-latency encapsulation, a low_delay_flag may be included in the NAL unit header.

Другим режимом может быть перемежение и деперемежение на транспортном уровне, т.е. вне процесса декодирования может быть на уровне RTP [8] [9] [13] или транспортного потока MPEG-2 [7].Another mode could be interleaving and deinterleaving at the transport layer, i.e. outside the decoding process can be at the level of RTP [8] [9] [13] or MPEG-2 transport stream [7].

Поэтому, заголовок может размещаться впереди пакета, указывающий присутствие транша посредством флага, включающего в себя информацию о размере в байтах на присутствующий транш. Так как транспортный уровень не связан с процессом декодирования, может быть, что нет необходимости в интегрировании кода маркера, так как дополнительная информация транспортного уровня должна удаляться любым образом перед передачей этих данных на декодер. Транспортный уровень затем также переупорядочивает данные для доставки битового потока декодеру.Therefore, a header may be placed at the front of the packet indicating the presence of a tranche by means of a flag including information about the size in bytes of the tranche present. Since the transport layer is not associated with the decoding process, it may not be necessary to integrate the token code, since the additional transport layer information must be removed in any way before passing this data to the decoder. The transport layer then also reorders the data to deliver the bitstream to the decoder.

Заголовок переменной длины может использоваться на дополнительном уровне мультиплексирования. Этот уровень мультиплексирования также может представлять собой часть кодека и может вводиться перед фактическим обращением к данным последовательности необработанных байтов (RBSP) в декодере. Одну схему заголовка можно найти на фиг. 3. Но может быть также заголовок непосредственно перед каждым траншем, указывающий длину, а также его индикатор. Где, все еще имеется необходимость в отображении индикатора на структуры битового потока, уже указано выше.A variable length header can be used at an additional multiplexing layer. This multiplexing layer may also be part of the codec and may be introduced before the raw byte sequence (RBSP) data is actually accessed at the decoder. One header diagram can be found in FIG. 3. But there may also be a heading immediately before each tranche indicating the length, as well as its indicator. Where there is still a need to map the indicator to bitstream structures is already indicated above.

Размер транша также может иметь постоянный размер, например, x байтов на транш. Это приводит к простой схеме мультиплексирования, такой как показанная на фиг. 4.The tranche size can also be a constant size, for example x bytes per tranche. This results in a simple multiplexing scheme such as that shown in FIG. 4.

Постоянный размер сегментов может привести к проблеме в конце битового потока из-за его переменной длины.Constant size of segments can lead to a problem at the end of the bit stream due to its variable length.

Имеется два возможных общих решения. Первым является генерирование циклических x-байтовых сегментов (обычно представление битового потока слайса выровнено по байтам) и управление потреблением байтов каждым механизмом декодера, т.е. декодер выясняет завершение энтропийного слайса, или включение кода маркера.There are two possible general solutions. The first is to generate cyclic x-byte slices (usually the slice bitstream representation is byte aligned) and control the byte consumption of each decoder engine, i.e. the decoder figures out the completion of the entropy slice, or the inclusion of the marker code.

Вторым способом являются длины транша сигнализации, если транши имеют переменную длину, в заголовке, как показано на фигуре.The second way is the signaling tranche lengths, if tranches have variable lengths, in the header as shown in the figure.

Размер сегмента и режим перемежения могут сигнализироваться или в одном SEI-сообщении или в SPS.The segment size and interleaving mode may be signaled either in a single SEI message or in an SPS.

Схема передачи показана на фиг. 4.The transmission diagram is shown in Fig. 4.

Другой интересный способ использует коды завершения или кодов маркера в конце набора траншей в пакете, таком как NAL или пакет слайсов. В данном случае, возможны сегменты переменной длины, таким образом, требуется полный синтаксический анализ битового потока. Чтобы ограничить в данном случае обращение к памяти, этот дополнительный процесс синтаксического анализа для мультиплексирования может объединяться с синтаксическим анализом предотвращения эмуляции кода начала, требуемого в качестве первого этапа перед обращением к данным RBSP, содержащимся в единице NAL. Такая схема маркера показана на фиг. 5.Another interesting technique is using completion codes or marker codes at the end of a set of tranches in a package, such as a NAL or slice package. In this case, segments of variable length are possible, thus requiring a full parsing of the bitstream. To limit memory access in this case, this additional multiplexing parsing process may be combined with start code emulation prevention parsing required as a first step before accessing the RBSP data contained in the NAL unit. Such a marker diagram is shown in Fig. 5.

Идея в данном случае заключается в разбиении перемежающим образом структуры более высокого уровня, такой как фактический слайс, энтропийный слайс или подобные, на содержащиеся в ней структуры данных более низкого уровня, такие как подпотоки WPP или тайлы, при перемежении данных в транши. Эти транши, причем каждый принадлежит к структуре более низкого уровня, например, конкретному подпотоку WPP или тайлу, перемежаются в пакете с малой задержкой, которым может быть конкретная единица NAL, единица NAL с дополнительной сигнализацией флагом перемежения с малой задержкой или даже слайс или легковесный заголовок слайса, указывающий подход перемежения с малой задержкой посредством флага или типа слайса, как показано для «единица #1 NAL» на фигуре, таким образом декодер информируется для применения функции переупорядочения для декодера с «единственным» потоком, который использует последовательную обработку траншей в исходном/деперемеженном порядке в декодере. Чтобы разделить данные фактического слайса в виде перемеженных траншей по многочисленным пакетам, чтобы получить выигрыш в признаке малой задержки, транспортный уровень может фрагментировать единицу NAL, содержащую перемеженные данные с малой задержкой, в сетевые пакеты максимального размера MTU. Фрагментирование данных фактического слайса в многочисленные единицы NAL также может непосредственно применяться уровнем кодирования, таким образом, существует потребность в сигнализации такого типа единицы NAL, содержащей продолжение слайса, как показано на фиг. 5 для «единицы #2 NAL». Чтобы обнаруживать завершение перемеженных данных в многочисленных пакетах, таких как единицы NAL. Может быть необходимость в конкретном коде завершения, также показанном для «единицы #2 NAL» на фигуре, или флаге, который указывает завершение в слайсе или заголовка NAL.The idea here is to interleave a higher-level structure, such as a fact slice, entropy slice, or the like, into the lower-level data structures it contains, such as WPP substreams or tiles, interleaving the data into tranches. These tranches, each belonging to a lower-level structure, such as a specific WPP subflow or tile, are interleaved in a low-latency packet, which could be a specific NAL unit, a NAL unit additionally signaled by a low-latency interleaving flag, or even a slice or lightweight header slice indicating a low latency interleaving approach by way of a flag or slice type, as shown for "NAL unit #1" in the figure, so the decoder is informed to apply the reordering function for the "single" stream decoder that uses sequential processing of the trenches in the source/ deinterleaved order in the decoder. To divide the actual slice data into interleaved tranches across multiple packets to benefit from the low latency feature, the transport layer may fragment the NAL unit containing the interleaved low latency data into network packets of the maximum MTU size. Fragmentation of the actual slice data into multiple NAL units can also be directly applied by the coding layer, so there is a need for signaling this type of NAL unit containing a continuation of the slice, as shown in FIG. 5 for “unit #2 NAL”. To detect termination of interleaved data in multiple packets, such as NAL units. There may be a need for a specific termination code, also shown for "NAL unit #2" in the figure, or a flag that indicates termination in the NAL slice or header.

В случае потери пакетов NAL также существует потребность в обнаружении потерь. Это может применяться посредством дополнительной информации в заголовке, например, легковесного заголовка слайса, такого как первые макроблоки (MB) содержащихся траншей, или только конкретного транша #1. Имея информацию, такую как смещения для подпотоков WPP или фактический размер транша, кто-нибудь также может использовать эти значения размера (значения смещения для конкретного подпотока WPP или тайла), чтобы выполнить проверку работоспособности после приема единицы NAL с кодом завершения и предшествующими единицами NAL.In case of loss of NAL packets, there is also a need for loss detection. This can be enforced through additional header information, such as a lightweight slice header such as the first macroblocks (MBs) of the contained tranches, or just a specific tranche #1. Given information such as offsets for WPP subflows or the actual tranche size, someone can also use these size values (offset values for a specific WPP subflow or tile) to perform a sanity check after receiving a NAL unit with a completion code and preceding NAL units.

Т.е, как описано, транши могут пакетироваться в пакеты 300 таким образом, что каждый пакет 300 содержит один транш T# каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения (так как, например, некоторый подпоток WPP или тайл уже был полностью передан посредством предыдущих пакетов), расположенных в порядке #, заданном среди подпотоков WPP или тайлов, причем каждый пакет содержит заголовок 302, содержащий информацию, выявляющую позиции и/или длительности траншей T#, упакованных в соответствующий пакет 300, или маркеры 304, разделяющие транши T# в соответствующем пакете 300 друг от друга, причем декодер может быть выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках 302 или маркерах 304, для обращения к траншам в пакетах. Пакеты 300a, которые содержат первые - в соответствии с порядком, определенным среди подпотоков WPP или тайлов - транши подпотоков WPP или тайлы изображения, могут содержать индикатор 306 признака малой задержки, и пакеты 300b, содержащие вторые или последующие - в соответствии с порядком, определенным среди подпотоков WPP или тайлов - тайлы T# подпотоков WPP или тайлов изображения, могут содержать индикатор 308 продолжения. Пакетами 300 могут быть единицы NAL или слайсы.That is, as described, tranches may be packaged into packets 300 such that each packet 300 contains one tranche T# of each WPP substream or image tile or a subset of WPP substreams or image tiles (since, for example, some WPP substream or tile is already was completely transmitted by previous packets) arranged in the order # specified among the WPP subflows or tiles, each packet containing a header 302 containing information identifying the positions and/or durations of the T# tranches packaged in the corresponding packet 300, or tokens 304, separating the T# tranches in the corresponding packet 300 from each other, wherein the decoder may be configured, upon receiving a raw byte sequence payload, to use information contained in headers 302 or tokens 304 to refer to the tranches in the packets. Packets 300a that contain the first - in accordance with the order defined among WPP substreams or tiles - tranches of WPP substreams or image tiles may contain a low latency indicator 306, and packets 300b containing the second or subsequent - in accordance with the order defined among WPP substreams or tiles - WPP substream tiles T# or image tiles may include a continuation indicator 308. Packets 300 may be NAL units or slices.

Ниже предоставляется пример для сигнализации синтаксиса и семантики для перемежения с малой задержкой в транши.An example is provided below for the signaling syntax and semantics for low-latency interleaving in tranches.

Тем не менее, разделение данных транша, таких как данные подпотока WPP или тайла, также может применяться на уровне слайса или ниже, как указано выше.However, partitioning of tranche data, such as WPP substream or tile data, can also be applied at the slice level or below, as stated above.

Ниже показан подход, который может быть объединен с синтаксическим анализом для предотвращения эмуляции кода начала, чтобы уменьшить количество дополнительных этапов процесса. Поэтому, перемежение применяется на уровне RBSP кодека HEVC.Below is an approach that can be combined with parsing to prevent emulation of start code to reduce the number of additional steps in the process. Therefore, interleaving is applied at the RBSP level of the HEVC codec.

Транш может рассматриваться как разделяющий данные RBSP на секции, подлежащие перемежению в секции полезных данных единиц NAL для доступа к данным с малой задержкой. Завершение транша может указываться кодом 0x000002 и за которым может следовать 8-битовый идентификатор транша tranche_id. Транши могут перемежаться циклическим образом, так что за кодом окончания транша не следует tranche_id, который выводится неявным образом. Данные RBSP в единственном транше соответствуют или данным тайла, данным подпотока, данным слайса или данным энтропийного слайса.The tranche can be thought of as dividing the RBSP data into sections to be interleaved in the payload section of the NAL units for low latency data access. Tranche completion may be indicated by the code 0x000002 and may be followed by the 8-bit tranche identifier tranche_id. Tranches can be interleaved in a round-robin fashion, so that the tranche end code is not followed by tranche_id, which is inferred implicitly. The RBSP data in a single tranche corresponds to either tile data, substream data, slice data, or entropy slice data.

В синтаксисе единицы NAL могут учитываться два режима для перемежения с малой задержкой как указано посредством «low delay encapsulation_flag» (флаг инкапсуляции с малой задержкой), который представляет собой циклическое размещение траншей, а также указание транша посредством дополнительного идентификатора «tranche_id», следующий за кодом маркера посредством флага, такого как «low delay cyclic_flag» (флаг циклического размещения малой задержки) в заголовке единицы NAL. Эти два флага также могут представляться в наборах параметров последовательности, или даже APS. Для циклического размещения траншей все же может требоваться знание количества траншей во время синтаксического анализа, такого как предусмотренного в SPS в виде «num_low_delay_tranches» (количество траншей с малой задержкой).The NAL unit syntax can accommodate two modes for low latency interleaving as indicated by the "low delay encapsulation_flag" which represents the cyclic placement of tranches, as well as the indication of the tranche by an additional "tranche_id" identifier following the code token via a flag such as "low delay cyclic_flag" in the NAL unit header. These two flags may also be represented in sequence parameter sets, or even APS. Round-robin trenching may still require knowledge of the number of tranches during parsing, such as provided in SPS as "num_low_delay_tranches".

В единице NAL перемеженные «LD_rbsp_byte» считываются блоком синтаксического анализа и переупорядочиваются в фактический последовательный порядок RBSP в последнем for-цикле в синтаксисе NAL:In a NAL unit, the interleaved "LD_rbsp_byte" are read by the parser and reordered into the actual RBSP sequential order in the last for loop in the NAL syntax:

Также может быть явная сигнализация в SPS или APS для фиксированного размера циклически размещенных траншей, что указывается в «low-delay_tranche_length_minus1» (длительность транша с малой задержкой минус 1). Последний не использовался в примере синтаксиса единицы NAL, но является прямым, подразумевая пакетирование, показанное на фиг. 4. В синтаксисе единицы NAL на фиг. 6 было базовым пакетирование, показанное на фиг. 5 и описанное выше.There may also be explicit signaling in the SPS or APS for a fixed size of rotating tranches, as indicated by "low-delay_tranche_length_minus1" (low-delay tranche duration minus 1). The latter was not used in the example NAL unit syntax, but is straightforward, implying the packetization shown in FIG. 4. In the syntax of the NAL unit in FIG. 6 was the basic packaging shown in FIG. 5 and described above.

Чтобы сделать возможным этот признак перемежения траншей по многочисленным пакетам, таким как слайсы и/или единицы NAL, может быть требование к глобальному буферу, такому как массив LD_rbsp_byte для траншей, чтобы имел многократный доступ к данным RBSP уже принятых единиц NAL.To enable this feature of interleaving tranches across multiple packets, such as slices and/or NAL units, there may be a requirement for a global buffer, such as the LD_rbsp_byte array for tranches, to have multiple access to the RBSP data of already received NAL units.

Чтобы сделать возможной устойчивость к ошибкам после приема кода завершения, или если сумма количества принятых байтов для транша равна размеру транша, который может быть получен из значений смещений, предоставленных для содержащихся данных транша, например, из данных, касающихся соответствующего подпотока WPP или тайла, частью которых является рассматриваемый транш.To enable error tolerance after receiving a completion code, or if the sum of the number of received bytes for a tranche is equal to the tranche size, which can be obtained from the offset values provided for the contained tranche data, for example from data relating to the corresponding WPP substream or tile, part of which the tranche in question is.

Важным требованием к подпотокам WPP, расположенным в перемеженных траншах с малой задержкой, является то, что посредством транша n+1 выполняется обращение только к данным из транша n, которые уже предоставлены в транше n и уже сохранены или доступны в декодере.An important requirement for WPP substreams located in interleaved low-latency tranches is that tranche n+1 only accesses data from tranche n that is already provided in tranche n and is already stored or accessed in the decoder.

Синтаксис RBSP уровня слайса с малой задержкой для переупорядочения/деперемежения на уровне слайса может быть разработан следующим образом. В частности, синтаксис в данном случае должен иметь почти такое же поведение, что и на уровне единиц NAL, но переупорядочение должно определяться на уровне слайса. Фиг. 8 изображает синтаксис RBSP уровня слайса с малой задержкой.A low latency slice-level RBSP syntax for slice-level reordering/deinterleaving can be designed as follows. In particular, the syntax in this case should have almost the same behavior as at the NAL unit level, but the reordering should be determined at the slice level. Fig. 8 depicts the low latency slice layer RBSP syntax.

В случае использования заголовка слайса для пакетирования перемеженных траншей может быть требование к указанию на уровне кодека, если принимается новый слайс, не сбрасывать состояние CABAC, так как энтропийное кодирование траншей, например, подпотока WPP, не должно прерываться. Не сбрасывать CABAC в слайсе указывается как «no_cabac_reset_flag» в заголовке слайса. Показанный заголовок слайса подходит для слайсов с малой задержкой, таким образом, также должны присутствовать признаки entropy_slice (энтропийный слайс). Соответствующий синтаксис заголовка слайса показан на фиг. 9.In the case of using a slice header to package interleaved tranches, there may be a requirement to indicate at the codec level that if a new slice is received, do not reset the CABAC state, since the entropy encoding of tranches, for example a WPP substream, should not be interrupted. Do not reset CABAC in a slice is indicated as "no_cabac_reset_flag" in the slice header. The slice header shown is suitable for low latency slices, so the entropy_slice flags must also be present. The corresponding slice header syntax is shown in FIG. 9.

Транспортный уровень делает возможной оптимизацию планирования данных, направляемых на блок(-и) декодера, основываясь на факте, если может ли быть обработано количество подпотоков/тайлов/траншей (на транспортном уровне изобретатели предполагают абстрактный объект, который может быть представлен подпотоком, тайлом, частью подпотока или тайла, или частью битового потока, который имеет подобную функцию, т.е. он делает возможным параллельное декодирование или постепенное обновление декодера) на уровне кодирования независимо друг от друга. Одной возможностью является начало посылки траншей параллельно нескольким блокам декодирования с минимальной задержкой. Битовый поток состоит из последовательности единиц NAL, которые являются наименьшими элементами, которые могут быть обработаны индивидуально на транспортном уровне. Следовательно, следующие способы обработки на транспортном уровне основываются на подпотоках/тайлах/траншах, которые содержатся в отдельном слайсе или единицах NAL энтропийного слайса.The transport layer makes it possible to optimize the scheduling of data sent to the decoder block(s) based on whether the number of substreams/tiles/trenches can be processed (at the transport layer, the inventors envision an abstract object that can be represented by a substream, a tile, a part substream or tile, or part of a bitstream, which has a similar function, i.e. it allows parallel decoding or gradual updating of the decoder) at the encoding level independently of each other. One possibility is to start sending tranches in parallel to multiple decoding blocks with minimal latency. A bit stream consists of a sequence of NAL units, which are the smallest elements that can be processed individually at the transport layer. Therefore, the following transport layer processing methods are based on the substreams/tiles/tranches that are contained in an individual slice or NAL units of an entropy slice.

Транспортный уровень также должен оптимизировать рабочие характеристики декодера и устойчивость к ошибкам, основываясь на факте, использует ли уровень кодирования постепенное обновление декодера. Одним вариантом является отбрасывание неподходящих частей битового потока, если предыдущие части битового потока не были приняты правильно, например, из-за ошибок передачи, или совсем не были приняты, например, из-за переключения между транспортными каналами.The transport layer must also optimize decoder performance and error tolerance based on whether the encoding layer uses incremental decoder update. One option is to discard unsuitable parts of the bitstream if previous parts of the bitstream were not received correctly, for example due to transmission errors, or were not received at all, for example due to switching between transport channels.

Чтобы учитывать такое использование/оптимизацию, разная информация сигнализируется по транспортному уровню.To account for this use/optimization, various information is signaled across the transport layer.

Общая дополнительная информация сигнализируется с использованием дескритпоров:General additional information is signaled using descriptors:

- количество подпотоков/тайлов, где «1» означает, что имеется только один поток/тайл, который содержит весь кадр видео;- number of substreams/tiles, where “1” means that there is only one stream/tile that contains the entire video frame;

- информация, общая для всех подпотоков/тайлов, например, если все подпотоки/тайлы имеют одинаковый размер, или являются одинаковыми требования к буферу;- information common to all substreams/tiles, for example, if all substreams/tiles have the same size, or have the same buffer requirements;

- индивидуальная информация о каждом подпотоке/тайле, например, если подпотоки/тайлы имеют разные размеры, или различаются их требования к буферу;- individual information about each substream/tile, for example, if the substreams/tiles have different sizes or their buffer requirements differ;

- количество этапов постепенного обновления декодера, где «1» означает, что не используется постепенное обновление декодера;- number of decoder gradual update stages, where “1” means that decoder gradual update is not used;

- флаг, указывающий, учитывают ли эти подпотоки/тайлы параллельную обработку с малой задержкой.- a flag indicating whether these subthreads/tiles allow for parallel processing with low latency.

Если количество подпотоков/тайлов>1, элементы синтаксиса вставляются в поток перед каждым блоком данных, который содержит некоторый подпоток/тайл. Эти элементы синтаксиса придерживаются синтаксиса единиц NAL, но используют уникальный тип единицы NAL, который не используется уровнем кодирования (например, nal_unit_type=0x19 или nal_unit_type=0x1F), ниже упоминаемый как маркеры подпотока.If the number of substreams/tiles is >1, syntax elements are inserted into the stream before each data block that contains some substream/tile. These syntax elements adhere to NAL unit syntax, but use a unique NAL unit type that is not used by the encoding layer (for example, nal_unit_type=0x19 or nal_unit_type=0x1F), referred to below as substream markers.

Эти элементы синтаксиса используются в качестве маркеров и переносят информацию о блоке данных, который следует за по меньшей мере полем данных, которое идентифицирует подпоток/тайл.These syntax elements are used as markers and carry information about the data block that follows at least the data field that identifies the substream/tile.

Если количество этапов постепенного обновления декодера >1, эти элементы синтаксиса также переносят флаг, который указывает, имеет ли подпоток/тайл с внутренним кодированием (делает возможным постепенное обновление декодера).If the decoder incremental update round count is >1, these syntax elements also carry a flag that indicates whether the substream/tile is internally encoded (allowing decoder incremental updating).

Соответствующий синтаксис показан на фиг. 10. Могут применяться следующие ограничения:The corresponding syntax is shown in FIG. 10. The following restrictions may apply:

forbidden_zero_bit должен быть равен 0.forbidden_zero_bit must be 0.

nal_ref_flag должен быть равен 0.nal_ref_flag must be 0.

nal_unit_type должен быть равен 0x19.nal_unit_type must be 0x19.

substream_ID: значение счетчика, начинающееся с 0 для первого слайса, которое принадлежит изображению, увеличиваемое на 1 каждым следующим слайсом или энтропийным слайсом, который принадлежит этому же изображению.substream_ID: a counter value starting at 0 for the first slice that belongs to the image, incremented by 1 for each subsequent slice or entropy slice that belongs to the same image.

is_intra: если равен «1», следующая единица NAL содержит слайс с внутренним кодированием или энтропийный слайс с внутренним кодированием.is_intra: If equal to "1", the next NAL unit contains an intra-encoded slice or an intra-encoded entropy slice.

Способ инкапсуляции видеопотока при транспортном мультиплексировании показан на фиг. 11, где каждый слайс или энтропийный слайс транспортируется отдельно в целочисленном количестве пакетов транспортного потока. Если размер полезных данных не точно соответствует доступным байтам в пакетах транспортного потока (TS) фиксированного размера, последний пакет TS содержит поле адаптации.The method for encapsulating a video stream during transport multiplexing is shown in FIG. 11, where each slice or entropy slice is transported separately in an integer number of transport stream packets. If the payload size does not exactly match the available bytes in fixed-size Transport Stream (TS) packets, the last TS packet contains an adaptation field.

Необходимо отметить, что подобное поведение элементарного потока транспортного потока MPEG-2 также может обеспечиваться сеансом RTP или потоком RTP транспортного протокола реального времени, как показано на фиг. 19. В RTP [8] поток RTP (идентифицированный типом мультимедиа и типом полезных данных, как указано в SDP [12]) может содержаться в своем собственном сеансе RTP, где сеанс RTP идентифицируется сетевым адресом (IP (протокола Интернета)), портом (протокола передачи дейтаграмм пользователя (UDP)), а также идентификатором источника (SSRC). Мультимедийный сеанс, как указывается в SDP, может содержать многочисленные сеансы RTP, причем каждый содержит разный тип мультимедиа. Но также возможно транспортировать один и тот же поток мультимедиа (например, видео) в разных потоках RTP, где потоки RTP могут содержаться в одном и том же сеансе RTP (аналогично 1. ниже) или могут содержаться в своих собственных сеансах RTP (аналогично 2. ниже). Фиг. 19 иллюстрирует случай 2.It should be noted that similar MPEG-2 Transport Stream elementary stream behavior can also be provided by an RTP session or a Real Time Transport Protocol RTP stream, as shown in FIG. 19. In RTP [8], an RTP stream (identified by the media type and payload type as specified in SDP [12]) can be contained in its own RTP session, where the RTP session is identified by a network address (IP (Internet Protocol)), port ( User Datagram Protocol (UDP)) and Source Identifier (SSRC). A media session, as specified in the SDP, can contain multiple RTP sessions, each containing a different type of media. But it is also possible to transport the same media stream (eg video) in different RTP streams, where the RTP streams can be contained in the same RTP session (similar to 1. below) or can be contained in their own RTP sessions (similar to 2. below). Fig. 19 illustrates case 2.

Форматы полезных данных RTP [9] [13] имеют номер порядка декодирования (DON), который позволяет восстанавливать порядок декодирования единиц NAL в приемнике в случае, когда они намеренно передаются вне порядка декодирования с целью устойчивости к ошибкам, как описано в [9] [13]. Дополнительные маркеры MKR, поэтому, не являются необходимыми. В случае транспортировки траншей подпотоков WPP или тайлов в порядке, в котором они становятся доступными из процессов кодирования, DON также может использоваться для восстановления порядка декодирования траншей перед предоставлением их единственному декодеру. Но в этом случае дополнительная задержка вводится в декодере из-за отдельного процесса деперемежения перед процессом декодирования. Описанная здесь система может предоставлять кодированные транши непосредственно процессам декодирования разных подпотоков WPP или тайлов, в то время как данные поступают в приемник. Идентификация траншей, ассоциированных с подпотоком WPP или тайлом, может извлекаться посредством адреса слайса в заголовке сегмента слайса сегмента слайса и порядка передачи пакетов, как указывается номером последовательности RTP в заголовке RTP. При таком сценарии DON используется только для обратной совместимости, т.е. для декодеров, не обеспечивающих улучшенную возможность декодирования траншей подпотоков WPP или тайлов, посылаемых вне порядка декодирования, когда они поступают. Посылка данных транша вне порядка декодирования как раз применяется в отношении уровня подпотоков WPP и тайлов, т.е. в передаваемых данных, причем транши единственного подпотока WPP или тайла передаются в порядке декодирования, где перемежаются данные разных подпотоков WPP или тайлов.RTP payload formats [9][13] have a Decoding Order Number (DON), which allows the decoding order of NAL units to be recovered at the receiver in the event that they are intentionally transmitted out of decoding order for the purpose of error tolerance, as described in [9][13]. 13]. Additional MKR markers are therefore not necessary. In the case of transporting tranches of WPP substreams or tiles in the order in which they become available from encoding processes, DON can also be used to restore the decoding order of the tranches before presenting them to a single decoder. But in this case, additional delay is introduced in the decoder due to a separate deinterleaving process before the decoding process. The system described here can provide encoded tranches directly to the decoding processes of different WPP substreams or tiles while the data arrives at the receiver. The identification of the tranches associated with the WPP subflow or tile can be retrieved by the slice address in the slice segment header of the slice segment and the packet transmission order as indicated by the RTP sequence number in the RTP header. In this scenario, DON is used only for backward compatibility, i.e. for decoders that do not provide improved ability to decode tranches of WPP substreams or tiles sent out of decoding order when they arrive. Sending tranche data out of decoding order exactly applies to the level of WPP substreams and tiles, i.e. in the transmitted data, with tranches of a single WPP substream or tile transmitted in decoding order, where data from different WPP substreams or tiles is interleaved.

Существует два возможных варианта:There are two possible options:

1. Все слайсы и энтропийные слайсы содержатся в одном и том же элементарном потоке, т.е. один и тот же PID (идентификатор пакета) назначается всем пакетам TS этого видеопотока; в последующем тексте этот способ ссылается на инкапсуляцию единственного ES.1. All slices and entropy slices are contained in the same elementary stream, i.e. the same PID (packet identifier) is assigned to all TS packets of this video stream; in the following text this method refers to single ES encapsulation.

2. Разные PID назначаются слайсам и энтропийным слайсам одного и того же битового потока видео; в нижеследующем тексте этот способ ссылается на инкапсуляцию многочисленных ES.2. Different PIDs are assigned to slices and entropy slices of the same video bitstream; in the following text, this method refers to the encapsulation of multiple ES.

Фиг. 11 действительна для обоих вариантов, если первый вариант рассматривается как специальный случай более общей структуры посредством установки одного и того же PID для всех ES.Fig. 11 is valid for both options if the first option is treated as a special case of a more general structure by setting the same PID for all ES.

Более эффективный способ инкапсуляции в единственном ES показан на фиг. 12. В данном случае требуется максимум одно поле адаптации на изображение.A more efficient method of encapsulation in a single ES is shown in FIG. 12. In this case, a maximum of one adaptation field per image is required.

Более эффективный способ инкапсуляции в многочисленных ES показан на фиг. 13. В данном случае исключаются поля адаптации, вместо этого, другой слайс, например, совместный тайл следующего изображения, начинается непосредственно в этом же пакете транспортного потока.A more efficient method of encapsulation across multiple ESs is shown in FIG. 13. In this case, the adaptation fields are excluded, instead, another slice, for example, a joint tile of the next image, begins directly in the same transport stream packet.

Возможная конструкция транспортного демультиплексора для инкапсуляции с одним единственным элементарным потоком (ES), целью которой является многопоточный декодер, показана на фиг. 14. Энтропийный слайс на фигуре может содержать данные конкретного подпотока WPP или тайла.A possible transport demultiplexer design for single elementary stream (ES) encapsulation targeting a multi-stream decoder is shown in FIG. 14. An entropy slice on a figure can contain data from a specific WPP subflow or tile.

Транспортный буфер (TB) собирает данные, которые принадлежат транспортному пакету, и направляют их мультиплексному буферу (MB). На выходе MB заголовки единиц NAL оцениваются, и отбрасываются маркеры подпотока, в тоже время сохраняются данные, переносимые в маркере подпотока. Данные каждого слайса или энтропийного слайса сохраняются в отдельном буфере слайсов (SB), из которого они извлекаются многопоточным декодером, если доступен поток декодера.The transport buffer (TB) collects the data that belongs to the transport packet and forwards it to the multiplex buffer (MB). At the output of the MB, the NAL unit headers are evaluated and the subflow tokens are discarded, while preserving the data carried in the subflow token. The data of each slice or entropy slice is stored in a separate slice buffer (SB), from which it is retrieved by the multi-threaded decoder if a decoder thread is available.

Возможная конструкция транспортного демультиплексора для инкапсуляции многочисленных элементарных потоков, целью которой является многопоточный декодер, показана на фиг. 15.A possible design of a transport demultiplexer for encapsulating multiple elementary streams, the target of which is a multi-stream decoder, is shown in FIG. 15.

Вышеприведенные кратко изложенные принципы снова описываются ниже другими словами. Описание ниже, поэтому, является индивидуально объединяемым с дополнительными подробностями вышеупомянутого описания.The principles summarized above are described again below in different words. The description below is, therefore, individually combinable with additional details of the above description.

Фиг. 16 изображает общую конструкцию кодера согласно варианту осуществления настоящей заявки. Кодер 10 может быть реализован с возможностью работы в многопоточном режиме или нет, т.е. просто с единственным потоком. Т.е. кодер 10, например, может быть реализован с использованием многочисленных ядер CPU. Другими словами, кодер 10 может поддерживать параллельную обработку, но не должен. Принцип кодирования настоящей заявки позволяет кодерам параллельной обработки эффективно применять параллельную обработку, однако, без опасности ухудшения эффективности сжатия. Что касается возможности параллельной обработки, подобные утверждения действительны для декодера, который описан ниже в отношении фиг. 17.Fig. 16 shows a general structure of an encoder according to an embodiment of the present application. The encoder 10 may be implemented with the ability to operate in a multi-threaded mode or not, i.e. just with a single thread. Those. encoder 10, for example, may be implemented using multiple CPU cores. In other words, encoder 10 may support parallel processing, but should not. The encoding principle of the present application allows parallel processing encoders to effectively employ parallel processing, however, without the danger of degrading compression efficiency. With regard to the possibility of parallel processing, similar statements are valid for the decoder, which is described below in relation to FIG. 17.

Кодер 10 представляет собой видеокодер, но вообще кодер 10 также может представлять собой кодер изображения. Изображение 12 видео 14 показано как поступающее в кодер 10 на входе 16.Encoder 10 is a video encoder, but in general encoder 10 may also be an image encoder. Image 12 of video 14 is shown as entering encoder 10 at input 16.

Кодер 10 представляет собой гибридный кодер, т.е. изображение 12 предсказывается в предсказателе 18 и остаток 20 предсказания, получаемый определителем 22 остатка, таким как вычитатель, подвергается преобразованию, такому как спектральное разложение, такому как дискретное косинусное преобразование (DCT), и квантованию в модуле 24 преобразования/квантования. Квантованный остаток 26, полученный таким образом, подвергается энтропийному кодированию в энтропийном кодере 28, а именно контекстно-адаптивному двоичному арифметическому кодированию. Восстанавливаемая версия остатка, доступная для декодера, т.е. деквантованный и повторно преобразованный сигнал 30 остатка, восстанавливается модулем 31 повторного преобразования и повторного квантования и объединяется с сигналом 32 предсказания предсказателя 18 посредством объединителя 33, таким образом приводя к восстановлению 34 изображения 12. Однако кодер 10 работает на блочной основе. Следовательно, восстановленный сигнал 34 имеет разрывность на границах блока, и, следовательно, фильтр 36 может применяться к восстановленному сигналу 34, чтобы получить опорное изображение 38, на основе которого предсказатель 18 предсказывает последовательно кодированные изображения. Как показано пунктирными линиями на фиг. 16, предсказатель 18 может, однако, также использовать восстановленный сигнал 34 непосредственно без фильтра 36 или промежуточную версию. В случае кодирования изображения фильтр 36 может быть исключен.Encoder 10 is a hybrid encoder, i.e. the image 12 is predicted in the predictor 18 and the prediction remainder 20 obtained by the residual determiner 22 such as the subtractor is subjected to a transformation such as spectral decomposition such as the discrete cosine transform (DCT) and quantization in the transform/quantization unit 24 . The quantized residue 26 thus obtained is subjected to entropy encoding in the entropy encoder 28, namely context-adaptive binary arithmetic encoding. Recoverable version of the remainder available to the decoder, i.e. the dequantized and reconverted residue signal 30 is reconstructed by the reconversion and requantization unit 31 and combined with the prediction signal 32 of the predictor 18 via a combiner 33, thereby resulting in the reconstruction 34 of the image 12. However, the encoder 10 operates on a block basis. Therefore, the reconstructed signal 34 has discontinuity at block boundaries, and hence a filter 36 can be applied to the reconstructed signal 34 to obtain a reference image 38 from which the predictor 18 predicts sequentially encoded images. As shown by the dotted lines in FIG. 16, predictor 18 may, however, also use the reconstructed signal 34 directly without filter 36 or an intermediate version. In the case of image encoding, the filter 36 may be omitted.

Предсказатель 18 может выбирать из числа разных режимов предсказания, чтобы предсказывать некоторые блоки изображения 12. Может быть режим временного предсказания, согласно которому блок предсказывается на основе ранее кодированных изображений, режим пространственного предсказания, согласно которому блок предсказывается на основе ранее кодированных блоков этого же изображения, режимы межуровневого предсказания, согласно которым блок изображения, изображающего сцену на более высоком уровне, таком как при более высоком пространственном разрешении или с другой точки обзора, предсказывается на основе соответствующего изображения, изображающего эту сцену на более низком уровне, таком как при более низком пространственном разрешении или с другой точки обзора.Predictor 18 may select from a number of different prediction modes to predict certain blocks of image 12. There may be a temporal prediction mode in which a block is predicted based on previously encoded images, a spatial prediction mode in which a block is predicted based on previously encoded blocks of the same image, inter-layer prediction modes whereby a block of an image depicting a scene at a higher level, such as at a higher spatial resolution or from a different viewpoint, is predicted based on a corresponding image depicting that scene at a lower level, such as at a lower spatial resolution or from a different vantage point.

Некоторый синтаксис используется для сбора квантованных данных 26 остатка, т.е. уровни коэффициентов преобразования и другие данные остатка, а также данные режима кодирования, включающие в себя, например, режимы предсказания и параметры предсказания для индивидуальных блоков изображения 12, определенного предсказателем 18, и эти элементы синтаксиса подвергаются энтропийному кодированию энтропийным кодером 28. Полученный таким образом поток данных, выводимый энтропийным кодером 28, называется полезной нагрузкой 40 последовательности необработанных байтов.Some syntax is used to collect quantized residue 26 data, i.e. transform coefficient levels and other residual data, as well as encoding mode data including, for example, prediction modes and prediction parameters for individual blocks of image 12 determined by predictor 18, and these syntax elements are entropy encoded by entropy encoder 28. The thus obtained stream data output by entropy encoder 28 is called raw byte sequence payload 40.

Элементы кодера 10 на фиг. 16 соединены между собой так, как показано на фиг. 16.Elements of the encoder 10 in FIG. 16 are connected to each other as shown in Fig. 16.

Фиг. 17 изображает декодер, который соответствует кодеру на фиг. 16, т.е. способен декодировать полезную нагрузку последовательности необработанных байтов. Декодер на фиг. 17 в целом обозначен ссылочной позицией 50 и содержит энтропийный декодер 52, модуль 54 повторного преобразования/деквантования, объединитель 56, фильтр 58 и предсказатель 60. Энтропийный декодер 42 принимает полезную нагрузку 40 последовательности необработанных байтов и выполняет энтропийное декодирование, используя контекстно-адаптивное двоичное арифметическое декодирование для восстановления сигнала 62 остатка и параметров 64 кодирования. Модуль 54 повторного преобразования/деквантования деквантует и повторно преобразует данные 62 остатка и направляет полученный таким образом сигнал остатка на объединитель 56. Объединитель 56 также принимает сигнал 66 предсказания от предсказателя 60, который, в свою очередь, формирует сигнал 66 предсказания, используя параметры 64 кодирования, на основе восстановленного сигнала 68, определенного объединителем 56 посредством объединения сигнала 66 предсказания и сигнала 65 остатка. Как уже описано выше в отношении фиг. 16, предсказатель 60 может альтернативно или дополнительно использовать фильтрованную версию восстановленного сигнала 68 или некоторую ее промежуточную версию. Изображение, подлежащее окончательному воспроизведению и выводу на выходе 70 декодера 50, может подобно определяться по нефильтрованной версии сигнала 68 объединения или по некоторой ее фильтрованной версии.Fig. 17 shows a decoder that corresponds to the encoder in FIG. 16, i.e. capable of decoding a payload of sequences of raw bytes. The decoder in FIG. 17 is generally designated by reference numeral 50 and includes an entropy decoder 52, a remap/dequantizer 54, a combiner 56, a filter 58, and a predictor 60. The entropy decoder 42 receives a raw byte sequence payload 40 and performs entropy decoding using context-adaptive binary arithmetic decoding to recover the remainder signal 62 and encoding parameters 64 . The reconversion/dequantization module 54 dequantizes and reconverts the residual data 62 and forwards the thus obtained residual signal to a combiner 56. The combiner 56 also receives a prediction signal 66 from a predictor 60, which in turn generates a prediction signal 66 using encoding parameters 64 , based on the reconstructed signal 68 determined by the combiner 56 by combining the prediction signal 66 and the residual signal 65. As already described above in relation to FIG. 16, predictor 60 may alternatively or additionally use a filtered version of the reconstructed signal 68 or some intermediate version thereof. The image to be finally reproduced and output at output 70 of decoder 50 may similarly be determined by an unfiltered version of the combine signal 68 or some filtered version thereof.

Согласно принципу тайлов изображение 12 подразделяется на тайлы, и по меньшей мере предсказания блоков в этих тайлах ограничены на использование, как основы для пространственного предсказания, только данных, относящихся к этому же тайлу. Посредством этой меры по меньшей мере предсказание может выполняться для каждого тайла индивидуально и параллельно. Только для целей иллюстрации фиг. 16 иллюстрирует изображение 12, разделенное на девять тайлов. Подразделение каждого тайла на девять блоков, как показано на фиг. 16, также служит только в качестве примера. Кроме того, ради завершенности, отмечается, что способ кодирования тайлов отдельно может не ограничиваться пространственным предсказанием (внутренним предсказанием). Скорее, любое предсказание параметров кодирования соответствующего тайла по границам тайла и любая зависимость выбора контекста при энтропийном кодировании соответствующего тайла по границам соответствующего тайла также может предотвращаться, чтобы ограничиваться зависимостью только от данных одного и того же тайла. Таким образом, декодер способен выполнять только что упомянутые операции параллельно, а именно в единицах тайлов.According to the tile principle, the image 12 is divided into tiles, and at least the block predictions in these tiles are limited to using only data related to the same tile as the basis for spatial prediction. By means of this measure, at least the prediction can be performed for each tile individually and in parallel. For illustration purposes only, FIG. 16 illustrates image 12 divided into nine tiles. Subdividing each tile into nine blocks, as shown in FIG. 16 also serves as an example only. Additionally, for the sake of completeness, it is noted that the method of encoding tiles separately may not be limited to spatial prediction (intra prediction). Rather, any prediction of the encoding parameters of a corresponding tile across tile boundaries and any context selection dependence in the entropy encoding of a corresponding tile across the boundaries of a corresponding tile may also be prevented from being limited to dependence only on the same tile's data. Thus, the decoder is able to perform the operations just mentioned in parallel, namely in units of tiles.

Чтобы передаваться по некоторому каналу передачи, элементы синтаксиса должны энтропийно кодироваться по слайсам посредством энтропийного кодера 28. С этой целью энтропийный кодер 28 сканирует блоки тайлов прохождением блоков сначала первого тайла, затем продолжая с блоками следующего тайла в порядке тайлов и т.п. Порядок растрового сканирования, например, может использоваться для сканирования блоков в тайлах и тайлов соответственно. Слайсы затем упаковываются в единицы NAL, которые представляют собой наименьшие единицы для передачи. Перед энтропийным кодированием слайса энтропийный кодер 28 инициализирует свои вероятности CABAC, т.е. вероятности, используемые для арифметического кодирования элемента синтаксиса этого слайса. Энтропийный декодер 52 выполняет тоже самое, т.е. инициализирует свои вероятности в начале слайса. Каждая инициализация, однако, отрицательно влияет на эффективность энтропийного кодирования, так как вероятности непрерывно адаптируются к фактической статистике вероятности символа различных контекстов и, следовательно, сброс вероятностей CABAC представляет отклонение от адаптированного состояния. Как известно для специалиста в данной области техники, энтропийное кодирование приводит к оптимальному сжатию только тогда, когда вероятности соответствуют фактической статистике вероятности символа.To be transmitted over a transmission channel, syntax elements must be entropy encoded slice by slice by entropy encoder 28. To this end, entropy encoder 28 scans blocks of tiles by traversing the blocks of the first tile first, then continuing with the blocks of the next tile in tile order, etc. The raster scan order, for example, can be used to scan blocks in tiles and tiles respectively. The slices are then packed into NAL units, which are the smallest units for transmission. Before entropy encoding the slice, entropy encoder 28 initializes its CABAC probabilities, i.e. the probabilities used to arithmetic encode the syntax element of this slice. Entropy decoder 52 does the same thing, i.e. initializes its probabilities at the beginning of the slice. Each initialization, however, negatively affects the efficiency of entropy encoding, since the probabilities are continuously adapted to the actual symbol probability statistics of different contexts and, therefore, resetting the CABAC probabilities represents a deviation from the adapted state. As is known to one skilled in the art, entropy coding only results in optimal compression when the probabilities correspond to the actual probability statistics of the symbol.

Следовательно, декодер, согласно варианту осуществления настоящей заявки, работает так, как показано на фиг. 18. На этапе 80 декодер принимает полезную нагрузку последовательности необработанных байтов, описывающую изображение 12 в тайлах 82, в траншах тайлов. На фиг. 18 первый тайл 82 в порядке 84 тайлов показан в виде примера рассеченным или разделенным на два транша 86a и 86b, причем каждый в качестве примера охватывает подпоследовательность последовательности блоков в этом тайле. Затем на этапе 82 энтропийно декодируются транши 86a и 86b. Однако при энтропийном декодировании траншей 86a и 86b продолжается адаптация вероятностей CABAC по границам траншей. Т.е. во время декодирования транша 86a вероятности CABAC непрерывно адаптируются к фактическим статистикам символа, и состояние в конце энтропийного декодирования транша 86a адаптируется в начале энтропийного декодирования транша 86b. На этапе 90 полезная нагрузка последовательности необработанных байтов, энтропийно декодированная таким образом, декодируется для получения изображения 12.Therefore, the decoder according to the embodiment of the present application operates as shown in FIG. 18. At step 80, the decoder receives a raw byte sequence payload describing the image 12 in tiles 82, in tile tranches. In fig. 18, the first tile 82 in the tile order 84 is illustrated by way of example, dissected or divided into two tranches 86a and 86b, each exemplarily encompassing a subsequence of the sequence of blocks in that tile. Tranches 86a and 86b are then entropy decoded at step 82. However, entropy decoding of trenches 86a and 86b continues to adapt the CABAC probabilities along the trench boundaries. Those. during decoding of tranche 86a, the CABAC probabilities are continuously adapted to the actual statistics of the symbol, and the state at the end of entropy decoding of tranche 86a is adapted at the beginning of entropy decoding of tranche 86b. At step 90, the raw byte sequence payload thus entropically decoded is decoded to produce image 12.

Из-за продолжения адаптации вероятности CABAC по границам 92 траншей, расположенным внутри транша 82, эти границы траншей не оказывают отрицательного влияния на эффективность энтропийного кодирования вне подразделения изображения 12 на тайлы 82. С другой стороны, все же возможна параллельная обработка тайлов. Кроме этого, возможна индивидуальная передача траншей, и, так как транши меньше завершенных тайлов 82, возможно начинать на этапе 90 декодирование каждого тайла как только первый транш соответствующего тайла будет принят и энтропийно декодирован.Due to the continued adaptation of the CABAC probability across the trench boundaries 92 located within the trench 82, these trench boundaries do not negatively impact the entropy encoding efficiency beyond the subdivision of the image 12 into tiles 82. On the other hand, parallel processing of tiles is still possible. In addition, it is possible to transmit tranches individually, and since tranches are smaller than the completed tiles 82, it is possible to begin decoding each tile at step 90 as soon as the first tranche of the corresponding tile has been received and entropy decoded.

Описание фиг. 16-18 касается, главным образом, использования тайлов. Как описано выше, тайлы являются результатом пространственного разделения изображения. Подобно тайлам, слайсы также пространственно подразделяют изображение. Слайсы, следовательно, также представляют собой средство для предоставления возможности параллельного кодирования/декодирования. Подобно тайлам, предсказание и т.п. запрещается, так что слайсы являются индивидуально декодируемыми. Следовательно, описание фиг. 16-18 также действительно для разделения слайсов на транши.Description of Fig. 16-18 mainly concerns the use of tiles. As described above, tiles are the result of spatial division of an image. Like tiles, slices also spatially subdivide an image. Slices therefore also provide a means for providing parallel encoding/decoding capabilities. Similar to tiles, prediction, etc. is prohibited, so the slices are individually decodable. Therefore, the description of FIG. 16-18 is also valid for dividing slices into tranches.

Это же применимо при использовании подпотоков WPP. Подпотоки WPP также представляют пространственное разделение изображения 12, а именно на подпотоки WPP. В противоположность тайлам и слайсам, подпотоки WPP не накладывают ограничения на предсказания и выборы контакта по подпотокам WPP. Подпотоки WPP проходят по строкам блока, таким как строки LCU, как показано на фиг. 4, и, чтобы сделать возможной параллельную обработку, выполняется только один компромисс в отношении энтропийного кодирования CABAC, чтобы, как определяется среди подпотоков WPP (см. фиг. 4) 92 и для каждого подпотока 92 WPP, за исключением первого подпотока WPP, вероятности CABAC не полностью сбрасываются, но принимаются, или устанавливаются равными, вероятностям CABAC, появляющимся после энтропийного декодирования непосредственно предшествующего подпотока WPP до его второго LCU 94, причем порядок LCU начинается для каждого подпотока WPP на одной и той же стороне изображения 12, такой как левой стороне, как показано на фиг. 4. Следовательно, соответствуя некоторой задержке кодирования между последовательностью подпотока WPP, эти подпотоки 92 WPP являются декодируемыми параллельно, так что части, в которых изображение 12 декодируется параллельно, т.е. одновременно, формируют некоторый вид фронта 96 волны, который перемещается по изображению наклонным образом слева направо.The same applies when using WPP substreams. The WPP substreams also represent a spatial division of the image 12, namely into WPP substreams. Unlike tiles and slices, WPP subflows do not impose restrictions on predictions and contact selections across WPP subflows. WPP substreams traverse block lines, such as LCU lines, as shown in FIG. 4, and to enable parallel processing, only one CABAC entropy encoding trade-off is made such that, as determined among the WPP substreams (see FIG. 4) 92 and for each WPP substream 92 except the first WPP substream, the CABAC probability are not completely reset, but are assumed, or set equal, to the CABAC probabilities appearing after entropy decoding of the immediately preceding WPP substream to its second LCU 94, with the LCU order starting for each WPP substream on the same side of the picture 12, such as the left side, as shown in Fig. 4. Therefore, corresponding to some encoding delay between the sequence of WPP substreams, these WPP substreams 92 are decoded in parallel, so that the portions in which the picture 12 is decoded in parallel, i.e. simultaneously, forming some kind of wave front 96 that moves across the image in an oblique manner from left to right.

Т.е. при переносе описания фиг. 16-18 на подпотоки WPP, любой подпоток 92 WPP (фиг. 4) также может подразделяться на транши 98a и 98b без прерывания адаптации вероятностей CABAC на границе 100 между этими траншами 98a и 98b внутри соответствующего подпотока 92 WPP, тем самым устраняя проблемы в отношении эффективности энтропийного кодирования из-за индивидуальной возможности передачи обоих траншей 98a и 98b, но сохраняя возможность использования волновой параллельной обработки и делая возможным начать эту волновую параллельную обработку раньше, так как транши меньше завершенных подпотоков 92 WPP.Those. when transferring the description of Fig. 16-18 into WPP substreams, any WPP substream 92 (FIG. 4) can also be subdivided into tranches 98a and 98b without interrupting the adaptation of CABAC probabilities at the boundary 100 between those tranches 98a and 98b within the corresponding WPP substream 92, thereby eliminating problems regarding entropy encoding efficiency due to the individual ability to transmit both tranches 98a and 98b, but maintaining the ability to use wave parallel processing and making it possible to start this wave parallel processing earlier since the tranches are smaller than the completed WPP substreams 92.

Как описано выше в отношении фиг. 1-15, существует несколько возможностей для передачи траншей, пакетированных в единицы NAL. Ссылка делается на фиг. 3, где тайлы или подпотоки или слайсы таких траншей или подпотоков были разделены на транши в арифметически кодированной области, причем заголовок предшествует n-ому траншу каждого подпотока или тайла и представляет информацию, позволяющую выполнять локализацию границ траншей. Другим вариантом осуществления был вариант осуществления, представленный на фиг. 9. На нем подразделение тайлов или подпотоков WPP в транши было выполнено посредством незначительного изменения структуры слайса: слайсы, начинающиеся на границе тайла или подпотока WPP, т.е. начинающиеся в начале тайла или подпотока WPP, имеют no_cabac_reset_flag (флаг отсутствия сброса CABAC), установленный в ноль, тем самым вызывая обычную инициализацию/сброс вероятностей CABAC. Слайсы, однако, переносящие транши, которые начинаются внутри тайла или подпотока WPP, имеют no_cabac_reset_flag, установленный в единицу, тем самым вызывая вышеописанное продолжение адаптации вероятностей CABAC.As described above with respect to FIG. 1-15, there are several possibilities for transferring tranches packaged into NAL units. Reference is made to FIG. 3, where tiles or substreams or slices of such trenches or substreams have been divided into tranches in an arithmetically encoded area, with a header preceding the nth tranche of each substream or tile and representing information allowing localization of the boundaries of the trenches. Another embodiment was the embodiment shown in FIG. 9. On it, the division of WPP tiles or substreams into tranches was done by slightly changing the slice structure: slices starting at the boundary of a WPP tile or substream, i.e. starting at the beginning of a WPP tile or subflow have no_cabac_reset_flag set to zero, thereby causing normal CABAC probabilities to be initialized/reset. Slices, however, carrying tranches that start inside a WPP tile or substream have the no_cabac_reset_flag set to one, thereby causing the CABAC probability adaptation continuation described above.

Что касается деперемежения, которое происходит на этапе 80 приема, для каждого транша определяется, к какому подпотоку WPP или тайлу принадлежит соответствующий транш. Выше были описаны разные возможности, такие как, например, круговое зацикливание по некоторому количеству подпотоков WPP или тайлов текущего изображения. Альтернативно, в случае использования заголовков слайса для транспортировки траншей, заголовки слайса могут содержать указание, делающее возможным локализацию начала соответствующего слайса в текущем изображении 12.With respect to the deinterleaving that occurs at receive step 80, for each tranche it is determined which WPP substream or tile the corresponding tranche belongs to. Various possibilities were described above, such as, for example, circular looping over a certain number of WPP substreams or tiles of the current image. Alternatively, in the case of using slice headers to transport trenches, the slice headers may contain an indication that makes it possible to localize the start of the corresponding slice in the current image 12.

В этом отношении отмечается, что разбиение слайсов, подпотоков WPP или тайлов на транши выполняется в соответствии с порядком декодирования, определенном в каждом слайсе, подпотоке WPP или тайле: т.е. в каждом слайсе, подпотоке WPP или тайле, часть изображения, пространственно охватываемая соответствующим слайсом, подпотоком WPP или тайлом, кодируется в, или декодируется из, соответствующего слайса, подпотока WPP или тайла в этом порядке декодирования, и каждый транш соответствующего слайса, подпотока WPP или тайла охватывает непрерывную часть соответствующего слайса, подпотока WPP или тайла в соответствии с этим порядком декодирования. Посредством этого, порядок определяется среди траншей, принадлежащих одному и тому же слайсу, подпотоку WPP или тайлу, а именно порядок кодирования/декодирования, и каждый транш имеет ранг в этом порядке. Так как подразделение изображения на подпотоки WPP или тайлы сигнализируется декодеру, декодер имеет сведения о подразделении. Следовательно, для ассоциирования каждого транша с соответствующим подпотоком WPP или тайлом, например, будет достаточным, если каждый транш имеет начальный адрес, идентифицирующий начальную позицию, с которой соответствующий транш непрерывно охватывает изображение, используя порядок кодирования/декодирования тайлов/подпотоков WPP, частью которого является соответствующий транш. Даже если порядок среди траншей, которые принадлежат некоторому тайлу или подпотоку WPP, например, может быть восстановлен на транспортном демультиплексоре или декодером, используя начальные позиции. Однако, для обращения также может использоваться информация о заголовках транспортного пакета более низких уровней взаимодействия открытых систем (OSI), как описано выше в отношении передачи RTP, такая как номер порядка декодирования, т.е. DON. Транспортный демультиплексор только что упомянутого типа может быть выполнен аналогично вышеописанному транспортному демультиплексору, чтобы хранить данные траншей одинакового подпотока WPP или тайла в одном буфере слайсов, и данные траншей подпотоков WPP или тайлов, ассоциированных разных подпотоков WPP или тайлов, в разных буферах слайсов. Как упомянуто выше, структура слайса, т.е. заголовки слайса, могут использоваться для передачи траншей.In this regard, it is noted that the breaking of slices, WPP substreams or tiles into tranches is done according to the decoding order defined in each slice, WPP substream or tile: i.e. in each slice, WPP substream or tile, the portion of the image spatially encompassed by the corresponding slice, WPP substream or tile is encoded into, or decoded from, the corresponding slice, WPP substream or tile in that decoding order, and each tranche of the corresponding slice, WPP substream or tile spans the contiguous portion of the corresponding slice, WPP substream, or tile according to that decoding order. By this, an order is determined among tranches belonging to the same slice, WPP substream or tile, namely the encoding/decoding order, and each tranche has a rank in this order. Since the subdivision of an image into WPP substreams or tiles is signaled to the decoder, the decoder has knowledge of the subdivision. Therefore, to associate each tranche with a corresponding WPP substream or tile, for example, it will be sufficient if each tranche has a starting address identifying the starting position from which the corresponding tranche continuously spans the image using the encoding/decoding order of the WPP tiles/substreams of which it is part corresponding tranche. Even if the order among the trenches that belong to some WPP tile or substream, for example, can be restored at the transport demultiplexer or decoder using the starting positions. However, lower Open Systems Interconnection (OSI) transport packet header information may also be used for reference, as described above with respect to RTP transmission, such as the decoding order number, i.e. DON. The transport demultiplexer of the type just mentioned can be configured similarly to the above-described transport demultiplexer to store the data of tranches of the same WPP substream or tile in one slice buffer, and the data of tranches of WPP substreams or tiles associated with different WPP substreams or tiles in different slice buffers. As mentioned above, the slice structure, i.e. slice headers can be used to convey tranches.

Затем ссылка делается на варианты осуществления на фиг. 11-15 для описания их снова другими словами. Как описано на этих фигурах, слайсы Si пакетируются в единицы NAL, причем каждая единица 110 NAL (см. фиг. 11) содержит заголовок 112 единицы NAL. Необходимо отметить, что слайсы Si могут быть нормальными слайсами или слайсами, переносящими транши согласно фиг. 9. Следовательно, эти слайсы переносят исключительно данные, касающиеся одного подпотока WPP или тайла текущего изображения, а именно i-ого подпотока WPP или тайла соответственно. Посредством фрагментирования единицы 110 NAL транспортируются посредством пакетов 114 транспортного потока (TS), а именно их секции 116 полезных данных. Выполняя так, каждой единице 110 NAL и соответствующему слайсу Si предшествует соответствующий маркер MKR подпотока, указывающий i, т.е. подпоток WPP или тайл, к которому принадлежит непосредственно следующий за ним слайс непосредственно следующей единицы 110 NAL.Reference is then made to the embodiments of FIGS. 11-15 to describe them again in different words. As described in these figures, the Si slices are packaged into NAL units, with each NAL unit 110 (see FIG. 11) containing a NAL unit header 112. It should be noted that the Si slices can be normal slices or slices carrying tranches as shown in FIG. 9. Consequently, these slices exclusively carry data related to one WPP substream or tile of the current image, namely the i-th WPP substream or tile, respectively. Through fragmentation, NAL units 110 are transported via Transport Stream (TS) packets 114, namely payload sections 116 thereof. Doing this, each NAL unit 110 and corresponding slice S i is preceded by a corresponding subflow token MKR indicating i, i.e. the WPP substream or tile to which the immediately following slice of the immediately following NAL unit 110 belongs.

Единицы 110 NAL, переносящие слайсы, принадлежащие разным подпотокам WPP или тайлам, могут распределяться по более, чем одному элементарному потоку ES или по одному и тому же элементарному потоку, как описано на фиг. 11-13. Как упомянуто выше, «элементарный поток» также может идентифицировать отдельный поток RTP в его собственном сеансе RTP.NAL units 110 carrying slices belonging to different WPP substreams or tiles may be distributed across more than one ES elementary stream or the same elementary stream, as described in FIG. 11-13. As mentioned above, an "elementary stream" can also identify a separate RTP stream in its own RTP session.

Как объяснено в отношении фиг. 14 и 15, транспортный демультиплексор может содержать мультиплексный буфер MB, буфер SB слайсов и транспортный буфер TB. Из буферов SB слайсов извлекает данные многопоточный декодер MTD, который делает возможным параллельное декодирование изображения в подпотоках WPP или тайлах. Транспортный буфер TB выполнен с возможностью сбора данных, принадлежащих пакету TS предопределенного элементарного потока битового потока видео, и направления данных в мультиплексный буфер MB. Транспортный демультиплексор тогда выполняется с возможностью оценки заголовков единицы NAL единиц NAL последовательности единиц NAL, пакетированной в пакеты TS на выходе мультиплексного буфера MB, отбрасывания единиц MKR NAL маркера подпотока с сохранением данных маркера подпотока, переносимых в единицах NAL маркера подпотока, и хранения данных слайсов подпотоков или тайлов в единицах NAL, следующих за единицами NAL маркера подпотока, поле данных которых идентифицирует одинаковый подпоток WPP или тайл в одном, т.е. в одном и том же, буфере SB слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за единицами NAL маркера подпотока, поле данных которых идентифицирует разные подпотоки WPP или тайлы в разных буферах SB слайсов. Как показано на фиг. 15, транспортный демультиплексор может содержать демультиплексор, называемый демультиплексором TS (TS demux) на фиг. 15 и выполненный с возможностью приема битового потока видео и разделения пакетов TS битового потока видео на разные элементарные потоки, т.е. распределения пакета TS битового потока видео разным элементарным потокам. Демультиплексор выполняет это разделение или распределение согласно PID, содержащимся в заголовках TS пакета TS, так что каждый элементарный поток состоит из пакетов TS PAD, отличных от PAD пакетов TS других элементарных потоков.As explained in relation to FIG. 14 and 15, the transport demultiplexer may include a multiplex buffer MB, a slice buffer SB, and a transport buffer TB. The multi-threaded MTD decoder extracts data from the SB slice buffers, which makes it possible to parallelly decode images in WPP substreams or tiles. The transport buffer TB is configured to collect data belonging to the packet TS of a predefined elementary video bitstream and forward the data to the multiplex buffer MB. The transport demultiplexer is then configured to evaluate the NAL unit headers of the NAL units of the sequence of NAL units packaged into TS packets at the output of the multiplex buffer MB, discard the subflow marker NAL units MKR while storing the subflow marker data carried in the subflow marker NAL units, and store the subflow slice data or tiles in NAL units following the subflow marker NAL units whose data field identifies the same WPP subflow or tile in one, i.e. in the same SB slice buffer, and WPP substream slice data or tiles in NAL units following the substream marker NAL units whose data field identifies different WPP substreams or tiles in different SB slice buffers. As shown in FIG. 15, the transport demultiplexer may include a demultiplexer called a TS demux in FIG. 15 and configured to receive a video bitstream and divide the TS packets of the video bitstream into different elementary streams, i.e. distributing the video bitstream TS packet to different elementary streams. The demultiplexer performs this division or distribution according to the PIDs contained in the TS headers of the TS packet, so that each elementary stream consists of TS PAD packets different from the PAD TS packets of other elementary streams.

Т.е., если слайсы соответствуют траншам в смысле варианта осуществления на фиг. 9, MTD, т.е. многопоточный декодер, способен начинать обработку более чем одного подпотока WPP или тайла текущего изображения, как только соответствующий буфер SB слайсов соответствующего подпотока WPP или тайла будет иметь данные, содержащиеся в нем, тем самым уменьшая задержку.That is, if the slices correspond to tranches in the sense of the embodiment in FIG. 9, MTD, i.e. a multi-threaded decoder is capable of starting processing more than one WPP substream or tile of the current image as soon as the corresponding slice buffer SB of the corresponding WPP substream or tile has data contained in it, thereby reducing latency.

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

Обладающий признаками изобретения кодированный битовый поток может сохраняться на цифровой запоминающей среде или может передаваться по среде передачи, такой как беспроводная среда передачи или проводная среда передачи, такая как Интернет.The inventive encoded bitstream 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.

Эти вышеупомянутые усовершенствования, таким образом, между прочим, описывают способы инкапсуляции с малой задержкой и передачи структурированных видеоданных, обеспечиваемых новым стандартом кодирования HEVC, таких как структурированные в тайлах, подпотоках волновой параллельной обработки (WPP), слайсах или энтропийных слайсах. Между прочим, были представлены методы, которые делают возможным транспортировку с малой задержкой в распараллеленной среде кодера-передатчика-приемника-декодера посредством перемеженной транспортировки энтропийных слайсов/слайсов/тайлов/подпотоков. Чтобы решить проблемы узкого места, кратко изложенные в вводной части описания изобретения, и минимизировать задержку передачи и время декодирования, т.е. сквозную задержку, был представлен, между прочим, метод для схемы перемеженных энтропийных слайсов для параллельной передачи и обработки.These aforementioned improvements thus, among other things, describe methods for low-latency encapsulation and transmission of structured video data provided by the new HEVC encoding standard, such as structured in tiles, wave parallel processing (WPP) substreams, slices, or entropy slices. Incidentally, techniques have been presented that enable low latency transport in a parallelized encoder-transmitter-receiver-decoder environment through interleaved transport of entropy slices/slices/tiles/substreams. To solve the bottleneck problems summarized in the introductory part of the description of the invention, and minimize the transmission delay and decoding time, i.e. end-to-end delay, a method was presented, among other things, for an interleaved entropy slice circuit for parallel transmission and processing.

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

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

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

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

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

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

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

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

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

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

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

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

В одном аспекте настоящего осуществления обеспечен декодер, выполненный с возможностью приема полезных данных последовательности необработанных байтов, описывающих изображение слайсами, подпотоками WPP или тайлами и кодированных с использованием CABAC, от кодера в траншах слайсов, подпотоков WPP или тайлов; энтропийного декодирования траншей с продолжающейся адаптацией вероятностей CABAC через границы траншей; и декодирования полезных данных последовательности необработанных байтов для получения изображения.In one aspect of the present implementation, there is provided a decoder configured to receive a payload of a sequence of raw bytes describing an image in slices, WPP substreams or tiles and encoded using CABAC from an encoder in tranches of slices, WPP substreams or tiles; entropy decoding of trenches with ongoing adaptation of CABAC probabilities across trench boundaries; and decoding the payload of the sequence of raw bytes to obtain an image.

В упомянутом декодере последовательность необработанных байтов описывает изображение слайсами, и декодер выполнен с возможность, при декодировании полезных данных последовательности необработанных байтов, декодирования каждого слайса отдельно, без использования данных других слайсов. In said decoder, a sequence of raw bytes describes an image in slices, and the decoder is configured, when decoding payload data of a sequence of raw bytes, to decode each slice separately, without using data from other slices.

В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение тайлами, и декодер выполнен с возможностью, при декодировании полезных данных последовательности необработанных байтов, выполнения энтропийного декодирования и декодирования с преобразованием тайлов независимо друг от друга. In the decoder, the raw byte sequence payload describes an image in tiles, and the decoder is configured, when decoding the raw byte sequence payload, to perform entropy decoding and tile transform decoding independently of each other.

В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение подпотоками WPP, и декодер выполнен с возможностью, при декодировании полезных данных последовательности необработанных байтов, использования волновой параллельной обработки подпотока WPP. In said decoder, the raw byte sequence payload describes the image by WPP substreams, and the decoder is configured, when decoding the raw byte sequence payload, to use wave parallel processing of the WPP substream.

В упомянутом декодере транши упаковываются с использованием заголовков слайса, и декодер выполнен с возможностью, при приеме траншей, реагирования, после приема некоторого нового слайса, на флаг в заголовке слайса этого нового слайса, slice_type этого нового слайса или на тип единицы NAL собственно единицы NAL, содержащей этот новый слайс, чтобы либо прерывать адаптацию вероятностей CABAC посредством сброса вероятностей CABAC, либо продолжать адаптацию вероятностей CABAC. In said decoder, tranches are packaged using slice headers, and the decoder is configured, when receiving tranches, to respond, after receiving some new slice, to a flag in the slice header of that new slice, the slice_type of that new slice, or to the NAL unit type of the NAL unit itself. containing this new slice to either abort the adaptation of the CABAC probabilities by resetting the CABAC probabilities, or continue to adapt the CABAC probabilities.

В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение подпотоками WPP или тайлами, которые дополнительно подразделяются на транши. In the said decoder, the raw byte sequence payload describes the image in WPP substreams or tiles, which are further divided into tranches.

Упомянутый декодер выполнен с возможностью, при приеме упомянутых траншей, деперемежения этих траншей посредством идентификации для каждого транша, к какому подпотоку WPP или тайлу этот соответствующий транш принадлежит. Said decoder is configured to, upon receiving said tranches, de-interleave these tranches by identifying for each tranche which WPP sub-stream or tile that corresponding tranche belongs to.

В упомянутом декодере транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов, причем каждый пакет содержит заголовок, содержащий выявление позиций и/или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга, при этом декодер выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках или маркерах с тем, чтобы осуществить доступ к траншам в упомянутых пакетах. In said decoder, tranches are packaged in such a way that each packet contains one tranche from each WPP substream or image tile or a subset of WPP substreams or image tiles arranged in the order specified among those WPP substreams or tiles, each packet containing a header containing identifying positions and/or lengths of tranches packaged in a corresponding packet, or markers separating tranches in a corresponding packet from each other, wherein the decoder is configured, upon receiving a payload of a sequence of raw bytes, to use information contained in the headers or tokens to to access the tranches in the mentioned packages.

В упомянутом декодере пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.In said decoder, packets containing the first, in accordance with the order specified among WPP substreams or tiles, tranches of WPP substreams or image tiles contain a low-latency attribute indicator, and packets containing the second or subsequent tranches, in accordance with the order specified among WPP substreams or tiles, tranches of WPP substreams or image tiles, contain a continuation indicator.

В упомянутом декодере пакеты представляют собой единицы NAL или слайсы. In the said decoder, packets are NAL units or slices.

В другом аспекте настоящего осуществления обеспечен транспортный демультиплексор, содержащий мультиплексный буфер; буферы слайсов для извлечения многопоточным декодером, позволяющим осуществлять параллельное декодирование изображения подпотоками WPP или тайлами; транспортный буфер, выполненный с возможностью сбора данных, принадлежащих пакету TS некоторого предопределенного элементарного потока битового потока видео, и направления этих данных в мультиплексный буфер; при этом транспортный демультиплексор выполнен с возможностью оценки заголовков единиц NAL собственно единиц NAL из последовательности единиц NAL, упакованной в пакеты TS, на выходе мультиплексного буфера, отбрасывания маркеров подпотоков, вставленных в последовательность единиц NAL, с сохранением данных маркеров подпотоков, переносимых в этих маркерах подпотоков, и сохранения данных слайсов подпотоков или тайлов в единицах NAL, следующих за маркерами подпотоков, поле данных которых идентифицирует одинаковый подпоток WPP или тайл, в одном буфере слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за маркерами подпотоков, поле данных которых идентифицирует разные подпотоки WPP или тайлы, в разных буферах слайсов.In another aspect of the present implementation, a transport demultiplexer is provided, comprising a multiplex buffer; slice buffers for extraction by a multi-threaded decoder, allowing parallel decoding of the image by WPP substreams or tiles; a transport buffer configured to collect data belonging to a TS packet of some predefined elementary stream of the video bitstream and forward this data to a multiplex buffer; wherein the transport demultiplexer is configured to evaluate the NAL unit headers of the NAL units themselves from the sequence of NAL units packed in TS packets at the output of the multiplex buffer, discarding substream markers inserted into the sequence of NAL units, while storing the substream marker data carried in these substream markers , and storing substream slice data or tiles in NAL units following substream markers whose data field identifies the same WPP substream or tile in a single slice buffer, and WPP substream slice data or tiles in NAL units following the substream markers data field which identifies different WPP subflows or tiles, in different slice buffers.

В упомянутом транспортном демультиплексоре маркеры подпотоков представляют собой единицы NAL маркеров подпотоков, имеющие тип единицы NAL, отличный от единиц NAL, внутри которых находятся данные слайсов подпотоков или тайлов.In the transport demultiplexer, substream markers are NAL units of substream markers having a NAL unit type different from the NAL units within which the substream slice or tile data resides.

Упомянутый транспортный демультиплексор дополнительно содержит демультиплексор, выполненный с возможностью приема битового потока видео и разделения пакетов TS битового потока видео на разные элементарные потоки согласно PID, содержащимся в заголовках TS пакетов TS, так, чтобы каждый элементарный поток состоял из пакетов TS с некоторым PID, отличным от PID пакетов TS других элементарных потоков.Said transport demultiplexer further comprises a demultiplexer configured to receive a video bitstream and divide TS packets of the video bitstream into different elementary streams according to PIDs contained in the TS headers of the TS packets, so that each elementary stream consists of TS packets with some PID different from PID packets of TS of other elementary streams.

В другом аспекте настоящего осуществления обеспечен транспортный демультиплексор, выполненный с возможностью приема битового потока видео, содержащего полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш содержит информацию, идентифицирующую для каждого транша то, к какому подпотоку WPP или тайлу принадлежит соответствующий транш, и ассоциирования траншей со слайсами, подпотоками WPP или тайлами, используя упомянутую информацию.In another aspect of the present implementation, there is provided a transport demultiplexer configured to receive a video bitstream containing a raw byte sequence payload describing an image in slices, WPP substreams, or tiles and encoded using CABAC, wherein the video bitstream is divided into tranches of slices, WPP substreams, or tiles. tiles with ongoing adaptation of CABAC probabilities across tranche boundaries, each tranche containing information identifying for each tranche which WPP substream or tile the corresponding tranche belongs to, and associating the tranches with slices, WPP substreams or tiles using said information.

В упомянутом транспортном демультиплексоре для каждого транша информация, содержащаяся в соответствующем транше, содержит адрес начальной позиции в изображении, начиная с которой соответствующий транш непрерывно охватывает некоторую часть слайса, подпотока WPP или тайла, к которому этот соответствующий транш принадлежит.In said transport demultiplexer, for each tranche, the information contained in the corresponding tranche contains the address of the starting position in the image, starting from which the corresponding tranche continuously covers some part of the slice, WPP substream or tile to which that corresponding tranche belongs.

Упомянутый транспортный демультиплексор выполнен с возможностью сортировки, для каждого слайса, подпотока WPP или тайла, их траншей, используя номер порядка декодирования в заголовках пакетов собственно пакетов, в которые эти транши упакованы.Said transport demultiplexer is configured to sort, for each slice, WPP subflow or tile, its tranches, using the decoding order number in the packet headers of the actual packets in which these tranches are packed.

В другом аспекте настоящего осуществления обеспечена система, содержащая транспортный демультиплексор по любому из пунктов 11-13 и многопоточный декодер, при этом многопоточный декодер реализован согласно пункту 5. In another aspect of the present implementation, a system is provided comprising a transport demultiplexer as in any one of claims 11-13 and a multi-stream decoder, wherein the multi-stream decoder is implemented as in claim 5.

В другом аспекте настоящего осуществления обеспечен кодер, выполненный с возможностью формирования, посредством кодирования изображения, полезных данных последовательности необработанных байтов для описания упомянутого изображения слайсами, подпотоками WPP или тайлами с энтропийным кодированием последовательности необработанных байтов, используя CABAC, передачи последовательности необработанных байтов в траншах и продолжения адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей.In another aspect of the present implementation, an encoder is provided, configured to generate, by encoding an image, a raw byte sequence payload for describing said image in slices, WPP substreams, or entropy encoded tiles of the raw byte sequence using CABAC, transmitting the raw byte sequence in tranches, and continuing adapting CABAC probabilities when performing entropy coding across trench boundaries.

Упомянутый кодер выполнен с возможностью формирования последовательности необработанных байтов так, чтобы транши соответствовали максимальному размеру единицы передачи. Said encoder is configured to generate a sequence of raw bytes such that the tranches correspond to a maximum transmission unit size.

В другом аспекте настоящего осуществления обеспечен битовый поток видео, передающий последовательность единиц NAL, содержащих заголовки единиц NAL, причем последовательность единиц NAL имеет вставленные в нее маркеры подпотоков, при этом единицы NAL, переносящие данные слайсов некоторого одного из потоков или тайлов, следуют за маркерами подпотоков, поле данных которых идентифицирует упомянутый один подпоток или тайл, и данные слайсов разных подпотоков или тайлов следуют за разными маркерами подпотоков, поле данных которых идентифицирует эти разные подпотоки или тайлы.In another aspect of the present implementation, a video bitstream is provided carrying a sequence of NAL units containing headers of the NAL units, wherein the sequence of NAL units has substream markers inserted therein, wherein NAL units carrying slice data of some one of the streams or tiles follow the substream markers , the data field of which identifies said one substream or tile, and the slice data of different substreams or tiles follows different substream markers, the data field of which identifies those different substreams or tiles.

В другом аспекте настоящего осуществления обеспечен битовый поток видео, содержащий полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш включает в себя явное указание своего ранга среди траншей, на которые последовательно разбивается слайс, подпоток WPP или тайл, к которому этот соответствующий транш принадлежит.In another aspect of the present implementation, a video bitstream is provided containing a raw byte sequence payload describing the image in slices, WPP substreams or tiles and encoded using CABAC, wherein the video bitstream is broken into tranches of slices, WPP substreams or tiles with continued adaptation of CABAC probabilities through boundaries of the tranches, with each tranche including an explicit indication of its rank among the tranches into which the slice, WPP substream or tile to which that corresponding tranche belongs is sequentially divided.

В упомянутом битовом потоке видео транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов, причем каждый пакет содержит заголовок, содержащий выявление позиций и/или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга.In said video bitstream, the tranches are packaged into packets such that each packet contains one tranche of each WPP substream or image tile or a subset of WPP substreams or image tiles arranged in the order specified among those WPP substreams or tiles, each packet containing a header , containing identification of the positions and/or lengths of the tranches packaged in the corresponding package, or markers separating the tranches in the corresponding package from each other.

В упомянутом битовом потоке видео пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.In said video bitstream, packets containing the first, in accordance with the order specified among WPP substreams or tiles, tranches of WPP substreams or image tiles contain a low-latency attribute indicator, and packets containing the second or subsequent, in accordance with the order specified among WPP substreams or tiles, tranches of WPP substreams or image tiles, contain a continuation indicator.

В упомянутом битовом потоке видео пакеты представляют собой единицы NAL или слайсы.In said video bitstream, packets are NAL units or slices.

В другом аспекте настоящего осуществления обеспечен способ принятия решения, содержащий прием полезных данных последовательности необработанных байтов, описывающих изображение слайсами, подпотоками WPP или тайлами и кодированных с использованием CABAC, от кодера в траншах слайсов, подпотоков WPP или тайлов; энтропийное декодирование упомянутых траншей с продолжающейся адаптацией вероятностей CABAC через границы траншей; и декодирование полезных данных последовательности необработанных байтов для получения изображения.In another aspect of the present implementation, there is provided a decision method comprising: receiving a payload of a sequence of raw bytes describing an image in slices, WPP substreams or tiles and encoded using CABAC, from an encoder in tranches of slices, WPP substreams or tiles; entropy decoding of said tranches with ongoing adaptation of CABAC probabilities across trench boundaries; and decoding the payload of the sequence of raw bytes to obtain an image.

В другом аспекте настоящего осуществления обеспечен способ транспортного демультиплексирования, использующий мультиплексный буфер, буферы слайсов для извлечения многопоточным декодером, позволяющим осуществлять параллельное декодирование изображения в подпотоках WPP или тайлах, и транспортный буфер, выполненный с возможностью сбора данных, принадлежащих пакету TS некоторого предопределенного элементарного потока из битового потока видео, и направления этих данных в мультиплексный буфер, причем способ содержит оценку заголовков единиц NAL собственно единиц NAL из последовательности единиц NAL, упакованной в пакеты TS, на выходе мультиплексного буфера, отбрасывание единиц NAL маркеров подпотоков с сохранением данных маркеров подпотоков, переносимых в этих единицах NAL маркеров подпотоков, и сохранение данных слайсов подпотоков или тайлов в единицах NAL, следующих за единицами NAL маркеров подпотоков, поле данных которых идентифицирует одинаковый подпоток WPP или тайл, в одном буфере слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за единицами NAL маркеров подпотоков, поле данных которых идентифицирует разные подпотоки WPP или тайлы, в разных буферах слайсов.In another aspect of the present implementation, a transport demultiplexing method is provided using a multiplex buffer, slice buffers for extraction by a multi-threaded decoder allowing parallel decoding of an image in WPP substreams or tiles, and a transport buffer configured to collect data belonging to a TS packet of some predefined elementary stream from video bit stream, and sending this data to a multiplex buffer, the method comprising evaluating the NAL unit headers of the NAL units themselves from the sequence of NAL units packed in TS packets at the output of the multiplex buffer, discarding the NAL units of substream markers while preserving the substream marker data transferred to these substream marker NAL units, and storing substream slice data or tiles in NAL units subsequent to substream marker NAL units whose data field identifies the same WPP substream or tile in one slice buffer, and WPP substream slice data or tiles in NAL units, following the NAL units of subflow markers, the data field of which identifies different WPP subflows or tiles, in different slice buffers.

В другом аспекте настоящего осуществления обеспечен способ транспортного демультиплексирования, содержащий прием битового потока видео, содержащего полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш содержит информацию, идентифицирующую для каждого транша то, к какому подпотоку WPP или тайлу принадлежит соответствующий транш, и ассоциирования траншей со слайсами, подпотоками WPP или тайлами, используя упомянутую информацию.In another aspect of the present implementation, a transport demultiplexing method is provided, comprising receiving a video bitstream containing a payload of a sequence of raw bytes describing an image in slices, WPP substreams or tiles and encoded using CABAC, wherein the video bitstream is divided into tranches of slices, WPP substreams or tiles with CABAC probabilities continuing to adapt across tranche boundaries, each tranche containing information identifying for each tranche which WPP sub-stream or tile the corresponding tranche belongs to, and associating the tranches with slices, WPP sub-streams or tiles using said information.

В другом аспекте настоящего осуществления обеспечен способ кодирования, содержащий формирование, посредством кодирования изображения, полезных данных последовательности необработанных байтов для описания упомянутого изображения слайсами, подпотоками WPP или тайлами с энтропийным кодированием последовательности необработанных байтов, используя CABAC, передачу последовательности необработанных байтов в траншах и продолжение адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей.In another aspect of the present implementation, an encoding method is provided, comprising generating, by image encoding, a raw byte sequence payload for describing said image in slices, WPP substreams or entropy encoded tiles of the raw byte sequence using CABAC, transmitting the raw byte sequence in tranches, and continuing adaptation CABAC probabilities when performing entropy coding across trench boundaries.

В другом аспекте настоящего осуществления обеспечена компьютерная программа, имеющая программный код для выполнения, при исполнении на компьютере, способа по любому из пунктов 25-28.In another aspect of the present implementation, a computer program is provided having program code for executing, when executed on a computer, the method of any one of claims 25-28.

Ссылочная литератураReferences

Claims (37)

1. Декодер, выполненный с возможностью1. A decoder configured to приема полезных данных последовательности необработанных байтов, описывающих изображение подпотоками волновой параллельной обработки, WPP, с одним подпотоком WPP на строку наибольшей единицы кодирования, LCU, изображения и кодированных с использованием контекстно-адаптивного двоичного арифметического кодирования, CABAC, от кодера в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей;receiving payload data of a sequence of raw bytes describing the image in wave parallel processing, WPP, substreams, with one WPP substream per line of the largest coding unit, LCU, of the image and encoded using context-adaptive binary arithmetic coding, CABAC, from the encoder in the tranches into which the WPP sub-flows, whereby trench boundaries are introduced into them; энтропийного декодирования упомянутых траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP; иentropy decoding of said tranches with continued adaptation of CABAC probabilities across the tranche boundaries introduced into the WPP substreams; And декодирования полезных данных последовательности необработанных байтов для получения изображения;decoding a payload of a sequence of raw bytes to obtain an image; при этом декодер представляет собой видеодекодер, использующий фильтр для фильтрации восстановленного изображения, чтобы получить опорное изображение для предсказания декодируемого впоследствии изображения.wherein the decoder is a video decoder using a filter to filter the reconstructed image to obtain a reference image for predicting a subsequently decoded image. 2. Декодер по пункту 1, в котором транши упаковываются с использованием заголовков слайсов, и декодер выполнен с возможностью, при приеме траншей, реагирования, после приема нового слайса, на флаг в заголовке слайса этого нового слайса, slice_type этого нового слайса или тип единицы NAL собственно единицы NAL, содержащей этот новый слайс, чтобы либо прервать адаптацию вероятностей CABAC посредством сброса вероятностей CABAC, либо продолжить адаптацию вероятностей CABAC. 2. The decoder of claim 1, wherein the tranches are packaged using slice headers, and the decoder is configured, upon receiving the tranches, to respond, upon receiving a new slice, to a flag in the slice header of that new slice, the slice_type of that new slice, or the NAL unit type. the actual NAL unit containing this new slice to either abort the adaptation of the CABAC probabilities by resetting the CABAC probabilities, or to continue adapting the CABAC probabilities. 3. Декодер по пункту 1 или 2, при этом декодер выполнен с возможностью, при приеме упомянутых траншей, деперемежения этих траншей посредством идентификации для каждого транша, к какому подпотоку WPP этот соответствующий транш принадлежит.3. The decoder as claimed in claim 1 or 2, wherein the decoder is configured, upon receiving said tranches, to de-interleave those tranches by identifying for each tranche which WPP sub-stream that corresponding tranche belongs to. 4. Декодер по пункту 1 или 2, в котором транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP изображения или поднабора подпотоков WPP изображения, расположенных в порядке, заданном среди этих подпотоков WPP, причем каждый пакет содержит заголовок, содержащий выявление позиций или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга, при этом декодер выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках или маркерах с тем, чтобы осуществлять доступ к траншам в упомянутых пакетах.4. The decoder of claim 1 or 2, wherein the tranches are packaged into packets such that each packet contains one tranche from each WPP image substream or subset of WPP image substreams arranged in the order specified among those WPP substreams, each packet containing a header comprising identifying positions or lengths of tranches packaged in a corresponding packet, or tokens separating tranches in a corresponding packet from each other, wherein the decoder is configured, upon receiving a payload of a sequence of raw bytes, to use information contained in the headers or tokens so as to to access the tranches in the mentioned packages. 5. Декодер по пункту 4, в котором пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов изображения, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов изображения, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.5. The decoder of claim 4, in which packets containing the first, in accordance with the order specified among WPP substreams or image tiles, tranches of WPP subflows or image tiles contain a low-latency attribute indicator, and packets containing the second or subsequent ones, in accordance with the order specified among WPP substreams or image tiles, tranches of WPP substreams or image tiles contain a continuation indicator. 6. Декодер по пункту 4, в котором пакеты представляют собой единицы NAL или слайсы.6. The decoder of step 4, in which the packets are NAL units or slices. 7. Декодер, выполненный с возможностью7. A decoder configured to приема полезных данных последовательности необработанных байтов, описывающих изображение подпотоками WPP и кодированных с использованием CABAC, от кодера в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей;receiving a payload of a sequence of raw bytes describing the image by the WPP substreams and encoded using CABAC, from the encoder in the tranches into which the WPP substreams are segmented, whereby the tranche boundaries are introduced therein; энтропийного декодирования траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP, путем принятия, в начале энтропийного декодирования одного транша подпотока WPP, вероятностей CABAC в конце энтропийного декодирования другого транша подпотока WPP; иentropy decoding the tranches while continuing to adapt the CABAC probabilities across the tranche boundaries introduced into the WPP substreams by adopting, at the beginning of the entropy decoding of one tranche of a WPP substream, the CABAC probabilities at the end of the entropy decoding of another tranche of the WPP substream; And декодирования полезных данных последовательности необработанных байтов для получения изображения;decoding a payload of a sequence of raw bytes to obtain an image; при этом декодер представляет собой видеодекодер, использующий фильтр для фильтрации восстановленного изображения, чтобы получить опорное изображение для предсказания декодируемого впоследствии изображения.wherein the decoder is a video decoder using a filter to filter the reconstructed image to obtain a reference image for predicting a subsequently decoded image. 8. Декодер по пункту 1 или 7, в котором в полезных данных последовательности необработанных байтов закодирована сцена по уровням, соответствующим различным точкам обзора.8. The decoder of claim 1 or 7, in which the payload sequence of raw bytes encodes the scene into layers corresponding to different viewpoints. 9. Декодер по пункту 1 или 7, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.9. The decoder of claim 1 or 7, in which the payload sequence of raw bytes has a layer-encoded image. 10. Кодер, выполненный с возможностью10. An encoder configured to формирования, посредством кодирования изображения, полезных данных последовательности необработанных байтов так, чтобы они описывали упомянутое изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения, с помощью энтропийного кодирования последовательности необработанных байтов, используя CABAC, передачи последовательности необработанных байтов в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, и продолжения адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей, введенные в подпотоки WPP, при этом кодер представляет собой видеокодер, использующий фильтр для фильтрации уже кодированного изображения, чтобы получить опорное изображение для предсказания кодируемого впоследствии изображения.generating, by image encoding, a raw byte sequence payload so that it describes said image in WPP substreams with one WPP substream per LCU line of the image, using entropy encoding of the raw byte sequence, using CABAC, transmitting the raw byte sequence in tranches into which segmenting the WPP substreams whereby trench boundaries are introduced into them, and continuing to adapt the CABAC probabilities while performing entropy coding across the trench boundaries introduced into the WPP substreams, wherein the encoder is a video encoder using a filter to filter an already encoded image to obtain a reference image for prediction of the subsequently encoded image. 11. Кодер по пункту 10, при этом кодер выполнен с возможностью формирования последовательности необработанных байтов так, чтобы транши соответствовали максимальному размеру единицы передачи.11. The encoder of claim 10, wherein the encoder is configured to generate a sequence of raw bytes so that the tranches correspond to the maximum transmission unit size. 12. Кодер по пункту 10, в котором в полезных данных последовательности необработанных байтов сцена закодирована по уровням, соответствующим различным точкам обзора.12. The encoder of claim 10, wherein the payload sequence of raw bytes encodes the scene into levels corresponding to different viewpoints. 13. Кодер по пункту 10, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.13. The encoder of claim 10, wherein the payload sequence of raw bytes has a layer-encoded image. 14. Способ для декодирования, содержащий14. A method for decoding, comprising прием полезных данных последовательности необработанных байтов, описывающих изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения и кодированных с использованием CABAC от кодера в траншах подпотоков WPP, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей;receiving a payload of a sequence of raw bytes describing the image by WPP substreams with one WPP substream per LCU line of the image and encoded using CABAC from the encoder in tranches of WPP substreams into which the WPP substreams are segmented, whereby trench boundaries are introduced therein; энтропийное декодирование упомянутых траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP; иentropy decoding of said tranches with continued adaptation of CABAC probabilities across trench boundaries introduced into WPP substreams; And декодирование полезных данных последовательности необработанных байтов для получения изображения;decoding a payload of a sequence of raw bytes to obtain an image; при этом фильтр используется для фильтрации восстановленного изображения, чтобы получить опорное изображение для предсказания декодируемого впоследствии изображения.wherein the filter is used to filter the reconstructed image to obtain a reference image for predicting a subsequently decoded image. 15. Цифровой носитель данных, хранящий битовый поток видео, содержащий полезные данные последовательности необработанных байтов, описывающие изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения и кодированные с использованием CABAC, причем битовый поток видео разбивается на транши подпотоков WPP, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, с продолжающейся адаптацией вероятностей CABAC через границы траншей, введенные в подпотоки WPP, при этом каждый транш включает в себя явное указание своего ранга среди траншей, на которые последовательно разбит подпоток WPP, к которому этот соответствующий транш принадлежит, при этом полезные данные последовательности необработанных байтов закодированы с использованием фильтра для фильтрации уже кодированного изображения, чтобы получить опорное изображение для предсказания кодируемого впоследствии изображения, при этом битовый поток видео побуждает, если он подается в декодер, декодер выполнять способ по пункту 14.15. A digital storage medium storing a video bitstream containing a payload of a sequence of raw bytes describing an image in WPP substreams with one WPP substream per LCU image line and encoded using CABAC, wherein the video bitstream is divided into tranches of WPP substreams into which the WPP sub-streams whereby tranche boundaries are introduced into them, with CABAC probabilities continuing to adapt across the tranche boundaries introduced into the WPP sub-streams, each tranche including an explicit indication of its rank among the tranches into which the WPP sub-stream to which it corresponds is sequentially divided tranche belongs, wherein the raw byte sequence payload is encoded using a filter for filtering an already encoded image to obtain a reference image for predicting a subsequently encoded image, wherein the video bitstream causes, if supplied to a decoder, the decoder to perform the method of claim 14. 16. Цифровой носитель данных по пункту 15, в котором транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения, или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов изображения, причем каждый пакет содержит заголовок, содержащий выявление позиций или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга.16. The digital storage medium of claim 15, wherein the tranches are packaged in such a way that each package contains one tranche from each WPP substream or image tile, or a subset of WPP substreams or image tiles arranged in the order specified among those WPP substreams or image tiles, each packet containing a header containing an identification of the positions or lengths of the tranches packaged in the corresponding packet, or markers separating the tranches in the corresponding packet from each other. 17. Цифровой носитель данных по пункту 15 или 16, в котором пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов изображения, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов изображения, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.17. The digital storage medium of claim 15 or 16, wherein packets containing the first, in accordance with the order specified among WPP substreams or image tiles, tranches of WPP substreams or image tiles contain a low latency attribute indicator, and packets containing the second or subsequent tranches of WPP substreams or image tiles, according to the order specified among the WPP substreams or image tiles, contain a continuation indicator. 18. Цифровой носитель данных по пункту 16, в котором пакеты представляют собой единицы NAL или слайсы.18. The digital storage medium of paragraph 16, in which the packets are NAL units or slices. 19. Цифровой носитель данных по пункту 15, в котором в полезных данных последовательности необработанных байтов сцена закодирована по уровням, соответствующим различным точкам обзора.19. The digital storage medium of claim 15, wherein the sequence of raw bytes in the payload data encodes the scene into layers corresponding to different viewpoints. 20. Цифровой носитель данных по пункту 15, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.20. The digital storage medium of claim 15, wherein the payload sequence of raw bytes has a layer-encoded image. 21. Способ для кодирования, содержащий21. A method for encoding, comprising формирование, посредством кодирования изображения, полезных данных последовательности необработанных байтов так, чтобы они описывали упомянутое изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения, с помощью энтропийного кодирования последовательности необработанных байтов, используя CABAC, передачу последовательности необработанных байтов в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, и продолжение адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей, введенные в подпотоки WPP, при этом полезные данные последовательности необработанных байтов кодируются с использованием фильтра для фильтрации уже кодированного изображения, чтобы получить опорное изображение для предсказания кодируемого впоследствии изображения.generating, by image encoding, a payload of a sequence of raw bytes such that it describes said image by WPP substreams with one WPP substream per LCU line of the image, using entropy encoding of the sequence of raw bytes, using CABAC, transmitting the sequence of raw bytes in tranches into which segmenting the WPP substreams whereby trench boundaries are introduced into them, and continuing to adapt CABAC probabilities while performing entropy encoding across the trench boundaries introduced into the WPP substreams, whereby the raw byte sequence payload is encoded using a filter to filter the already encoded image to obtain a reference image to predict a subsequently encoded image. 22. Цифровой носитель данных, хранящий компьютерную программу, имеющую программный код для выполнения, при исполнении на компьютере способа по п. 14.22. A digital storage medium storing a computer program having a program code for execution when the method according to claim 14 is executed on a computer. 23. Цифровой носитель данных, хранящий компьютерную программу, имеющую программный код для выполнения, при исполнении на компьютере способа по п. 21.23. A digital storage medium storing a computer program having a program code for execution when the method according to claim 21 is executed on a computer.
RU2022115044A 2012-01-20 2022-06-03 Encoding principle that makes parallel processing possible, transport demultiplexer and video bit stream RU2808541C1 (en)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US61/588,849 2012-01-20

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2019102609A Division RU2773795C2 (en) 2012-01-20 2019-01-30 Encoding principle that makes parallel processing possible, transport demultiplexer and video bitstream

Publications (1)

Publication Number Publication Date
RU2808541C1 true RU2808541C1 (en) 2023-11-29

Family

ID=

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
GARY J. SULLIVAN, Category-prefixed data batching for HEVC wavefront and PIPE/V2V/V2F coding, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-G815, 7th Meeting: Geneva, 21-30 November, 2011. GORDON CLARE et al, Wavefront and Cabac Flush: Different Degrees of Parallelism Without Transcoding, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-F275, 6th Meeting: Torino, 14-22 July 2011. CHIH-WEI HSU et al, Wavefront Parallel Processing with Tiles, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-F063, 6th Meeting: Torino, 14-22 July 2011. GORDON CLARE et al, Wavefront Parallel Processing for HEVC Encoding and Decoding, Joint Collaborative Team on Video Coding (JCT-VC) of ITU-T SG16 WP3 and ISO/IEC JTC1/SC29/WG11, JCTVC-F274, 6th Meeting: Torino, 14-22 July 2011. FELIX HENRY AND STEPHANE PATEUX, Wavefront Parallel Processing, Joint Co *

Similar Documents

Publication Publication Date Title
AU2021290315B2 (en) Coding concept allowing parallel processing, transport demultiplexer and video bitstream
RU2808541C1 (en) Encoding principle that makes parallel processing possible, transport demultiplexer and video bit stream
RU2773795C2 (en) Encoding principle that makes parallel processing possible, transport demultiplexer and video bitstream