RU2773795C2 - Encoding principle that makes parallel processing possible, transport demultiplexer and video bitstream - Google Patents

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

Info

Publication number
RU2773795C2
RU2773795C2 RU2019102609A RU2019102609A RU2773795C2 RU 2773795 C2 RU2773795 C2 RU 2773795C2 RU 2019102609 A RU2019102609 A RU 2019102609A RU 2019102609 A RU2019102609 A RU 2019102609A RU 2773795 C2 RU2773795 C2 RU 2773795C2
Authority
RU
Russia
Prior art keywords
wpp
tranches
image
tranche
sequence
Prior art date
Application number
RU2019102609A
Other languages
Russian (ru)
Other versions
RU2019102609A (en
RU2019102609A3 (en
Inventor
Томас ШИРЛЬ
Валери ГЕОРГЕ
Карстен ГРЮНЕБЕРГ
Хайнер КИРХХОФФЕР
Анастасия ХЕНКЕЛЬ
Детлеф МАРПЕ
Original Assignee
ДжиИ Видео Компрешн, ЭлЭлСи
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by ДжиИ Видео Компрешн, ЭлЭлСи filed Critical ДжиИ Видео Компрешн, ЭлЭлСи
Publication of RU2019102609A publication Critical patent/RU2019102609A/en
Publication of RU2019102609A3 publication Critical patent/RU2019102609A3/ru
Application granted granted Critical
Publication of RU2773795C2 publication Critical patent/RU2773795C2/en

Links

Images

Abstract

FIELD: data encoding and decoding.
SUBSTANCE: invention relates to a decoder, encoder, methods, system and data carriers for encoding/decoding payload data of a sequence of raw bytes. The encoder is configured to generate, by encoding the image, payload data of a sequence of raw bytes so that they describe said image by WPP substreams with one WPP substream per LCU line of the image, by entropy encoding the sequence of raw bytes using CABAC, passing the sequence of raw bytes to tranches into which WPP sub-streams are segmented, whereby tranche boundaries are introduced into them, and continuing to adapt the CABAC probabilities while performing entropy encoding across the tranche boundaries introduced in the WPP substreams, wherein the encoder uses the transformation of the prediction residual data to generate a raw byte sequence payload.
EFFECT: improving the efficiency of encoding/decoding data.
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, а также ожидаемым повышением разрешения видео. Многоядерные архитектуры становятся доступными в широком диапазоне современных электронных устройств. Следовательно, требуются эффективные способы, делающие возможным использование многоядерных архитектур.The parallelization of the 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 the use of multi-core architectures.

Кодирование или декодирование наибольшей единицы кодирования (LCU) происходит с растровым сканированием, посредством которого вероятности контекстно-адаптивного двоичного арифметического кодирования (CABAC) адаптируются к специфичности каждого графического изображения. Пространственные зависимости существуют между соседними LCU. Каждая LCU зависит от ее левой, верхней, верхней слева и верхней справа соседней LCU из-за разных составляющих, например, вектора движения, предсказания, внутреннего предсказания и других. Чтобы сделать возможной распараллеливание при декодировании, эти зависимости обычно должны быть прерваны или прерываются в новейших применениях.The encoding or decoding of the largest coding unit (LCU) occurs with raster scanning, whereby the 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 neighbor LCUs due to different components such as motion vector, prediction, intra prediction, and others. To enable parallelization in decoding, these dependencies usually need to be broken or 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 need to be combined with wave processing in order to enable parallelization in the decoder or encoder. From this point of view, tiles are like WPP substreams. An initial motivator for inventors to further explore the principle of entropy slices is to implement techniques that reduce coding efficiency losses and thus reduce bitstream overhead for parallelization approaches in the encoder and decoder.

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

Кодированная видеопоследовательность в 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 may be independently decoded. An encoded sequence consists of a sequence of encoded pictures. The encoded frame may be an entire frame or a single field. Each image is divided into macroblocks of a fixed size (in HEVC [5]: LCU). Several macroblocks or LCUs may be combined together into one slice. An image, therefore, is a collection of one or more slices. The purpose of this data separation is to be able to independently decode the samples in the region of the image that is represented by the slice, without using data from other slices.

Методом, который часто упоминается как «энтропийные слайсы» [3], является разделение традиционного слайса на дополнительные подслайсы. Конкретно, это означает разделение энтропийно кодированных данных единственного слайса. Размещение энтропийных слайсов в слайсе может быть разнообразным. Самым простейшим является использование каждой строки LCU/макроблоков в кадре в качестве одного энтропийного слайса. Альтернативно, столбцы или отдельные области могут использоваться в качестве энтропийных слайсов, которые даже могут прерываться и переключаться друг с другом, например, слайс 1 на фиг. 1.A technique that is often referred to as "entropy slices" [3] is to split a traditional slice into additional subslices. Specifically, this means splitting the entropy encoded data of a single slice. The placement of entropy slices in a slice can be varied. The simplest is to use each row of LCUs/macroblocks in a 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. one.

Очевидной целью принципа энтропийных слайсов является предоставление возможности использования параллельных центрального процессора/графического процессора (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 restored without reference to another slice's data. Although some advantages can be achieved with the entropy slice approach, some problems arise as a result.

Принцип энтропийных слайсов был дополнительно расширен до волновой обработки подпотоков (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 defined. Which does have an improved entropy state initialization per row compared to entropy slices.

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

Поэтому тайл в значительной степени позволяет выполнять работу кодеров, а также декодеров тайла полностью или частично независимо параллельным образом, в последнем случае, например, до этапа фильтрации кодека HEVC.Therefore, the tile largely allows the work of the encoders as well as the decoders of the tile to be performed in whole or in part independently in parallel, in the latter case, for example, before the filtering step of the HEVC codec.

Чтобы выполнить полное использование методов распараллеливания в цепочке захвата, кодирования, передачи, декодирования и представления системы видеосвязи, или подобных систем, транспортировка и доступ к данным между участниками связи представляет собой важный и требующий много времени этап для внесения полной сквозной задержки. Это является проблемой в особенности при использовании методов распараллеливания, таких как тайлы, подпотоки или энтропийные слайсы.In order to make full use of the parallelization techniques in the chain of capturing, encoding, transmitting, decoding and presenting a video communication system, or similar systems, transporting and accessing data between communication participants is an important and time-consuming step for introducing full end-to-end delay. This is a problem especially when using parallelization methods such as tiles, substreams, or entropy slices.

Подходы к передаче данных подпотоков WPP подразумевает, что кодированные данные разделов, если они обработаны, не имеют локальности данных, т.е. единственному потоку, декодирующему единицу доступа, необходимо перескакивать через потенциально большие участки памяти, чтобы выполнить доступ к данным следующей строки подпотока WPP. Многопоточной системе декодирования необходимо ожидать передачу некоторых данных, т.е. подпотоков WPP, чтобы работать полностью параллельным образом, так чтобы использовать волновую обработку.Substream Data Transfer Approaches WPP assumes that the encoded partition data, if processed, has no data locality, i.e. a single thread that decodes an access unit needs to jump over potentially large chunks of memory to access the data of the next row of the WPP substream. A multithreaded decoding system needs to wait for the transmission of some data, i.e. WPP substreams to run in a completely parallel manner so as to use wave processing.

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

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

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

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

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

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

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

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

Согласно другому аспекту, который является объединяемым с первым аспектом, единицы NAL маркера подпотока используются в последовательности единиц NAL битового потока видео, чтобы предоставить возможность транспортному демультиплексору назначать данные слайсов в единицах NAL соответствующим подпотокам или тайлам, чтобы иметь возможность параллельно подавать соответствующие подпотоки или тайлы на многопоточный декодер.According to another aspect that is merged 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 respective substreams or tiles to be able to supply respective substreams or tiles in parallel to multithreaded decoder.

Полезные реализации является предметом зависимых пунктов формулы изобретения. Кроме того, предпочтительные варианты осуществления настоящего изобретения объясняются более подробно ниже в отношении фигур, на которыхUseful implementations are the subject of the dependent claims. In addition, the 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 entropy slice connections;

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

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

фиг. 6 изображает таблицу псевдокода, иллюстрирующего синтаксис единицы NAL;fig. 6 is a table of pseudocode 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 depicts a table of pseudo-code illustrating the low latency slice layer raw byte sequence (RBSP) payload syntax;

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

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

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

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

фиг. 13 изображает схему, иллюстрирующую другой пример инкапсуляции упакованных многочисленных ES данных энтропийного слайса;fig. 13 is a diagram illustrating another example of encapsulation of entropy slice packed multiple ES 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 the 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, на малые транши посредством подхода перемежения с малой задержкой.In order to reduce the time during which a parallel decoder thread can start and finish processing its frame data, the embodiments below use segmenting data structured for parallelization, such as data of one or more tiles or data of one or more WPP substreams, into small tranches by low latency interleaving approach.

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

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

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

Изображение может кодироваться одним энтропийным слайсом на строку(-и) наибольшей единицы кодирования (LCU), или используя подпоток WPP, или даже комбинацию в виде одного подпотока WPP на строку, которая может дополнительно содержаться в отдельном энтропийном слайсе. Такие структуры данных необходимы для использования метода волновой обработки на стороне декодера. Или тайлы могут использоваться, чтобы сделать возможной параллельную обработку.The picture may be encoded with one entropy slice per line(s) of the largest coding unit (LCU), or using a WPP substream, or even a combination of one WPP substream per line, which may additionally 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 stream or tile data may 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 may be sent for transmission and placement in packets of MTU size.

Чтобы сделать возможной обработку на стороне декодера перед или после каждого транша, может вставляться код маркера. Соответствующим кодом маркера для HEVC может быть «0x00 00 02», который будет даже пропускать предотвращение эмуляции кода начала. После приема пакета, включающего в себя многочисленные транши, приемник или декодер может выполнять синтаксический анализ фактически содержащегося битового потока во время процесса предотвращения эмуляции кода начала, чтобы не требовался дополнительный этап синтаксического анализа. Может быть, например, два режима для идентификации транша. Может быть всегда циклическое размещение траншей, начиная с транша с tranche_id (идентификатор транша), равного 1, до транша с tranche_id, равным n. Это может безопасно сигнализировать данные для второго общего способа. Альтернативным способом может быть конкретный заголовок, следующий за маркером, указывающий tranche_id, например, в виде 8-битового значения.To enable processing on the decoder side 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 preventing start code emulation. 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 identifying a tranche. There can always be a cyclic placement of tranches, starting with a tranche with tranche_id (tranche identifier) equal to 1, up to a tranche with tranche_id equal to n. It can safely signal data for the second general way. An alternative way 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 или тайла.The interleaved tranche data may be deinterleaved based on knowledge of the number of tranches per packet, which may be a packet of NAL units. Therefore, there may be an optional mapping of WPP substreams or tiles to tranches. This mapping may be implicitly inferred from the number of tiles/number of WPP substreams, or may be signaled directly in the Sequence Parameter Set (SPS). The mapping is important to the deinterleaving process such that the data of some WPP substreams or tiles can be identified and provided to the waveform or parallel decoder stream responsible for decoding the given WPP substream or tile.

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

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

Поэтому, заголовок может размещаться впереди пакета, указывающий присутствие транша посредством флага, включающего в себя информацию о размере в байтах на присутствующий транш. Так как транспортный уровень не связан с процессом декодирования, может быть, что нет необходимости в интегрировании кода маркера, так как дополнительная информация транспортного уровня должна удаляться любым образом перед передачей этих данных на декодер. Транспортный уровень затем также переупорядочивает данные для доставки битового потока декодеру.Therefore, a header may be placed ahead of the packet indicating the presence of a tranche by way of a flag including information about the size in bytes per tranche present. Since the transport layer is not involved in 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 may be used in an additional multiplexing layer. This multiplexing level may also be part of the codec and may be introduced before the raw byte sequence (RBSP) data is actually accessed in the decoder. One header scheme can be found in FIG. 3. But there may also be a heading just before each tranche indicating the length as well as its indicator. Where there is still a need to map the indicator to bitstream structures has already been indicated above.

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

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

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

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

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

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

Другой интересный способ использует коды завершения или кодов маркера в конце набора траншей в пакете, таком как NAL или пакет слайсов. В данном случае, возможны сегменты переменной длины, таким образом, требуется полный синтаксический анализ битового потока. Чтобы ограничить в данном случае обращение к памяти, этот дополнительный процесс синтаксического анализа для мультиплексирования может объединяться с синтаксическим анализом предотвращения эмуляции кода начала, требуемого в качестве первого этапа перед обращением к данным RBSP, содержащимся в единице NAL. Такая схема маркера показана на фиг. 5.Another interesting method uses completion codes or token codes at the end of a set of tranches in a package such as a NAL or a slice package. In this case, variable length segments are possible, thus a full bitstream parsing is required. To limit memory access in this case, this additional parsing process for multiplexing can 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 scheme 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 an actual slice, an entropy slice, or the like, into lower level data structures it contains, such as WPP substreams or tiles, while interleaving the data into tranches. These tranches, each belonging to a lower level structure, such as a particular WPP substream or tile, are interleaved in a low latency packet, which may be a particular NAL unit, a NAL unit with additional signaling with a low latency interleaving flag, or even a slice or lightweight header. slice indicating a low-delay interleaving approach by a slice flag or type as shown for "NAL unit #1" in the figure, thus the decoder is informed to apply the reordering function for a "single" stream decoder that uses sequential tranche processing in the source/ deinterleaved order in the decoder. In order to partition the actual slice data as interleaved tranches into multiple packets to gain 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 actual slice data into multiple NAL units can also be directly applied by the coding layer, thus there is a need for signaling this type of NAL unit containing slice continuation as shown in FIG. 5 for "NAL unit #2". To detect the 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 a slice or NAL 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 applied via additional information in the header, for example, a lightweight slice header such as the first macroblocks (MBs) of the contained tranches, or just the specific tranche #1. With information such as offsets for WPP subflows or the actual tranche size, one can also use these size values (offset values for a specific WPP subflow or tile) to perform a health check after receiving a NAL unit with a termination 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 T# tranche of each WPP substream or image tile or subset of WPP substreams or image tiles (because, for example, some WPP substream or tile is already was completely transmitted by the previous packets) arranged in # order given among the WPP substreams or tiles, with each packet containing a header 302 containing information identifying the positions and/or durations of the T# tranches packed in the corresponding packet 300, or markers 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 the information contained in the headers 302 or markers 304 to refer to the tranches in the packets. Packets 300a that contain the first - in accordance with the order determined among WPP substreams or tiles - tranches of WPP substreams or image tiles may contain a low latency flag indicator 306, and packets 300b containing the second or subsequent - in accordance with the order determined among WPP substreams or tiles - T# tiles of WPP substreams or image tiles may contain a continue indicator 308 . Packets 300 may be NAL units or slices.

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

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

Ниже показан подход, который может быть объединен с синтаксическим анализом для предотвращения эмуляции кода начала, чтобы уменьшить количество дополнительных этапов процесса. Поэтому, перемежение применяется на уровне RBSP кодека HEVC.The following shows an approach that can be combined with parsing to prevent start code emulation to reduce the number of additional process steps. Therefore, interleaving is applied at the RBSP layer 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 NAL unit payload section for low latency data access. The end of a tranche may be indicated by the code 0x000002 and may be followed by the 8-bit tranche_id. Tranches can be interleaved in a cyclic manner so that the tranche end code is not followed by a tranche_id that is implicitly derived. 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 syntax of a NAL unit may allow for two modes for low latency interleaving as indicated by the "low delay encapsulation_flag" which represents the cyclic placement of tranches, as well as specifying the tranche by an additional identifier "tranche_id" following the code the marker by means of a flag such as "low delay cyclic_flag" in the NAL unit header. These two flags may also be present in sequence parameter sets, or even APS. Looping tranches may still require knowledge of the number of tranches during parsing, such as provided in the SPS as "num_low_delay_tranches" (number of low delay tranches).

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

Figure 00000001
Figure 00000001

Также может быть явная сигнализация в 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 cyclically placed tranches, as indicated by "low-delay_tranche_length_minus1" (low delay tranche minus 1). The latter was not used in the NAL unit syntax example, but is straightforward, implying the packetization shown in FIG. 4. In the syntax of the NAL unit in FIG. 6 was the basic bundling shown in FIG. 5 and described above.

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

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

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

Синтаксис RBSP уровня слайса с малой задержкой для переупорядочения/деперемежения на уровне слайса может быть разработан следующим образом. В частности, синтаксис в данном случае должен иметь почти такое же поведение, что и на уровне единиц NAL, но переупорядочение должно определяться на уровне слайса. Фиг. 8 изображает синтаксис RBSP уровня слайса с малой задержкой.The 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 defined at the slice level. Fig. 8 depicts a low latency slice level RBSP syntax.

В случае использования заголовка слайса для пакетирования перемеженных траншей может быть требование к указанию на уровне кодека, если принимается новый слайс, не сбрасывать состояние CABAC, так как энтропийное кодирование траншей, например, подпотока WPP, не должно прерываться. Не сбрасывать CABAC в слайсе указывается как «no_cabac_reset_flag» в заголовке слайса. Показанный заголовок слайса подходит для слайсов с малой задержкой, таким образом, также должны присутствовать признаки entropy_slice (энтропийный слайс). Соответствующий синтаксис заголовка слайса показан на фиг. 9.In the case of using a slice header to packetize interleaved tranches, there may be a requirement to indicate at the codec level, if a new slice is received, not to reset the CABAC state, since the entropy coding of tranches, for example, a WPP substream, should not be interrupted. Do not reset CABAC in a slice is specified as "no_cabac_reset_flag" in the slice header. The slice header shown is appropriate for low latency slices, so entropy_slice features 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 the data sent to the decoder block(s) based on the fact if the number of substreams/tiles/tranches can be processed substream or tile, or part of a bitstream that has a similar function, i.e. it enables parallel decoding or incremental decoder update) at the coding level independently of each other. One possibility is to start sending tranches in parallel to several decoding blocks with minimal delay. A bitstream consists of a sequence of NAL units, which are the smallest units 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 a single slice or NAL units of an entropy slice.

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

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

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

- количество подпотоков/тайлов, где «1» означает, что имеется только один поток/тайл, который содержит весь кадр видео;- the 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 are the same size, or have the same buffer requirements;

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

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

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

Если количество подпотоков/тайлов>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 block of data that contains some substream/tile. These syntax elements follow the syntax of NAL units, but use a unique NAL unit type that is not used by the encoding layer (eg, 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 block of data that follows at least the data field that identifies the substream/tile.

Если количество этапов постепенного обновления декодера >1, эти элементы синтаксиса также переносят флаг, который указывает, имеет ли подпоток/тайл с внутренним кодированием (делает возможным постепенное обновление декодера).If the number of incremental decoder update steps is >1, these syntax elements also carry a flag that indicates whether the substream/tile has an intra-encoding (makes decoder incremental update possible).

Соответствующий синтаксис показан на фиг. 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: counter value starting at 0 for the first slice that belongs to an image, incremented by 1 for each subsequent slice or entropy slice that belongs to that same image.

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

Способ инкапсуляции видеопотока при транспортном мультиплексировании показан на фиг. 11, где каждый слайс или энтропийный слайс транспортируется отдельно в целочисленном количестве пакетов транспортного потока. Если размер полезных данных не точно соответствует доступным байтам в пакетах транспортного потока (TS) фиксированного размера, последний пакет TS содержит поле адаптации.A method for encapsulating a video stream in 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 TS 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 media type and payload type as specified in SDP [12]) may be contained in its own RTP session, where the RTP session is identified by network address (IP (Internet Protocol)), port ( User Datagram Protocol (UDP)), as well as the Source Identifier (SSRC). A media session, as specified in the SDP, may contain multiple RTP sessions, each containing a different type of media. But it is also possible to transport the same media stream (e.g. video) in different RTP streams, where the RTP streams may be contained in the same RTP session (similar to 1. below) or may 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 [9] [13] payload formats have a decoding order number (DON) that allows the receiver to recover the decoding order of NAL units in case they are intentionally transmitted out of decoding order for error robustness, as described in [9] [ 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 providing 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 coded tranches directly to decoding processes of different WPP substreams or tiles while the data is being received at the sink. The identification of the tranches associated with a WPP substream or tile can be derived by the slice address in the slice segment slice header and the packet transmission order as indicated by the RTP sequence number in the RTP header. In this scenario, DON is only used for backwards compatibility, i.e. for decoders not providing enhanced capability to decode tranches of WPP substreams or tiles sent out of decoding order when they arrive. Sending tranche data out of decoding order just applies to the level of WPP substreams and tiles, i.e. in the transmitted data, wherein tranches of a single WPP substream or tile are transmitted in decoding order where data of 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 the encapsulation of a single ES.

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 ESs.

Фиг. 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 ESs.

Более эффективный способ инкапсуляции в единственном ES показан на фиг. 12. В данном случае требуется максимум одно поле адаптации на изображение.A more efficient way to encapsulate 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 way to encapsulate in multiple ESs is shown in FIG. 13. In this case, the adaptation fields are omitted, instead, another slice, for example, a joint tile of the next picture, starts 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 in a figure may contain the data of a particular WPP substream or tile.

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

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

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

Фиг. 16 изображает общую конструкцию кодера согласно варианту осуществления настоящей заявки. Кодер 10 может быть реализован с возможностью работы в многопоточном режиме или нет, т.е. просто с единственным потоком. Т.е. кодер 10, например, может быть реализован с использованием многочисленных ядер CPU. Другими словами, кодер 10 может поддерживать параллельную обработку, но не должен. Принцип кодирования настоящей заявки позволяет кодерам параллельной обработки эффективно применять параллельную обработку, однако, без опасности ухудшения эффективности сжатия. Что касается возможности параллельной обработки, подобные утверждения действительны для декодера, который описан ниже в отношении фиг. 17.Fig. 16 depicts the general construction of an encoder according to an embodiment of the present application. The encoder 10 may be implemented with the ability to work in multithreaded mode or not, i. 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 need not. The coding principle of the present application allows parallel processing encoders to effectively apply parallel processing, however, without the risk of compromising compression efficiency. With regard to the possibility of parallel processing, such statements are valid for the decoder, which is described below with respect 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, ie. the image 12 is predicted in the predictor 18 and the prediction residual 20 obtained by the residual determinant 22 such as a subtractor is subjected to a transformation such as a spectral decomposition such as a discrete cosine transform (DCT) and quantized in a transformation/quantization unit 24. The quantized residue 26 thus obtained is subjected to entropy encoding in entropy encoder 28, namely context adaptive binary arithmetic encoding. The recoverable version of the remainder available to the decoder, ie. the dequantized and retransformed residual signal 30 is recovered by the retransformation and requantization module 31 and combined with the prediction signal 32 of the predictor 18 via the combiner 33, thus resulting in the reconstruction 34 of the image 12. However, the encoder 10 operates on a block basis. Therefore, the reconstructed signal 34 has discontinuities at block boundaries, and hence filter 36 can be applied to the reconstructed signal 34 to obtain a reference picture 38 from which predictor 18 predicts sequentially encoded pictures. As shown by 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. Может быть режим временного предсказания, согласно которому блок предсказывается на основе ранее кодированных изображений, режим пространственного предсказания, согласно которому блок предсказывается на основе ранее кодированных блоков этого же изображения, режимы межуровневого предсказания, согласно которым блок изображения, изображающего сцену на более высоком уровне, таком как при более высоком пространственном разрешении или с другой точки обзора, предсказывается на основе соответствующего изображения, изображающего эту сцену на более низком уровне, таком как при более низком пространственном разрешении или с другой точки обзора.The predictor 18 may select from among different prediction modes to predict some blocks of the image 12. There may be a temporal prediction mode in which a block is predicted based on previously coded pictures, a spatial prediction mode in which a block is predicted based on previously coded blocks of the same picture, inter-layer prediction modes in which 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 another vantage point.

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

Элементы кодера 10 на фиг. 16 соединены между собой так, как показано на фиг. 16.The elements of encoder 10 in FIG. 16 are interconnected 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 the payload of a sequence of raw bytes. The decoder in Fig. 17 is generally designated 50 and includes an entropy decoder 52, a remapper/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 residual signal 62 and encoding parameters 64 . The remapper/decanter module 54 dequantizes and reconverts the residual data 62 and sends the residual signal thus obtained to the combiner 56. The combiner 56 also receives a prediction signal 66 from the predictor 60, which in turn generates a prediction signal 66 using the coding 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 with respect 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 the output 70 of the decoder 50 may likewise be determined from the unfiltered version of the combining signal 68 or some filtered version thereof.

Согласно принципу тайлов изображение 12 подразделяется на тайлы, и по меньшей мере предсказания блоков в этих тайлах ограничены на использование, как основы для пространственного предсказания, только данных, относящихся к этому же тайлу. Посредством этой меры по меньшей мере предсказание может выполняться для каждого тайла индивидуально и параллельно. Только для целей иллюстрации фиг. 16 иллюстрирует изображение 12, разделенное на девять тайлов. Подразделение каждого тайла на девять блоков, как показано на фиг. 16, также служит только в качестве примера. Кроме того, ради завершенности, отмечается, что способ кодирования тайлов отдельно может не ограничиваться пространственным предсказанием (внутренним предсказанием). Скорее, любое предсказание параметров кодирования соответствующего тайла по границам тайла и любая зависимость выбора контекста при энтропийном кодировании соответствующего тайла по границам соответствующего тайла также может предотвращаться, чтобы ограничиваться зависимостью только от данных одного и того же тайла. Таким образом, декодер способен выполнять только что упомянутые операции параллельно, а именно в единицах тайлов.According to the tile principle, the image 12 is subdivided into tiles, and at least the predictions of the blocks in these tiles are limited to using only data related to the same tile as the basis for spatial prediction. By this measure, at least the prediction can be performed for each tile individually and in parallel. For purposes of illustration 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. In addition, for the sake of completeness, it is noted that the tile encoding method alone may not be limited to spatial prediction (intra prediction). Rather, any prediction of the encoding parameters of the corresponding tile from the tile boundaries and any context selection dependency in entropy encoding the corresponding tile from the corresponding tile boundaries can also be prevented to be limited to being dependent only on the data of the same tile. 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 some transmission channel, the syntax elements must be entropy encoded slice-by-slice by entropy encoder 28. To this end, entropy encoder 28 scans blocks of tiles by going through blocks of the first tile first, then continuing with blocks of the next tile in tile order, and so on. Raster scan order, for example, can be used to scan blocks in tiles and tiles, respectively. The slices are then packaged into NAL units, which are the smallest units to transfer. Before entropy encoding the slice, entropy encoder 28 initializes its probabilities to CABAC, i. e. the probabilities used to arithmetic encode the syntax element of this slice. The entropy decoder 52 does the same, i. e. initializes its probabilities at the beginning of the slice. Each initialization, however, negatively affects the efficiency of entropy coding, since the probabilities continuously adapt to the actual symbol probability statistics of different contexts, and hence resetting the CABAC probabilities represents a deviation from the adapted state. As is known to those skilled in the art, entropy encoding results in optimal compression only when the probabilities match 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 an embodiment of the present application operates as shown in FIG. 18. In step 80, the decoder receives a raw byte sequence payload describing image 12 in tiles 82, in tranches of tiles. In FIG. 18, the first tile 82 in the order of 84 tiles is shown exemplarily dissected or divided into two tranches 86a and 86b, each exemplifying a subsequence of the sequence of blocks in that tile. Then, in step 82, tranches 86a and 86b are entropy decoded. However, the entropy decoding of trenches 86a and 86b continues to adapt the CABAC probabilities along the trench boundaries. Those. during tranche 86a decoding, the CABAC probabilities are continuously adapted to the actual symbol statistics, and the state at the end of tranche 86a entropy decoding is adapted at the beginning of tranche 86b entropy decoding. In step 90, the payload of the raw byte sequence thus entropy decoded is decoded to obtain image 12.

Из-за продолжения адаптации вероятности CABAC по границам 92 траншей, расположенным внутри транша 82, эти границы траншей не оказывают отрицательного влияния на эффективность энтропийного кодирования вне подразделения изображения 12 на тайлы 82. С другой стороны, все же возможна параллельная обработка тайлов. Кроме этого, возможна индивидуальная передача траншей, и, так как транши меньше завершенных тайлов 82, возможно начинать на этапе 90 декодирование каждого тайла как только первый транш соответствующего тайла будет принят и энтропийно декодирован.Because of the continued adaptation of the CABAC probability along tranche boundaries 92 located inside tranche 82, these tranche boundaries do not adversely affect entropy coding efficiency outside the subdivision of image 12 into tiles 82. On the other hand, parallel processing of tiles is still possible. In addition, tranches can be transmitted individually, and since tranches are smaller than completed tiles 82, it is possible to start 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 deals mainly with the use of tiles. As described above, tiles are the result of a spatial division of an image. Like tiles, slices also subdivide the image spatially. Slices are therefore also a means for enabling parallel encoding/decoding. Like tiles, prediction, etc. is prohibited so that the slices are individually decodable. Therefore, the description of FIG. 16-18 is also valid for the division of 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 subflows. The WPP substreams also represent the spatial division of the image 12, namely into WPP substreams. Unlike tiles and slices, WPP substreams impose no restrictions on predictions and contact selections across WPP substreams. WPP subflows traverse block lines, such as LCU lines, as shown in FIG. 4, and in order to enable parallel processing, only one CABAC entropy coding compromise is made such that, as determined among the WPP substreams (see FIG. 4) 92 and for each WPP substream 92 except for the first WPP substream, the CABAC probabilities are not completely reset, but are accepted or set equal to the CABAC probabilities occurring after the 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 picture 12, such as the left side, as shown in FIG. 4. Therefore, corresponding to some encoding delay between the WPP substream sequence, these WPP substreams 92 are decodable in parallel, so that the parts in which picture 12 is decodable in parallel, i.e. simultaneously, some kind of wave front 96 is formed which 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 these tranches 98a and 98b within the corresponding WPP substream 92, thereby eliminating problems regarding entropy coding efficiency due to the individual transmission capability of both tranches 98a and 98b, but retaining the possibility of using 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 transmitting tranches packaged into NAL units. Reference is made to FIG. 3, where tiles or sub-streams or slices of such tranches or sub-streams have been divided into tranches in an arithmetically coded area, with a header preceding the n-th tranche of each sub-stream or tile and representing information allowing localization of the trench boundaries. Another embodiment was the embodiment shown in FIG. 9. On it, the subdivision of WPP tiles or substreams into tranches was accomplished by slightly changing the slice structure: slices starting at the boundary of a WPP tile or substream, i.e. starting at the start of a WPP tile or substream have the no_cabac_reset_flag (CABAC no reset flag) set to zero, thereby causing the normal initialization/reset of CABAC probabilities. 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 to continue as described above.

Что касается деперемежения, которое происходит на этапе 80 приема, для каждого транша определяется, к какому подпотоку WPP или тайлу принадлежит соответствующий транш. Выше были описаны разные возможности, такие как, например, круговое зацикливание по некоторому количеству подпотоков WPP или тайлов текущего изображения. Альтернативно, в случае использования заголовков слайса для транспортировки траншей, заголовки слайса могут содержать указание, делающее возможным локализацию начала соответствующего слайса в текущем изображении 12.With respect to the deinterleaving that occurs at receive step 80, it is determined for each tranche which WPP substream or tile the corresponding tranche belongs to. Various possibilities have been 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 for tranche transport, the slice headers may contain an indication that makes it possible to locate 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 tranche splitting of slices, WPP substreams or tiles is performed 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 picture spatially spanned 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 a contiguous portion of the corresponding slice, WPP substream, or tile according to that decoding order. Through this, an order is determined among tranches belonging to the same slice, WPP substream or tile, namely an encoding/decoding order, and each tranche has a rank in that order. Since the division of an image into WPP substreams or tiles is signaled to the decoder, the decoder has knowledge of the division. Therefore, to associate each tranche with a corresponding WPP substream or tile, for example, it will be sufficient if each tranche has a start 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 the corresponding tranche. Even if the order among the tranches that belong to some WPP tile or substream, for example, can be restored on the transport demultiplexer or decoder using the starting positions. However, lower Open System Interconnection (OSI) transport packet header information, as described above with respect to RTP transmission, such as decoding order number, i.e. DON. The transport demultiplexer of the type just mentioned can be implemented similarly to the transport demultiplexer described above to store tranche data of the same WPP substream or tile in one slice buffer, and tranche data 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 send 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 in FIG. 11-15 to describe them again in other words. As described in these figures, slices Si 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 slices Si may be normal slices or tranche-carrying slices according to FIG. 9. Therefore, these slices only carry data concerning one WPP substream or tile of the current picture, namely the i-th WPP substream or tile, respectively. By fragmenting, NAL units 110 are transported via Transport Stream (TS) packets 114, namely their payload sections 116 . Doing so, each NAL unit 110 and corresponding slice S i is preceded by a corresponding substream marker MKR indicating i, i. a 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 over more than one ES elementary stream, or over the same elementary stream, as described in FIG. 11-13. As mentioned above, an "elementary stream" may also identify an individual 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 with respect to FIG. 14 and 15, the transport demultiplexer may comprise a multiplex buffer MB, a slice buffer SB, and a transport buffer TB. From the slice buffers SB, a multi-threaded MTD decoder extracts data, which makes it possible to decode the image in parallel in WPP substreams or tiles. The transport buffer TB is configured to collect data belonging to the TS packet of the predefined video bitstream elementary stream and send the data to the multiplex buffer MB. The transport demultiplexer is then configured to evaluate the NAL unit NAL unit headers of the NAL unit sequence packetized into TS packets at the output of the multiplex buffer MB, discard the substream marker NAL units MKR while retaining the substream marker data carried in the substream marker NAL units, and store the substream slice data or tiles in the NAL units following the substream marker NAL units whose data field identifies the same WPP substream or tile in one, i.e. in the same slice buffer SB 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 slice buffers SB. As shown in FIG. 15, the transport demux may include a demux, referred to as a TS demux (TS demux) in FIG. 15 and configured to receive the video bitstream and split the video bitstream TS packets into different elementary streams, i. e. distributing the video bitstream TS packet to different elementary streams. The demultiplexer performs this splitting 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 PADs of the TS packets of other elementary streams.

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

Хотя некоторые аспекты были описаны в контексте устройства, ясно, что эти аспекты также представляют описание соответствующего способа, где блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа также представляют описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все этапы способа могут исполняться посредством (или используя) аппаратного устройства, подобного, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления некоторый один или несколько из наиболее важных этапов способа могут исполняться таким устройством.Although some aspects have been described in the context of a device, it is clear that these aspects also represent a description of the corresponding method, where the block or device corresponds to a method step or a feature of a method step. Likewise, the aspects described in the context of a method step also provide a description of the respective block or element or feature of the respective device. Some or all of the steps of the method may be executed 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 important 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 medium or a wired medium such as the Internet.

Эти вышеупомянутые усовершенствования, таким образом, между прочим, описывают способы инкапсуляции с малой задержкой и передачи структурированных видеоданных, обеспечиваемых новым стандартом кодирования HEVC, таких как структурированные в тайлах, подпотоках волновой параллельной обработки (WPP), слайсах или энтропийных слайсах. Между прочим, были представлены методы, которые делают возможным транспортировку с малой задержкой в распараллеленной среде кодера-передатчика-приемника-декодера посредством перемеженной транспортировки энтропийных слайсов/слайсов/тайлов/подпотоков. Чтобы решить проблемы узкого места, кратко изложенные в вводной части описания изобретения, и минимизировать задержку передачи и время декодирования, т.е. сквозную задержку, был представлен, между прочим, метод для схемы перемеженных энтропийных слайсов для параллельной передачи и обработки.These aforementioned enhancements thus, inter alia, describe methods for low latency encapsulation and transmission of structured video data provided by the new HEVC coding 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 by interleaved transport of entropy slices/slices/tiles/substreams. In order to solve the bottleneck problems summarized in the introductory part of the description of the invention, and to minimize the transmission delay and decoding time, i.e. end-to-end delay, inter alia, a method for an interleaved entropy slice scheme for parallel transmission and processing has been introduced.

В зависимости от некоторых требований к реализации варианты осуществления изобретения могут быть реализованы аппаратными или программными средствами. Реализация может выполняться с использованием цифровой запоминающей среды, например, дискеты, цифрового многофункционального диска (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. The implementation may be performed using a digital storage medium such as floppy disk, digital multifunction disc (DVD), Blu-ray disc, compact disc (CD), read only memory (ROM), programmable ROM (PROM), 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 may be computer-readable.

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

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

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

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

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

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

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

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

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

В одном аспекте настоящего осуществления обеспечен декодер, выполненный с возможностью приема полезных данных последовательности необработанных байтов, описывающих изображение слайсами, подпотоками WPP или тайлами и кодированных с использованием CABAC, от кодера в траншах слайсов, подпотоков WPP или тайлов; энтропийного декодирования траншей с продолжающейся адаптацией вероятностей CABAC через границы траншей; и декодирования полезных данных последовательности необработанных байтов для получения изображения.In one aspect of the present implementation, a decoder is provided, configured to receive payload data 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 trench decoding with ongoing adaptation of CABAC probabilities across trench boundaries; and decoding the raw byte sequence payload to obtain an image.

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

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

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

В упомянутом декодере транши упаковываются с использованием заголовков слайса, и декодер выполнен с возможностью, при приеме траншей, реагирования, после приема некоторого нового слайса, на флаг в заголовке слайса этого нового слайса, slice_type этого нового слайса или на тип единицы NAL собственно единицы NAL, содержащей этот новый слайс, чтобы либо прерывать адаптацию вероятностей CABAC посредством сброса вероятностей CABAC, либо продолжать адаптацию вероятностей CABAC. In said decoder, tranches are packed using slice headers, and the decoder is configured, upon 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 type of the NAL unit of the NAL unit itself, 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.

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

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

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

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

В упомянутом декодере пакеты представляют собой единицы NAL или слайсы. In 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 an image by WPP sub-streams or tiles; a transport buffer configured to collect data belonging to a TS packet of a certain predefined video bitstream elementary stream and direct the 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 into TS packets at the output of the multiplex buffer, discard the substream markers inserted into the sequence of NAL units, while maintaining the substream marker data carried in these substream markers , and storing the slice data of the substreams or tiles in the NAL units following the substream markers whose data field identifies the same WPP substream or tile in the same slice buffer and the slice data of the WPP substreams or tiles in the NAL units following the substream markers, the data field which identifies different WPP substreams, or tiles, in different slice buffers.

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

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

В другом аспекте настоящего осуществления обеспечен транспортный демультиплексор, выполненный с возможностью приема битового потока видео, содержащего полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш содержит информацию, идентифицирующую для каждого транша то, к какому подпотоку WPP или тайлу принадлежит соответствующий транш, и ассоциирования траншей со слайсами, подпотоками WPP или тайлами, используя упомянутую информацию.In another aspect of the present implementation, a transport demultiplexer is provided, configured to receive 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 split into tranches of slices, WPP substreams, or tiles with continued adaptation of CABAC probabilities across tranche boundaries, with each tranche containing information identifying for each tranche which WPP substream or tile the corresponding tranche belongs to, and associating 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 picture from which the corresponding tranche continuously spans some portion of the slice, WPP substream, or tile to which the corresponding tranche belongs.

Упомянутый транспортный демультиплексор выполнен с возможностью сортировки, для каждого слайса, подпотока WPP или тайла, их траншей, используя номер порядка декодирования в заголовках пакетов собственно пакетов, в которые эти транши упакованы.Said transport demultiplexer is configured to sort, for each slice, WPP substream or tile, their 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 according to any one of claims 11-13 and a multi-threaded decoder, wherein the multi-threaded decoder is implemented according to claim 5.

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

Упомянутый кодер выполнен с возможностью формирования последовательности необработанных байтов так, чтобы транши соответствовали максимальному размеру единицы передачи. Said encoder is configured to generate a sequence of raw bytes so that the tranches correspond to the 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 NAL unit headers, wherein the sequence of NAL units has substream markers inserted therein, wherein the NAL units carrying slice data of some one of the streams or tiles follow the substream markers. , whose data field identifies said single substream or tile, and slice data of different substreams or tiles follow different substream markers whose data field 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 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 split into tranches of slices, WPP substreams, or tiles with continued adaptation of CABAC probabilities through tranche boundaries, with each tranche including an explicit indication of its rank among the tranches into which the slice, WPP substream, or tile to which the corresponding tranche belongs is sequentially divided.

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

В упомянутом битовом потоке видео пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.In said video bitstream, packets containing the first, according to the order given among WPP substreams or tiles, tranches of WPP substreams or image tiles, contain a low delay flag indicator, and packets containing the second or subsequent, according to the order given 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, a decision method is provided, comprising receiving payload data 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 trenches with ongoing adaptation of CABAC probabilities across trench boundaries; and decoding the payload of the raw byte sequence 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 multithreaded 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 of the video bitstream, and directing this data to the 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 substream marker NAL units while maintaining the substream marker data carried in these substream token NAL units, and storing the substream slice or tile data in the NAL units following the substream token NAL units whose data field identifies the same WPP substream or tile in the same slice buffer owls, and slice data of WPP substreams or tiles in NAL units following the NAL units of substream tokens whose data field identifies different WPP substreams 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 split into tranches of slices, WPP substreams, or tiles. with continued adaptation of CABAC probabilities across tranche boundaries, with each tranche containing information identifying for each tranche which WPP substream or tile the corresponding tranche belongs to, and associating tranches with slices, WPP substreams or tiles using said information.

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

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

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

Figure 00000002
Figure 00000002

Claims (35)

1. Декодер, выполненный с возможностью 1. A decoder capable of приема полезных данных последовательности необработанных байтов, описывающих изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения и кодированных с использованием CABAC, от кодера в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей; receiving a payload of a sequence of raw bytes describing an image by WPP substreams with one WPP substream per image LCU row and encoded using CABAC from an encoder in tranches into which the WPP substreams are segmented, whereby tranche boundaries are introduced therein; энтропийного декодирования траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP; иentropy tranche decoding with continued adaptation of CABAC probabilities across tranche boundaries introduced in WPP substreams; and декодирования полезных данных последовательности необработанных байтов для получения изображения, используя повторное преобразование остаточных данных предсказания.decoding the payload data of the raw byte sequence to obtain an image using retransformation of the prediction residual data. 2. Декодер по любому из предшествующих пунктов, в котором транши упаковываются с использованием заголовков слайсов, и декодер выполнен с возможностью, при приеме траншей, реагирования, после приема некоторого нового слайса, на флаг в заголовке слайса этого нового слайса, тип слайса (slice_type) этого нового слайса или тип единицы NAL собственно единицы NAL, содержащей этот новый слайс, чтобы либо прервать адаптацию вероятностей CABAC посредством сброса вероятностей CABAC, либо продолжить адаптацию вероятностей CABAC. 2. The decoder according to any one of the preceding claims, wherein the tranches are packed using slice headers, and the decoder is configured, upon receiving tranches, to respond, after receiving some new slice, to a flag in the slice header of that new slice, slice type (slice_type) of this new slice, or the type of the NAL unit of the NAL unit itself containing this new slice, to either interrupt the adaptation of the CABAC probabilities by resetting the CABAC probabilities, or to continue the adaptation of the CABAC probabilities. 3. Декодер по п. 1 или 2, в котором декодер выполнен с возможностью, при приеме упомянутых траншей, деперемежения этих траншей посредством идентификации для каждого транша, к какому подпотоку WPP этот соответствующий транш принадлежит. 3. A decoder according to claim 1 or 2, wherein the decoder is configured, upon receiving said tranches, to deinterleave those tranches by identifying, for each tranche, which WPP substream the corresponding tranche belongs to. 4. Декодер по п. 1 или 2, в котором транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP изображения или поднабора подпотоков WPP изображения, расположенных в порядке, заданном среди этих подпотоков WPP, причем каждый пакет содержит заголовок, содержащий выявление позиций или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга, при этом декодер выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках или маркерах с тем, чтобы осуществлять доступ к траншам в упомянутых пакетах. 4. The decoder according to claim 1 or 2, wherein the tranches are packed into packets such that each packet contains one tranche from each substream of a WPP image or a subset of substreams of a WPP image arranged in the order specified among these WPP substreams, each packet containing a header containing the identification of positions or lengths of tranches packed in the corresponding packet, or markers separating tranches in the corresponding packet from each other, while the decoder is configured, when receiving payload data of a sequence of raw bytes, to use the information contained in headers or markers with in order to access the tranches in the said packages. 5. Декодер по п. 4, в котором пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.5. The decoder according to claim 4, wherein the packets containing the first, in accordance with the order specified among the WPP substreams or tiles, tranches of the WPP substreams or image tiles, contain a low delay flag indicator, and the packets containing the second or subsequent, in accordance with with the order given among WPP substreams or tiles, tranches of WPP substreams or image tiles contain a continuation indicator. 6. Декодер по п. 4, в котором пакеты представляют собой единицы NAL или слайсы. 6. The decoder of claim 4, wherein the packets are NAL units or slices. 7. Декодер, выполненный с возможностью7. Decoder capable of приема полезных данных последовательности необработанных байтов, описывающих изображение подпотоками WPP и кодированных с использованием CABAC, от кодера в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей; receiving a payload of a sequence of raw bytes describing an image by the WPP substreams and encoded using CABAC from an encoder in tranches into which the WPP substreams are segmented, whereby tranche boundaries are introduced therein; энтропийного декодирования траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP, путем принятия, в начале энтропийного декодирования одного транша подпотока WPP, вероятностей CABAC в конце энтропийного декодирования другого транша подпотока WPP; иentropy decoding tranches to continue adapting CABAC probabilities across tranche boundaries inserted in WPP substreams by accepting, at the beginning of entropy decoding of one tranche of the WPP substream, the CABAC probabilities at the end of entropy decoding of another tranche of the WPP substream; and декодирования полезных данных последовательности необработанных байтов для получения изображения, используя повторное преобразование остаточных данных предсказания.decoding the payload data of the raw byte sequence to obtain an image using retransformation of the prediction residual data. 8. Декодер по п. 1 или 7, в котором в полезных данных последовательности необработанных байтов закодирована сцена по уровням, соответствующим различным точкам обзора.8. A decoder according to claim 1 or 7, wherein the raw byte sequence payload encodes a scene in layers corresponding to different viewpoints. 9. Декодер по п. 1 или 7, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.9. The decoder according to claim 1 or 7, wherein the raw byte sequence payload has a layer-encoded image. 10. Кодер, выполненный с возможностью 10. An encoder capable of формирования, посредством кодирования изображения, полезных данных последовательности необработанных байтов так, чтобы они описывали упомянутое изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения, с помощью энтропийного кодирования последовательности необработанных байтов, используя CABAC, передачи последовательности необработанных байтов в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, и продолжения адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей, введенные в подпотоки WPP, generating, by image encoding, payload data of a sequence of raw bytes so that they describe said image by WPP substreams with one WPP substream per LCU row of the image, by entropy coding of the sequence of raw bytes using CABAC, transmitting the sequence of raw bytes in tranches to which segmenting the WPP substreams, whereby tranche boundaries are introduced into them, and continuing to adapt the CABAC probabilities while performing entropy coding across the tranche boundaries introduced into the WPP substreams, при этом кодер использует преобразование остаточных данных предсказания для формирования полезных данных последовательности необработанных байтов.wherein the encoder uses the transformation of the prediction residual data to generate the payload data of the raw byte sequence. 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 raw byte sequence payload encodes a scene in layers corresponding to different viewpoints. 13. Кодер по п. 10, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.13. The encoder of claim 10, wherein the raw byte sequence payload has a layer-encoded image. 14. Цифровой носитель данных, хранящий битовый поток видео, содержащий полезные данные последовательности необработанных байтов, описывающие изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения и кодированные с использованием CABAC, причем битовый поток видео разбивается на транши подпотоков WPP, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, с продолжающейся адаптацией вероятностей CABAC через границы траншей, введенные в подпотоки WPP, при этом каждый транш включает в себя явное указание своего ранга среди траншей, на которые последовательно разбит подпоток WPP, к которому этот соответствующий транш принадлежит, при этом в полезные данные последовательности необработанных байтов изображение закодировано с использованием преобразования остаточных данных предсказания.14. A digital storage medium storing a video bitstream containing payload data of a sequence of raw bytes describing an image in WPP substreams with one WPP substream per image LCU line and encoded using CABAC, wherein the video bitstream is split into tranches of WPP substreams into which the WPP subflows, whereby tranche boundaries are introduced into them, with continued adaptation of CABAC probabilities across the tranche boundaries introduced into WPP subflows, each tranche including an explicit indication of its rank among the tranches into which the WPP substream to which this corresponding the tranche belongs, and the image is encoded into the payload of the sequence of raw bytes using the transformation of the prediction residual data. 15. Цифровой носитель данных по п. 14, в котором транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов, причем каждый пакет содержит заголовок, содержащий выявление позиций или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга.15. The digital storage medium of claim 14, wherein the tranches are packaged in packets such that each packet contains one tranche from each WPP substream or image tile or subset of WPP substreams or image tiles arranged in the order specified among those WPP substreams or tiles, and each package contains a header containing the identification of positions or lengths of tranches packed in the corresponding package, or markers separating the tranches in the corresponding package from each other. 16. Цифровой носитель данных по п. 14 или 15, в котором пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.16. The digital storage medium according to claim 14 or 15, in which the packets containing the first, in accordance with the order specified among the WPP substreams or tiles, tranches of the WPP substreams or image tiles, contain a low delay flag indicator, and the packets containing the second or subsequent, in accordance with the order given among the WPP substreams or tiles, tranches of the WPP substreams or image tiles, contain a continuation indicator. 17. Цифровой носитель данных по п. 15, в котором пакеты представляют собой единицы NAL или слайсы.17. The digital storage medium of claim 15, wherein the packets are NAL units or slices. 18. Цифровой носитель данных по п. 14, в котором в полезных данных последовательности необработанных байтов сцена закодирована по уровням, соответствующим различным точкам обзора.18. The digital storage medium of claim 14, wherein in the payload, the raw byte sequences encode the scene in layers corresponding to different viewpoints. 19. Цифровой носитель данных по п. 14, в котором полезные данные последовательности необработанных байтов имеют закодированное по уровням изображение.19. The digital storage medium of claim 14, wherein the raw byte sequence payload has a layer-encoded image. 20. Способ для декодирования, содержащий20. A method for decoding, comprising прием полезных данных последовательности необработанных байтов, описывающих изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения и кодированных с использованием CABAC, от кодера в траншах подпотоков WPP, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей; receiving a payload of a sequence of raw bytes describing an image by WPP substreams with one WPP substream per image LCU row and encoded using CABAC from an encoder in the WPP substream tranches into which the WPP substreams are segmented, whereby tranche boundaries are introduced therein; энтропийное декодирование упомянутых траншей с продолжением адаптации вероятностей CABAC через границы траншей, введенные в подпотоки WPP; иentropy decoding said tranches with continued adaptation of CABAC probabilities across tranche boundaries introduced in WPP substreams; and декодирование полезных данных последовательности необработанных байтов для получения изображения, используя повторное преобразование остаточных данных предсказания.decoding the payload of the raw byte sequence to obtain an image using retransformation of the prediction residual data. 21. Способ для кодирования, содержащий21. A method for encoding, comprising формирование, посредством кодирования изображения, полезных данных последовательности необработанных байтов так, чтобы они описывали упомянутое изображение подпотоками WPP с одним подпотоком WPP на LCU-строку изображения, с помощью энтропийного кодирования последовательности необработанных байтов, используя CABAC, передачу последовательности необработанных байтов в траншах, на которые сегментированы подпотоки WPP, посредством чего в них введены границы траншей, и продолжение адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей, введенные в подпотоки WPP, при этом полезные данные последовательности необработанных байтов формируют с использованием преобразования остаточных данных предсказания.generating, by image encoding, payload data of a sequence of raw bytes so that they describe said image by WPP substreams with one WPP substream per LCU row of the image, by entropy coding of the sequence of raw bytes using CABAC, transmission of the sequence of raw bytes in tranches to which segmenting the WPP substreams, whereby tranche boundaries are introduced into them, and continuing to adapt the CABAC probabilities while performing entropy coding across the tranche boundaries inserted into the WPP substreams, while the raw byte sequence payload is generated using prediction residual data transformation. 22. Цифровой носитель данных, хранящий компьютерную программу, имеющую программный код для выполнения, при исполнении на компьютере, способа по любому из пп. 20, 21.22. A digital storage medium that stores a computer program having a program code for performing, when executed on a computer, the method according to any one of paragraphs. 20, 21. 23. Программируемая компьютерная система для кодирования-декодирования полезных данных последовательности необработанных байтов, при этом декодирование выполняется декодером по п. 1, а кодирование выполняется кодером по п. 10.23. A programmable computer system for encoding/decoding payload data of a sequence of raw bytes, wherein the decoding is performed by the decoder of claim 1 and the encoding is performed by the encoder of claim 10.
RU2019102609A 2012-01-20 2019-01-30 Encoding principle that makes parallel processing possible, transport demultiplexer and video bitstream RU2773795C2 (en)

Applications Claiming Priority (2)

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

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
RU2017103637A Division RU2679551C2 (en) 2012-01-20 2013-01-21 Coding concept allowing parallel processing, transport demultiplexer and video bitstream

Related Child Applications (1)

Application Number Title Priority Date Filing Date
RU2022115044A Division RU2808541C1 (en) 2012-01-20 2022-06-03 Encoding principle that makes parallel processing possible, transport demultiplexer and video bit stream

Publications (3)

Publication Number Publication Date
RU2019102609A RU2019102609A (en) 2020-07-30
RU2019102609A3 RU2019102609A3 (en) 2021-11-23
RU2773795C2 true RU2773795C2 (en) 2022-06-09

Family

ID=

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2335857C2 (en) * 2004-06-10 2008-10-10 Сони Компьютер Энтертейнмент Инк. Encoding device, encoding method, decoding device, decoding method, software, software media, data media, data structure, playback device
RU2374786C1 (en) * 2006-01-05 2009-11-27 Ниппон Телеграф Энд Телефон Корпорейшн Method of video coding and method of video decoding, device, program and data carriers for storage of programs
US20110026604A1 (en) * 2008-03-28 2011-02-03 Jie Zhao Methods, devices and systems for parallel video encoding and decoding
GB201119180D0 (en) * 2011-11-07 2011-12-21 Sony Corp Data encoding and decoding
WO2011160010A1 (en) * 2010-06-17 2011-12-22 Qualcomm Incorporated Joint coding of partition information in video coding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2335857C2 (en) * 2004-06-10 2008-10-10 Сони Компьютер Энтертейнмент Инк. Encoding device, encoding method, decoding device, decoding method, software, software media, data media, data structure, playback device
RU2374786C1 (en) * 2006-01-05 2009-11-27 Ниппон Телеграф Энд Телефон Корпорейшн Method of video coding and method of video decoding, device, program and data carriers for storage of programs
US20110026604A1 (en) * 2008-03-28 2011-02-03 Jie Zhao Methods, devices and systems for parallel video encoding and decoding
WO2011160010A1 (en) * 2010-06-17 2011-12-22 Qualcomm Incorporated Joint coding of partition information in video coding
GB201119180D0 (en) * 2011-11-07 2011-12-21 Sony Corp Data encoding and decoding

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Gordon C et al., "Wavefront Parallel Processing for HEVC Encoding and Decoding", 6 JCT-VC MEETING; MPEG MEETING, no. JCTVC-F274, 2011. *

Similar Documents

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