RU2784930C1 - Low latency image encoding - Google Patents
Low latency image encoding Download PDFInfo
- Publication number
- RU2784930C1 RU2784930C1 RU2021129920A RU2021129920A RU2784930C1 RU 2784930 C1 RU2784930 C1 RU 2784930C1 RU 2021129920 A RU2021129920 A RU 2021129920A RU 2021129920 A RU2021129920 A RU 2021129920A RU 2784930 C1 RU2784930 C1 RU 2784930C1
- Authority
- RU
- Russia
- Prior art keywords
- slice
- coding
- context
- slices
- decoding
- Prior art date
Links
- 230000003044 adaptive Effects 0.000 claims description 15
- 238000009795 derivation Methods 0.000 claims description 11
- 238000000638 solvent extraction Methods 0.000 claims description 11
- 241000023320 Luma <angiosperm> Species 0.000 claims description 7
- 230000004044 response Effects 0.000 claims description 3
- 239000000969 carrier Substances 0.000 claims 2
- 239000000126 substance Substances 0.000 abstract 1
- 238000000034 method Methods 0.000 description 91
- 230000001419 dependent Effects 0.000 description 58
- 230000000875 corresponding Effects 0.000 description 28
- 230000005540 biological transmission Effects 0.000 description 19
- 238000004590 computer program Methods 0.000 description 11
- 230000001131 transforming Effects 0.000 description 10
- 238000010586 diagram Methods 0.000 description 8
- 230000011664 signaling Effects 0.000 description 8
- 238000001914 filtration Methods 0.000 description 6
- 238000005192 partition Methods 0.000 description 6
- 238000006062 fragmentation reaction Methods 0.000 description 5
- 239000000203 mixture Substances 0.000 description 4
- 101710013302 CTBS Proteins 0.000 description 3
- 241001442055 Vipera berus Species 0.000 description 3
- 238000005538 encapsulation Methods 0.000 description 3
- 230000002452 interceptive Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 2
- 238000000354 decomposition reaction Methods 0.000 description 2
- 238000009472 formulation Methods 0.000 description 2
- 230000004301 light adaptation Effects 0.000 description 2
- 230000003595 spectral Effects 0.000 description 2
- 230000006399 behavior Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- UIIMBOGNXHQVGW-UHFFFAOYSA-M buffer Substances [Na+].OC([O-])=O UIIMBOGNXHQVGW-UHFFFAOYSA-M 0.000 description 1
- 230000003139 buffering Effects 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000004059 degradation Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000005755 formation reaction Methods 0.000 description 1
- 238000003780 insertion Methods 0.000 description 1
- 238000002324 minimally invasive surgery Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000006011 modification reaction Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 229920000069 poly(p-phenylene sulfide) Polymers 0.000 description 1
- 230000000750 progressive Effects 0.000 description 1
- 230000001429 stepping Effects 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Abstract
Description
Настоящее изобретение относится к кодированию изображений с малой задержкой.The present invention relates to low latency image coding.
В действующей схеме HEVC (высокоэффективное видеокодирование) в качестве инструментальных средств для распараллеливания содержатся слайсы, энтропийные слайсы (прежние облегченные слайсы), тайлы и волновая параллельная обработка (WPP).The current HEVC (High Efficiency Video Coding) scheme contains slices, entropy slices (formerly lightweight slices), tiles, and wave parallel processing (WPP) as tools for parallelization.
Для распараллеливания видеокодеров и декодеров разбиение на уровне изображений имеет несколько преимуществ по сравнению с другими подходами. В предыдущих видеокодеках, подобных H.264/AVC [1], разбиения изображения были возможны только с регулярными слайсами с высокой ценой в отношении эффективности кодирования. Для масштабируемого параллельного декодирования H.264/AVC необходимо объединять параллелизм на уровне макроблоков для восстановления изображения и параллелизм на уровне кадров для энтропийного декодирования. Этот подход, однако, обеспечивает ограниченное снижение латентности изображений и большое использование памяти. Чтобы преодолеть эти ограничения в кодек HEVC были включены новые стратегии разбиения изображения. Текущая эталонная версия программного обеспечения (HM-6) содержит 4 разных подхода: регулярные или нормальные слайсы, энтропийные слайсы, подпотоки волновой параллельной обработки (WPP) и тайлы (неперекрывающиеся изображения). Обычно эти разбиения изображения содержат набор наибольших единиц кодирования (LCU) или, в синонимической формулировке, единиц дерева кодирования (CTU), как определено в HEVC, или даже поднабор их.For parallelizing video encoders and decoders, image-level partitioning has several advantages over other approaches. In previous video codecs like H.264/AVC [1], image splits were only possible with regular slices at a high cost in terms of coding efficiency. For scalable parallel H.264/AVC decoding, it is necessary to combine macroblock-level parallelism for image reconstruction and frame-level parallelism for entropy decoding. This approach, however, provides a limited reduction in image latency and high memory usage. To overcome these limitations, new image splitting strategies have been included in the HEVC codec. The current reference software release (HM-6) contains 4 different approaches: regular or normal slices, entropy slices, wave parallel processing (WPP) substreams, and tiles (non-overlapping images). Typically, these picture partitions contain a set of largest coding units (LCUs) or, in a synonymous formulation, coding tree units (CTUs) as defined in HEVC, or even a subset of them.
Фиг.1 изображает изображение 898, расположенное в качестве примера в регулярном слайсе 900 на строку 902 LCU или макроблоков в видеокадре. Регулярные или нормальные слайсы (как определено в H.264 [1]) имеют наибольшее ухудшение кодирования, так как они нарушают зависимости энтропийного декодирования и предсказания.FIG. 1 shows a
Энтропийные слайсы, подобно слайсам, нарушают зависимости энтропийного декодирования, но делают возможным предсказание (и фильтрацию) для пересечения границ слайсов.Entropy slices, like slices, break entropy decoding dependencies but allow prediction (and filtering) to cross slice boundaries.
В WPP разбиения изображения перемежаются по строке, и предсказанию разрешено использовать данные из блоков в других разбиениях. Таким образом минимизируются потери кодирования, тогда как одновременно может применяться волновой параллелизм. Перемежение, однако, нарушает причинность битового потока, так как предшествующему разбиению необходимо следующее разбиение для декодирования.In WPP, image partitions are line-interleaved and prediction is allowed to use data from blocks in other partitions. In this way, coding loss is minimized while wave parallelism can be applied at the same time. Interleaving, however, violates the causality of the bitstream, since the previous split needs the next split to be decoded.
Фиг.2, в качестве примера, изображает изображение 898, разделенное на две строки 904, 904b тайлов 906 горизонтального разбиения. Тайлы определяют горизонтальную 908 и вертикальную границы 910, которые разбивают изображение 898 на столбцы 912a, b, c и строки 904a, b тайлов. Подобно регулярным слайсам 900, тайлы 906 нарушают зависимости энтропийного декодирования и предсказания, но не требуют заголовка для каждого тайла.Figure 2, as an example, depicts the
Для каждого из этих методов количество разбиений может свободно выбираться кодером. Обычно, существование большего количества разбиений приводит к большим потерям сжатия. Однако при WPP распространение потерь не такое высокое, и поэтому количество разбиений изображения даже может быть фиксированным на один на строку. Это также приводит к нескольким преимуществам. Во-первых, для WPP гарантируется причинность битового потока. Во-вторых, реализации декодера могут принимать, что является доступной некоторая величина параллелизма, что также повышает разрешающую способность. И, наконец, ни одна из зависимостей выбора контекста и предсказания не должна нарушаться при декодировании в волновом порядке, приводя к относительно низким потерям кодирования.For each of these methods, the number of splits can be freely chosen by the encoder. Usually, the existence of more partitions results in more compression loss. However, with WPP, the loss propagation is not as high, and therefore the number of image splits can even be fixed at one per line. This also leads to several benefits. First, for WPP, bitstream causality is guaranteed. Second, decoder implementations may assume that some amount of parallelism is available, which also improves resolution. Finally, none of the context selection and prediction dependencies should be violated when decoding in wave order, resulting in relatively low coding loss.
Однако до настоящего времени все принципы параллельного кодирования в преобразовании не обеспечивают достижение высокой эффективности сжатия в комбинации с сохранением малой задержки. Это также верно для принципа WPP. Слайсы представляют собой наименьшие единицы транспортировки в конвейере кодирования, и несколько подпотоков WPP все же должны транспортироваться последовательно. However, to date, all principles of parallel coding in the transform do not achieve high compression efficiency in combination with low delay. This is also true for the WPP principle. Slices are the smallest transport units in the encoding pipeline, and multiple WPP substreams must still be transported sequentially.
Следовательно, задачей настоящего изобретения является обеспечение принципа кодирования изображений, который делает возможным параллельное декодирование согласно, например, волновой параллельной обработке с повышенной эффективностью, как например, с еще большим уменьшением сквозной задержки или повышением эффективности кодирования посредством уменьшения расходуемых издержек кодирования.Therefore, it is an object of the present invention to provide an image coding principle that enables parallel decoding according to, for example, wave parallel processing with increased efficiency, such as further reducing end-to-end delay or increasing coding efficiency by reducing encoding overhead.
Эта задача достигается предметом независимых пунктов формулы изобретения.This objective is achieved by the subject matter of the independent claims.
Основным открытием настоящего изобретения является то, что принципы параллельной обработки, такие как волновая параллельная обработка, могут быть реализованы с уменьшенной сквозной задержкой, если отказаться от принципа обычных слайсов, согласно которому слайсы или кодируются/декодируются полностью независимо от областей изображения вне соответствующего слайса, или по меньшей мере независимо от областей вне соответствующего слайса, что касается энтропийного кодирования, в пользу слайсов разных видов, а именно слайсов, называемых зависимыми слайсами, которые принимают во внимание взаимозависимости через границы слайсов, и других слайсов, которые не принимают во внимание, называемых, например, нормальными слайсами.The main discovery of the present invention is that parallel processing principles, such as wave parallel processing, can be implemented with reduced end-to-end delay, by abandoning the conventional slice principle, according to which slices are either encoded/decoded completely independently of image areas outside the corresponding slice, or at least independently of areas outside the corresponding slice, as far as entropy coding is concerned, in favor of slices of different kinds, namely slices called dependent slices that take into account interdependencies across slice boundaries, and other slices that do not take into account, called, for example, normal slices.
Другим основным открытием настоящего изобретения, которое может быть объединено с первым или использоваться индивидуально, является то, что принцип обработки WPP может быть сделан более эффективным, если используются синтаксические участки начала слайсов для определения расположения точек входа WPP.Another major finding of the present invention, which may be combined with the former or used alone, is that the WPP processing principle can be made more efficient if slice start syntaxes are used to locate WPP entry points.
Предпочтительные варианты осуществления настоящей заявки описаны ниже в отношении фигур, причем полезные варианты осуществления являются объектом зависимых пунктов формулы изобретения. На фигурах:Preferred embodiments of the present application are described below with respect to the figures, useful embodiments being the subject of the dependent claims. On the figures:
фиг.1 изображает изображение, разбитое, в качестве примера, на регулярный слайс на строку LCU или макроблоков в изображении;Fig. 1 shows an image sliced, as an example, into a regular slice per line of LCUs or macroblocks in the image;
фиг.2 изображает изображение, разделенное, в качестве примера, на две строки горизонтально разбитых тайлов;figure 2 depicts an image divided, as an example, into two rows of horizontally split tiles;
фиг.3 изображает, в качестве примера, назначение параллельно кодированных разбиений слайсу или сегменту сетевой транспортировки;3 depicts, by way of example, the assignment of parallel-coded partitions to a slice or network transport segment;
фиг.4 изображает схематическое представление, иллюстрирующее обобщенную фрагментацию кадра посредством подхода кодирования тайлов для минимальной сквозной задержки;4 is a schematic diagram illustrating generalized frame fragmentation by the minimum end-to-end delay tile encoding approach;
фиг.5 изображает схематическое представление, иллюстрирующее примерную фрагментацию кадра посредством подхода кодирования WPP для минимальной сквозной задержки;5 is a schematic diagram illustrating exemplary frame fragmentation by WPP coding approach for minimum end-to-end delay;
фиг.6 изображает схематическую блок-схему, иллюстрирующую сценарий преобразования с использованием видеоуслуг;Fig. 6 is a schematic block diagram illustrating a conversion scenario using video services;
фиг.7 иллюстрирует схематически возможное временное планирование кодирования, передачи и декодирования для тайлов с обобщенными поднаборами с минимальной сквозной задержкой;7 illustrates schematically possible coding, transmission, and decoding timing for tiles with generalized subsets with minimum end-to-end delay;
фиг.8 схематически изображает временное планирование, которое обычно достигает сквозной задержки;Fig. 8 schematically depicts timing that typically achieves end-to-end delay;
фиг.9 иллюстрирует изображение, имеющее в качестве примера блоки дерева кодирования 11×9, которое разделено на два слайса;Fig. 9 illustrates an image having 11×9 coding tree blocks as an example, which is divided into two slices;
фиг.10 иллюстрирует изображение, имеющее в качестве примера блоки дерева кодирования 13×8, которое разбито на три тайла;Fig. 10 illustrates an image having 13×8 coding tree blocks as an example, which is divided into three tiles;
фиг.11 изображает пример синтаксиса набора параметров последовательности;Fig. 11 shows an example of a sequence parameter set syntax;
фиг.12 изображает пример синтаксиса набора параметров изображения;Fig.12 depicts an example of the syntax of the set of image parameters;
фиг.13 изображает пример синтаксиса заголовка слайса;Fig. 13 shows an example slice header syntax;
фиг.14 приводит в качестве примера разбиение изображения для обработки WPP на регулярный слайс и, для обработки с малой задержкой, на зависимые слайсы;Fig. 14 exemplifies the partitioning of an image for WPP processing into a regular slice and, for low latency processing, into dependent slices;
фиг.15 изображает пример для участка в синтаксисе набора параметров изображения;Fig. 15 shows an example for a region in the image parameter set syntax;
фиг.16 изображает возможный синтаксис заголовка слайса;16 shows a possible slice header syntax;
фиг.17 схематически иллюстрирует взаимозависимости кодирования для нормальных слайсов (и зависимых слайсов);17 schematically illustrates coding relationships for normal slices (and dependent slices);
фиг.18 изображает схематическое представление, сравнивающее кодирование для транспортировки с малой задержкой тайлов (волновая параллельная обработка, использующая зависимые слайсы);18 is a schematic diagram comparing coding for low latency tile transport (wave parallel processing using dependent slices);
фиг.19 иллюстрирует временное планирование, иллюстрирующее примерное кодирование WPP с конвейерной передачей с малой задержкой при использовании волновой параллельной обработки, использующей зависимые слайсы, как показано на правой стороне фиг.18;Fig. 19 illustrates temporal scheduling illustrating exemplary WPP low latency pipelining coding using wave parallel processing using dependent slices as shown on the right side of Fig. 18;
фиг.20 изображает схематическое представление, иллюстрирующее улучшение робастности посредством использования регулярных слайсов в качестве привязок;Fig. 20 is a schematic diagram illustrating the improvement in robustness by using regular slices as anchors;
фиг.21 изображает другой вариант осуществления для синтаксиса заголовка слайса;Fig. 21 depicts another embodiment for slice header syntax;
фиг.22 изображает другой вариант осуществления для синтаксиса набора параметров изображения;Fig. 22 depicts another embodiment for a picture parameter set syntax;
фиг.23 изображает схематическое представление, иллюстрирующее процесс инициализации вероятностей символа для зависимого слайса в случае начала на левой границе изображения;Fig. 23 is a schematic diagram illustrating the process of initializing the symbol probabilities for the dependent slice in the case of starting at the left border of the image;
фиг.24 изображает схематическое представление декодера;Fig. 24 is a schematic representation of a decoder;
фиг.25 схематически изображает блок-схему декодера вместе со схематической иллюстрацией разбиения изображения на блоки кодирования и слайсы;Fig. 25 is a schematic block diagram of a decoder along with a schematic illustration of the partitioning of an image into coding blocks and slices;
фиг.26 схематически изображает блок-схему кодера;Fig. 26 is a schematic block diagram of an encoder;
фиг.27 схематически изображает изображение, разбитое на нормальные и зависимые слайсы, названные здесь сегментами слайса;Fig. 27 schematically depicts an image divided into normal and dependent slices, referred to here as slice segments;
фиг.28a и 28b схематически изображают изображение, разбитое на нормальные и зависимые слайсы, названные здесь сегментами слайса, с одной стороны, и тайлы, с другой стороны;Fig.28a and 28b schematically depict the image, divided into normal and dependent slices, referred to here as slice segments, on the one hand, and tiles, on the other hand;
фиг.29 изображает блок-схему последовательности операций, иллюстрирующую процесс инициализации контекста, использующий зависимые слайсы;29 is a flowchart illustrating a context initialization process using dependent slices;
фиг.30 изображает блок-схему последовательности операций, иллюстрирующую процесс сохранения контекста для использования зависимых слайсов; иFig.30 depicts a flowchart illustrating the process of saving the context for the use of dependent slices; and
фиг.31 схематически изображает разные возможности сигнализации точек входа WPP.31 schematically depicts different WPP entry point signaling capabilities.
В нижеследующем описание начинается с описания современных принципов предоставления возможности параллельной обработки изображений и кодирования с малой задержкой соответственно. Кратко изложены проблемы, имеющие место при желании иметь обе возможности. В частности, как оказывается из последующего описания, принцип подпотоков WPP, как предлагается до настоящего времени, тем или иным образом вступает в противоречие с желанием иметь малую задержку из-за необходимости передавать подпотоки WPP посредством их группирования в один слайс. Нижеследующие варианты осуществления представляют принципы параллельной обработки, такие как принцип WPP, применяемые в применениях, требующих даже меньшую задержку посредством расширения принципа слайса, а именно введением другого типа слайса, позже названных зависимыми слайсами.In the following, the description begins with a description of current principles for enabling parallel image processing and low latency coding, respectively. The problems involved in wanting to have both options are briefly outlined. In particular, as will appear from the following description, the principle of WPP substreams as proposed so far conflicts in one way or another with the desire to have low latency due to the need to transmit WPP substreams by grouping them into one slice. The following embodiments introduce parallel processing principles, such as the WPP principle, applied in applications requiring even lower latency by extending the slice principle, namely by introducing another type of slice, later called dependent slices.
Минимизация сквозной задержки видео от захвата до отображения является одной из главных целей в приложениях, таких как видеоконференция и т.п.Minimizing end-to-end video latency from capture to display is one of the main goals in applications such as video conferencing and the like.
Цепочка обработки сигнала для передачи цифрового видео состоит из камеры, устройства захвата, кодера, инкапсуляции, передачи, демультиплексора, декодера, рендера и дисплея. Каждый из этих этапов вносит свой вклад в сквозную задержку посредством буферизации данных изображения перед их последовательной передачей на последующий этап.The signal processing chain for digital video transmission consists of a camera, capture device, encoder, encapsulation, transmission, demultiplexer, decoder, renderer and display. Each of these stages contributes to the end-to-end delay by buffering the image data before passing it in sequence to the next stage.
Некоторые приложения требуют минимизации такой задержки, например, удаленное манипулирование объектами в опасных зонах, без прямой видимости манипулируемого объекта, или минимально инвазивная хирургия. Даже короткая задержка может приводить к серьезным затруднениям надлежащего манипулирования или даже приводить к катастрофическим ошибкам.Some applications require this delay to be minimized, such as remote manipulation of objects in hazardous areas without direct line of sight of the object being manipulated, or minimally invasive surgery. Even a short delay can lead to serious difficulties in proper manipulation or even lead to catastrophic errors.
Во многих случаях весь видеокадр буферизуется на этапе обработки, например, чтобы сделать возможной обработку интра-кадра. Некоторые этапы собирают данные, чтобы формировать пакеты, которые направляются на следующий этап. Обычно, существует нижняя граница для задержки, которая вытекает из требований к локальной обработке. Это анализируется для каждого индивидуального этапа более подробно ниже.In many cases, the entire video frame is buffered during the processing step, for example, to enable intra-frame processing. Some stages collect data to form packets that are sent to the next stage. Typically, there is a lower bound on latency that results from local processing requirements. This is analyzed for each individual stage in more detail below.
Обработка внутри камеры необязательно требует обработки сигнала интра-кадра, поэтому минимальная задержка определяется временем интегрирования датчика, которое ограничивается частотой кадров и некоторыми проектными решениями производителя аппаратных средств. Выходной сигнал камеры обычно связан с порядком сканирования, который обычно начинает обработку в верхнем левом углу, перемещается в верхний правый угол и продолжает построчно до нижнего правого угла. Следовательно, оно занимает длительность около одного кадра до тех пор, пока все данные не будут перенесены с датчика на выход камеры.In-camera processing does not necessarily require intra-frame signal processing, so the minimum latency is determined by the integration time of the sensor, which is limited by the frame rate and some design decisions of the hardware manufacturer. The camera output is usually related to the scan order, which typically starts processing at the top left corner, moves to the top right corner, and continues line by line to the bottom right corner. Therefore, it takes about one frame duration until all data has been transferred from the sensor to the camera output.
Устройство захвата может направлять данные камеры непосредственно после приема; однако оно обычно буферизует некоторые данные и генерирует пачки, чтобы оптимизировать доступ к данным для памяти или запоминающего устройства. Кроме того, соединение между камерой/устройством захвата и памятью компьютера обычно ограничивает скорость передачи данных для направления захваченных данных изображения в память для дальнейшей обработки (кодирования). Обычно камеры подключаются посредством универсальной последовательной шины (USB) 2.0 или в скором времени USB 3.0, которая всегда включает в себя частичную транспортировку данных изображения на кодер. Это ограничивает возможность распараллеливания на стороне кодера в сценариях с предельной малой задержкой, т.е. кодер пытается начать кодирование как можно быстрее, когда данные становятся доступными от камеры, например, в порядке сканирования растра от верха до низа изображения.The capture device can send camera data directly after receiving; however, it typically buffers some data and generates bursts to optimize data access for memory or storage. In addition, the connection between the camera/capture device and the computer's memory typically limits the data rate to direct the captured image data to the memory for further processing (encoding). Typically cameras are connected via Universal Serial Bus (USB) 2.0 or soon USB 3.0, which always includes a partial transport of image data to the encoder. This limits the possibility of parallelization on the encoder side in scenarios with extremely low latency, i.e. the encoder tries to start encoding as soon as possible when data becomes available from the camera, for example in order to scan the raster from the top to the bottom of the image.
В кодере имеются некоторые степени свободы, которые допускают принять компромиссное решение по эффективности кодирования, в отношении скорости передачи данных, необходимой для некоторой верности воспроизведения видео, для снижения задержки обработки.There are some degrees of freedom in the encoder that allow a trade-off decision on coding efficiency, in relation to the data rate necessary for some fidelity of video playback, to reduce processing delay.
Кодер использует данные, которые уже были посланы для предсказания изображения, подлежащего последующему кодированию. Обычно, разность между фактическим изображением и предсказанием может кодироваться с меньшим количеством битов, чем требовалось бы без предсказания. Это значения предсказания должны быть доступны на декодере, таким образом предсказание основывается на ранее декодированных участках этого же изображения (внутрикадровое предсказание) или на других изображениях (межкадровое предсказание), которые были обработаны ранее. Стандарты видеокодирования перед HEVC используют только часть изображения над этой же строкой или на ней, но слева - которые были ранее кодированы - для внутрикадрового предсказания, предсказания вектора движения и энтропийного кодирования (контекстно-адаптивное двоичное арифметическое кодирование (CABAC)).The encoder uses the data that has already been sent to predict the image to be encoded. Typically, the difference between the actual image and the prediction may be encoded with fewer bits than would be required without the prediction. These prediction values must be available at the decoder, so the prediction is based on previously decoded portions of the same picture (intra-picture prediction) or on other pictures (inter-picture prediction) that have been processed before. Video coding standards before HEVC use only the portion of the image above or on the same line but to the left - which were previously encoded - for intra-frame prediction, motion vector prediction, and entropy coding (Context Adaptive Binary Arithmetic Coding (CABAC)).
В дополнение к оптимизации структуры предсказания может учитываться влияние параллельной обработки. Параллельная обработка требует идентификации областей изображения, которые могут быть обработаны независимо. По практическим причинам выбираются прилегающие области, такие как горизонтальные или вертикальные прямоугольники, которые часто называют «тайлами». В случае ограничений на малую задержку эти области должны предоставлять возможность выполнения параллелизованного кодирования данных, поступающих от устройства захвата в память, как можно скорее. Предполагая пересылку содержимого памяти сканирования растра, имеют смысл вертикальные разбиения необработанных данных, чтобы начать кодирование немедленно. Внутри таких тайлов, которые делят изображение на вертикальные разбиения (ср. фигуру ниже), внутреннее предсказание, предсказание вектора движения и энтропийное кодирование (CABAC) могут приводить к приемлемой эффективности кодирования. Чтобы минимизировать задержку, только часть изображения, начиная сверху, переносится в память кадров кодера, и параллельная обработка должна начинаться в вертикальных тайлах.In addition to optimizing the prediction structure, the impact of parallel processing can be taken into account. Parallel processing requires the identification of image areas that can be processed independently. For practical reasons, adjacent areas are chosen, such as horizontal or vertical rectangles, which are often referred to as "tiles". In the case of low latency constraints, these areas should allow parallelized encoding of the data from the memory capture device to be performed as soon as possible. Assuming the contents of a raster scan memory are being sent, it makes sense to vertically split the raw data to start encoding immediately. Within such tiles that divide the image into vertical partitions (cf. the figure below), intra prediction, motion vector prediction, and entropy coding (CABAC) can result in acceptable coding efficiency. To minimize latency, only a portion of the image, starting at the top, is transferred to the encoder's frame memory, and parallel processing should start in vertical tiles.
Другим путем разрешения параллельной обработки является использование WPP в регулярном слайсе, который будет сравниваться с тайлами, «строкой» тайлов, включенных в единственный слайс. Данные в этом слайсе также могут кодироваться параллельным образом, используя подпотоки WPP, в пределах слайса. Разделение изображения на слайсы 900 и тайлы/подпотоки 914 WPP показано в виде примеров фиг.3/1.Another way to enable parallel processing is to use WPP in a regular slice that will be compared against tiles, a "string" of tiles included in a single slice. The data in that slice can also be encoded in parallel using WPP substreams within the slice. The division of the image into
Фиг.3, таким образом, изображает назначение параллельно кодированных разбиений, таких как 906 или 914, слайсу или сегменту сетевой транспортировки (единственный сетевой пакет или многочисленные сетевые 900 пакеты).3 thus depicts the assignment of parallel coded partitions, such as 906 or 914, to a slice or network transport segment (single network packet or
Инкапсуляция кодированных данных в единицы уровня сетевой абстракции (NAL), как определено в H.264 или HEVC, перед передачей или во время процесса кодирования добавляет некоторый заголовок к блокам данных, который допускает идентификацию каждого блока и переупорядочение блоков, если это применимо. В стандартном случае, не требуется дополнительная сигнализация, так как порядок элементов кодирования всегда находится в порядке декодирования, то есть определяется явное назначение положения тайла или общего фрагмента кодирования.Encapsulating the encoded data into Network Abstraction Layer (NAL) units as defined in H.264 or HEVC, before transmission or during the encoding process, adds some header to the data blocks that allows each block to be identified and the blocks to be reordered, if applicable. In the standard case, no additional signaling is required, since the order of encoding elements is always in decoding order, i.e., an explicit assignment of the position of a tile or a common encoding fragment is determined.
Если параллельная обработка рассматривается с дополнительным транспортным уровнем для параллельной транспортировки с малой задержкой, т.е. транспортный уровень может переупорядочивать разбиения изображения для тайлов, чтобы допускать передачу с малой задержкой, подразумевая рассылку фрагментов, как показано на фиг.4, когда они кодируются. Эти фрагменты также могут быть не полностью кодированными слайсами, они могут быть поднабором слайса, или могут содержаться в зависимом слайсе.If parallel processing is considered with an additional transport layer for low latency parallel transport, i.e. the transport layer may reorder the image partitions for tiles to allow for low latency transmission, meaning fragments are broadcast as shown in FIG. 4 when they are encoded. These fragments may also be incompletely encoded slices, they may be a subset of a slice, or they may be contained in a dependent slice.
В случае создания дополнительных фрагментов существует компромисс между эффективностью, которая является наибольшей с большими блоками данных, так как информация заголовка добавляет постоянное количество байтов, и задержкой, так как большие блоки данных параллельных кодеров необходимо буферизовать перед передачей. Общая задержка может быть уменьшена, если кодированное представление вертикальных тайлов 906 разделяется на ряд фрагментов 916, которые передаются, как только будет полностью кодирован фрагмент. Размер каждого фрагмента может определяться на основе фиксированной области изображения, такой как макроблоки, LCU или на основе максимальных данных, как показано на фиг.4.In the case of creating additional chunks, there is a trade-off between efficiency, which is greatest with large data blocks, since the header information adds a constant number of bytes, and latency, since large data blocks of parallel encoders must be buffered before transmission. The overall delay can be reduced if the encoded representation of the
Фиг.4, таким образом, изображает обобщенную фрагментацию кадра посредством подхода кодирования тайлов для минимальной сквозной задержки.4 thus depicts a generalized frame fragmentation by a minimum end-to-end delay tile encoding approach.
Аналогично, фиг.5 изображает фрагментацию кадра с подходом кодирования WPP для минимальной сквозной задержки.Similarly, FIG. 5 depicts frame fragmentation with the WPP coding approach for minimum end-to-end delay.
Передача может добавлять дополнительную задержку, например, если применяется дополнительная ориентированная на блоки обработка, такая как коды прямой коррекции ошибок, повышающие робастность передачи. Кроме того, сетевая инфраструктура (маршрутизаторы и т.д.) или физический уровень могут добавлять задержку, она обычно известна как латентность для соединения. В дополнение к латентности скорость передачи битов при передаче определяет время (задержку) для пересылки данных от Стороны a к Стороне b при разговоре, как показано на фиг.6, который использует видеоуслуги.The transmission may add additional delay, for example, if additional block-oriented processing is applied, such as forward error correction codes, which increase the robustness of the transmission. Also, the network infrastructure (routers, etc.) or the physical layer can add latency, this is commonly known as connection latency. In addition to latency, the transmission bit rate determines the time (delay) for data transfer from Party a to Party b in a conversation, as shown in FIG. 6, that uses video services.
Если кодированные блоки данных передаются вне порядка, необходимо учитывать задержку на переупорядочение. Декодирование может начинаться, как только поступит единица данных, предполагая, что являются доступными другие единицы данных, которые должны декодироваться перед этой.If encoded data blocks are transmitted out of order, the reordering delay must be taken into account. Decoding may begin as soon as a data unit arrives, assuming that other data units are available to be decoded before this one.
В случае тайлов не существует зависимостей между тайлами, таким образом, тайл может декодироваться немедленно. Если были созданы фрагменты тайла, такие как отдельные слайсы на каждый фрагмент, как показано на фиг.4, фрагменты могут непосредственно транспортироваться, как только они будут кодированы соответственно тому, как были кодированы их содержащиеся LCU или единицы кодирования (CU).In the case of tiles, there are no dependencies between tiles, so a tile can be decoded immediately. If tile fragments have been created, such as separate slices per fragment as shown in FIG. 4, the fragments can be directly transported once they have been encoded according to how their contained LCUs or coding units (CUs) have been encoded.
Рендерер собирает выходные сигналы механизмов параллельного декодирования и направляет объединенное изображение построчно на дисплей.The renderer collects the outputs of the parallel decoding engines and sends the combined image line by line to the display.
Дисплей не добавляет обязательно никакой задержки, но на практике может выполнять некоторую внутрикадровую обработку перед тем, как данные изображения фактически отображаются. Это зависит от проектных решений производителя аппаратных средств.The display does not necessarily add any delay, but in practice may perform some intra-frame processing before the image data is actually displayed. It depends on the design decisions of the hardware manufacturer.
Суммируя, изобретатели могут оказывать влияние на этапы кодирования, инкапсуляции, передачи и декодирования, чтобы достичь минимальной сквозной задержки. Если изобретатели используют параллельную обработку, тайлы и фрагментацию в тайлах, общая задержка может быть значительно уменьшена, как показано на фиг.7, по сравнению с обычно используемой цепочкой обработки, которая добавляет задержку около одного кадра на каждом из этих этапов, как показано на фиг.8.In summary, inventors can influence the encoding, encapsulation, transmission, and decoding steps to achieve the lowest end-to-end delay. If the inventors use parallel processing, tiles, and tile fragmentation, the overall latency can be significantly reduced, as shown in Fig. 7, compared to the commonly used processing chain, which adds a delay of about one frame at each of these stages, as shown in Fig. .eight.
В частности, в то время как фиг.7 изображает кодирование, передачу и декодирование для тайлов с обобщенными поднаборами с минимальной сквозной задержкой, фиг.8 иллюстрирует обычно достигаемую сквозную задержку.In particular, while FIG. 7 depicts encoding, transmission, and decoding for tiles with generalized subsets with minimum end-to-end delay, FIG. 8 illustrates the end-to-end delay typically achieved.
HEVC позволяет использовать разбиение слайса, разбиение тайла и следующим образом.HEVC allows you to use slice splitting, tile splitting and as follows.
тайл: Целочисленное количество блоков дерева, совместно встречающихся в одном столбце и одной строке, упорядоченное последовательно в сканировании растра блоков дерева тайла. Деление каждого изображения на тайлы представляет собой разбиение. Тайлы в изображении упорядочиваются последовательно в сканировании растра тайла изображения. Хотя слайс содержит блоки дерева, которые являются последовательными в сканировании растра блоков дерева тайла, эти блоки дерева не являются обязательно последовательными в сканировании растра блоков дерева изображения.tile: An integer number of tree blocks co-occurring in one column and one row, ordered sequentially in the tile tree block raster scan. Dividing each image into tiles is a partition. The tiles in the image are ordered sequentially in the image tile raster scan. Although the slice contains tree blocks that are sequential in the tree block raster scan of the tile, these tree blocks are not necessarily sequential in the image tree block raster scan.
слайс: Целочисленное количество блоков дерева, упорядоченное последовательно в сканировании растра. Деление каждого изображения на слайсы представляет собой разбиение. Адреса блоков дерева выводятся из адреса первого блока дерева в слайсе (как представлено в заголовке слайса).slice: An integer number of tree blocks ordered sequentially in a raster scan. The division of each image into slices is a partition. The tree block addresses are derived from the address of the first tree block in the slice (as represented in the slice header).
Сканирование растра: Отображение прямоугольного двумерного образца на одномерный образец, так что первые вводы в одномерном образце выполняются из первой верхней строки двумерного образца, сканируемого слева направо, за которым следуют аналогично вторая, третья и т.д. строки образца (идя вниз), причем каждая сканируется слева направо.Raster scan: Mapping a rectangular 2D pattern onto a 1D pattern so that the first entries in the 1D pattern are made from the first top row of the 2D pattern, scanned from left to right, followed similarly by the second, third, and so on. sample lines (going down), each being scanned from left to right.
блок дерева: блок N×N отсчетов яркости и два соответствующих блока отсчетов цветности изображения, которое имеет три массива отсчетов, или блок N×N отсчетов монохромного изображения или изображения, которое кодируется с использованием трех отдельных цветовых плоскостей. Деление слайса на блоки дерева представляет собой разбиение.tree block: a block of N×N luminance samples and two corresponding blocks of chrominance samples of an image that has three arrays of samples, or an N×N sample block of a monochrome image or an image that is encoded using three separate color planes. Dividing a slice into blocks of a tree is a split.
Разбиение: Деление набора на поднаборы, так что каждый элемент набора находится точно в одном из поднаборов.Partitioning: Dividing a set into subsets such that each element of the set is in exactly one of the subsets.
Квадродерево: Дерево, в котором родительский узел может быть разбит на четыре дочерних узла. Дочерний узел может стать родительским узлом для другого разбиения на четыре дочерних узла.Quadtree: A tree in which a parent node can be split into four child nodes. A child node can become a parent node for another split into four child nodes.
В нижеследующем объясняется пространственное подразделение изображений, слайсов и тайлов. В частности, следующее описание задает то, как изображение разбивается на слайсы, тайлы и блоки дерева кодирования. Изображения делятся на слайсы и тайлы. Слайс представляет собой последовательность блоков дерева кодирования. Аналогично, тайл представляет собой последовательность блоков дерева кодирования.The following explains the spatial subdivision of images, slices, and tiles. In particular, the following description specifies how an image is divided into slices, tiles, and blocks of the coding tree. Images are divided into slices and tiles. A slice is a sequence of coding tree blocks. Similarly, a tile is a sequence of coding tree blocks.
Отсчеты обрабатываются в единицах блоков дерева кодирования. Размером массива яркости для каждого блока дерева в отсчетах как по ширине, так и по высоте является CtbSize. Шириной и высотой массивов цветности для каждого блока дерева кодирования являются CtbWidthC и CtbHeightC соответственно. Например, изображение может делиться на два слайса, как показано на следующей фигуре. В качестве другого примера, изображение может делиться на три тайла, как показано на второй последующей фигуре.Samples are processed in units of coding tree blocks. The size of the brightness array for each tree block in both width and height counts is CtbSize. The width and height of the chrominance arrays for each coding tree block are CtbWidthC and CtbHeightC, respectively. For example, an image may be divided into two slices, as shown in the following figure. As another example, the image may be divided into three tiles, as shown in the second following figure.
В отличие от слайсов, тайлы всегда являются прямоугольными и всегда содержат целочисленное количество блоков дерева кодирования в сканировании растра блоков дерева кодирования. Тайл может состоять из блоков дерева кодирования, содержащихся в более, чем одном слайсе. Аналогично, слайс может содержать блоки дерева кодирования, содержащиеся в более, чем одном тайле.Unlike slices, tiles are always rectangular and always contain an integer number of coding tree blocks in the coding tree block raster scan. A tile may consist of coding tree blocks contained in more than one slice. Likewise, a slice may contain coding tree blocks contained in more than one tile.
Фиг.9 иллюстрирует изображение 898 с 11 на 9 блоками 918 дерева кодирования, которое разбивается на два слайса 900a, b.Fig.9 illustrates the
Фиг.10 иллюстрирует изображение с 13 на 8 блоками 918 дерева кодирования, которое разбивается на три тайла.10 illustrates a 13 by 8
Каждому блоку 918 дерева кодирования 898 назначается разбиение, сигнализирующее для идентификации размеров блока для внутреннего или внешнего предсказания и для кодирования с преобразованием. Разбиение представляет собой рекурсивное разбиение методом квадродерева. Корень квадродерева ассоциируется с блоком дерева кодирования. Квадродерево разделяется до тех пор, пока не будет достигнут лист, который упоминается как блок кодирования. Блок кодирования представляет собой корневой узел двух деревьев, дерева предсказания и дерева преобразования.Each
Дерево предсказания задает положение и размер блоков предсказания. Блоки предсказания и ассоциированные данные предсказания упоминаются как единица предсказания.The prediction tree defines the position and size of the prediction blocks. The prediction blocks and associated prediction data are referred to as a prediction unit.
Фиг.11 изображает примерный синтаксис RBSP набора параметров последовательности.11 depicts an exemplary RBSP syntax for a sequence parameter set.
Дерево преобразования задает положение и размер блоков преобразования. Блоки преобразования и ассоциированные данные преобразования упоминаются как единица преобразования.The transformation tree defines the position and size of the transformation blocks. Transformation units and associated transformation data are referred to as a transformation unit.
Информация о разбиении для яркости и цветности является идентичной для дерева предсказания и может быть идентичной или может не быть идентичной для дерева преобразования.The partitioning information for luma and chrominance is the same for the prediction tree, and may or may not be the same for the transformation tree.
Блок кодирования, ассоциированные данные кодирования и ассоциированные единицы предсказания и преобразования вместе образуют единицу кодирования.The coding unit, the associated coding data, and the associated prediction and transformation units together form a coding unit.
Процесс для преобразования адреса блока дерева кодирования в порядке растра блока дерева кодирования в порядок сканирования тайла может быть следующим:The process for converting the coding tree block address in coding tree block raster order to tile scan order can be as follows:
Выходами данного процесса являютсяThe outputs of this process are
- массив CtbAddrTS[ctbAddrRS] с ctbAddrRS в диапазоне от 0 до PicHeightInCtbs * PicWidthInCtbs-1 включительно.- array CtbAddrTS[ctbAddrRS] with ctbAddrRS ranging from 0 to PicHeightInCtbs * PicWidthInCtbs-1 inclusive.
- массив TileId[ctbAddrTS] с ctbAddrTS в диапазоне от 0 до PicHeightInCtbs * PicWidthInCtbs-1 включительно.- TileId[ctbAddrTS] array with ctbAddrTS ranging from 0 to PicHeightInCtbs * PicWidthInCtbs-1 inclusive.
Массив CtbAddrTS[] выводится следующим образом:The CtbAddrTS[] array is output as follows:
Массив TileId[] выводится следующим образом:The TileId[] array is output like this:
Соответствующий примерный синтаксис показан на фиг.11, 12 и 13, причем фиг.12 имеет примерный синтаксис RBSP набора параметров изображений. Фиг.13 изображает примерный синтаксис заголовка слайса.Corresponding exemplary syntax is shown in FIGS. 11, 12, and 13, with FIG. 12 having an exemplary RBSP syntax of a set of image parameters. 13 depicts an exemplary slice header syntax.
В примере синтаксиса может применяться следующая семантика:In the example syntax, the following semantics may apply:
entropy_slice_flag равный 1 задает, что подразумевается, что значение неприсутствующих синтаксических элементов заголовка слайса равно значению синтаксических элементов заголовка слайса в предшествующем слайсе, где предшествующий слайс определяется как слайс, содержащий блок дерева кодирования с расположением (SliceCtbAddrRS-1). entropy_slice_flag должен быть равен 0, когда SliceCtbAddrRS равен 0.entropy_slice_flag equal to 1 specifies that the value of the slice header syntax elements not present is assumed to be equal to the value of the slice header syntax elements in the preceding slice, where the preceding slice is defined as the slice containing the encoding tree block with location (SliceCtbAddrRS-1). entropy_slice_flag must be 0 when SliceCtbAddrRS is 0.
tiles_or_entropy_coding_sync_idc равный 0 задает, что существует только один тайл в каждом изображении в кодированной видеопоследовательности, и не вызывается конкретный процесс синхронизации для контекстных переменных перед декодированием первого блока дерева кодирования строки блоков дерева кодирования.tiles_or_entropy_coding_sync_idc equal to 0 specifies that there is only one tile in each picture in the encoded video sequence, and no particular synchronization process is called for context variables before decoding the first coding tree block of the coding tree block string.
tiles_or_entropy_coding_sync_idc равный 1 задает, что может быть более одного тайла в каждом изображении в кодированной видеопоследовательности, и не вызывается конкретный процесс синхронизации для контекстных переменных перед декодированием первого блока дерева кодирования строки блоков дерева кодирования.tiles_or_entropy_coding_sync_idc equal to 1 specifies that there can be more than one tile in each picture in the encoded video sequence, and no particular synchronization process is called for context variables before decoding the first coding tree block of the coding tree block row.
tiles_or_entropy_coding_sync_idc равный 2 задает, что существует только один тайл в каждом изображении в кодированной видеопоследовательности, конкретный процесс синхронизации для контекстных переменных вызывается перед декодированием первого блока дерева кодирования строки блоков дерева кодирования, и конкретный процесс запоминания для контекстных переменных вызывается после декодирования двух блоков дерева кодирования строки блоков дерева кодирования.tiles_or_entropy_coding_sync_idc equal to 2 specifies that there is only one tile in each picture in the encoded video sequence, the specific synchronization process for context variables is called before decoding the first coding tree block of a line of coding tree blocks, and the specific memory process for context variables is called after decoding two blocks of the coding tree of a line coding tree blocks.
Значение tiles_or_entropy_coding_sync_idc должно быть в диапазоне от 0 до 2 включительно.tiles_or_entropy_coding_sync_idc must be between 0 and 2 inclusive.
num_tile_columns_minus1 плюс 1 задает количество столбцов тайла, разбивающих изображение.num_tile_columns_minus1 plus 1 specifies the number of tile columns that split the image.
num_tile_rows_minus1 плюс 1 задает количество строк тайла, разбивающих изображение.num_tile_rows_minus1 plus 1 specifies the number of tile rows that split the image.
Когда num_tile_columns_minus1 равен 0, num_tile_rows_minus1 не должен быть равен 0.When num_tile_columns_minus1 is 0, num_tile_rows_minus1 must not be 0.
Одно или оба из следующих условий должны выполняться для каждого слайса и тайла:One or both of the following conditions must be met for each slice and tile:
- Все кодированные блоки в слайсе принадлежат одному и тому же тайлу.- All encoded blocks in a slice belong to the same tile.
- Все кодированные блоки в тайле принадлежат одному и тому же слайсу.- All encoded blocks in a tile belong to the same slice.
ПРИМЕЧАНИЕ - В пределах одного и того же изображения могут быть как слайсы, которые содержат многочисленные тайлы, так и тайлы, которые содержат многочисленные слайсы.NOTE - Within the same image, there can be both slices that contain multiple tiles and tiles that contain multiple slices.
uniform_spacing_flag равный 1 задает, что границы столбцов и, аналогично, границы строк распределяются равномерно по изображению. uniform_spacing_flag равный 0 задает, что границы столбцов и, аналогично, границы строк не распределяются равномерно по изображению, но сигнализируются однозначно, используя синтаксические элементы column_width[i] и row_height[i].uniform_spacing_flag equal to 1 specifies that column borders, and likewise row borders, are evenly spaced across the image. uniform_spacing_flag equal to 0 specifies that column borders, and likewise row borders, are not uniformly spaced across the image, but are signaled unambiguously using the column_width[i] and row_height[i] syntax elements.
column_width[i] задает ширину i-ого столбца тайла в единицах блоков дерева кодирования.column_width[i] specifies the width of the i-th tile column in coding tree block units.
row_height[i] задает высоту i-ой строки тайла в единицах блоков дерева кодирования.row_height[i] specifies the height of the i-th row of the tile in units of coding tree blocks.
Значения ColumnWidth[i], задающие ширину i-ого столбца тайла в единицах блоков дерева кодирования, и значения ColumnWidthInLumaSamples[i], задающие ширину i-ого столбца тайла в единицах отсчетов яркости, выводятся следующим образом:The ColumnWidth[i] values specifying the width of the i-th tile column in units of coding tree blocks and the ColumnWidthInLumaSamples[i] values specifying the width of the i-th tile column in units of luma samples are output as follows:
Значения RowHeight[i], задающие высоту i-ой строки тайла в единицах блоков дерева кодирования, выводятся следующим образом:The RowHeight[i] values that specify the height of the i-th row of the tile in units of coding tree blocks are output as follows:
Значения ColBd[i], задающие расположение левой границы столбца i-ого столбца тайла в единицах блоков дерева кодирования, выводятся следующим образом:Values ColBd[i], specifying the location of the left border of the column of the i-th column of the tile in units of blocks of the coding tree, are output as follows:
Значения RowBd[i], задающие расположение верхней границы строки i-ой строки тайла в единицах блоков дерева кодирования, выводятся следующим образом:The RowBd[i] values specifying the location of the top row boundary of the i-th row of the tile in units of coding tree blocks are output as follows:
num_substreams_minus1 плюс 1 задает максимальное количество поднаборов, включенных в слайс, когда tiles_or_entropy_coding_sync_idc равен 2. Когда он не присутствует, делается заключение, что значение num_substreams_minus1 равно 0.num_substreams_minus1 plus 1 specifies the maximum number of substreams included in a slice when tiles_or_entropy_coding_sync_idc is 2. When it is not present, it is concluded that the value of num_substreams_minus1 is 0.
num_entry_point_offsets задает количество синтаксических элементов entry_point_offset[i] в заголовке слайса. Когда tiles_or_entropy_coding_sync_idc равен 1, значение num_entry_point_offsets должно быть в диапазоне от 0 до (num_tile_columns_minus1 + 1) * (num_tile_rows_minus1 + 1) - 1 включительно. Когда tiles_or_entropy_coding_sync_idc равен 2, значение num_entry_point_offsets должно быть в диапазоне от 0 до num_substreams_minus1 включительно. Когда не присутствует, подразумевается, что значение num_entry_point_offsets равно 0.num_entry_point_offsets specifies the number of entry_point_offset[i] syntax elements in the slice header. When tiles_or_entropy_coding_sync_idc is 1, num_entry_point_offsets must be in the
offset_len_minus1 плюс 1 задает длину в битах синтаксических элементов entry_point_offset[i].offset_len_minus1 plus 1 specifies the length in bits of entry_point_offset[i] syntax elements.
entry_point_offset[i] задает смещение i-ой точки входа в байтах и должно быть представлено посредством offset_len_minus1 плюс 1 битов. Кодированная единица NAL слайса состоит из num_entry_point_offsets + 1 поднаборов, причем значения индекса поднабора находятся в диапазоне от 0 до num_entry_point_offsets включительно. Поднабор 0 состоит из байтов от 0 до entry_point_offset[0] - 1 включительно, кодированной единицы NAL слайса, поднабор k, с k в диапазоне от 1 до num_entry_point_offsets - 1 включительно, состоит из байтов от entry_point_offset[k-1] до entry_point_offset[k] + entry_point_offset[k-1] - 1 включительно, кодированной единицы NAL слайса, и последний поднабор (с индексом поднабора равным num_entry_point_offsets) состоит из оставшихся байтов кодированной единицы NAL слайса.entry_point_offset[i] specifies the offset of the i-th entry point in bytes and shall be represented by offset_len_minus1 plus 1 bits. A slice NAL coded unit consists of num_entry_point_offsets + 1 subsets, with subset index values ranging from 0 to num_entry_point_offsets inclusive.
ПРИМЕЧАНИЕ - Заголовок единицы NAL и заголовок слайса кодированной единицы NAL слайса всегда включены в поднабор 0.NOTE – The NAL unit header and the slice header of the coded slice NAL unit are always included in
Когда tiles_or_entropy_coding_sync_idc равен 1 и num_entry_point_offsets больше 0, каждый поднабор должен содержать все кодированные биты одного или многих завершенных тайлов, и количество поднаборов должно быть равно или меньше количеству тайлов в слайсе.When tiles_or_entropy_coding_sync_idc is 1 and num_entry_point_offsets is greater than 0, each subset must contain all of the encoded bits of one or more completed tiles, and the number of subsets must be equal to or less than the number of tiles in the slice.
Когда tiles_or_entropy_coding_sync_idc равен 2 и num_entry_point_offsets больше 0, поднабор k для каждого из всех возможных значений k должен содержать все биты, подлежащие использованию во время процесса инициализации для текущего указателя k битового потока.When tiles_or_entropy_coding_sync_idc is equal to 2 and num_entry_point_offsets is greater than 0, the subset k for each of all possible values of k shall contain all the bits to be used during the initialization process for the current bitstream pointer k.
Что касается семантики данных слайса, то может применяться следующее.With regard to slice data semantics, the following may apply.
end_of_slice_flag равный 0 задает, что следует другой макроблок в слайсе.end_of_slice_flag equal to 0 specifies that another macroblock in the slice follows.
end_of_slice_flag равный 1 задает окончание слайса и что не следует другой макроблок.end_of_slice_flag equal to 1 specifies the end of the slice and that no other macroblock follows.
entry_point_marker_two_3bytes представляет собой последовательность фиксированного значения из 3 байтов равную 0x000002. Этот синтаксический элемент называется префиксом маркера входа.entry_point_marker_two_3bytes is a fixed value sequence of 3 bytes equal to 0x000002. This syntax element is called the entry token prefix.
tile_idx_minus_1 задает TileID в порядке сканирования растра. Первый тайл в изображении должен иметь TileID равный 0. Значение tile_idx_minus_1 должно быть в диапазоне от 0 до (num_tile_columns_minus1 + 1) * ( num_tile_rows_minus1 + 1) - 1.tile_idx_minus_1 specifies the TileID in raster scan order. The first tile in the image must have a TileID of 0. The value of tile_idx_minus_1 must be between 0 and (num_tile_columns_minus1 + 1) * ( num_tile_rows_minus1 + 1) - 1.
Процесс синтаксического анализа CABAC для данных слайса может быть следующим:The CABAC parsing process for slice data can be as follows:
Этот процесс вызывается при синтаксическом анализе синтаксических элементов с дескриптором ae(v).This process is invoked when parsing syntax elements with descriptor ae(v).
Входами для этого процесса являются запрос значения синтаксического элемента и значения синтаксически анализированных синтаксических элементов.The inputs to this process are the request for the value of the syntax element and the value of the parsed syntax elements.
Выходом этого процесса является значение синтаксического элемента.The output of this process is the value of the syntax element.
В начале синтаксического анализа данных слайса в слайсе вызывается процесс инициализации процесса синтаксического анализа CABAC. Когда tiles_or_entropy_coding_sync_idc равен 2 и num_substreams_minus1 больше 0, таблица отображения BitStreamTable c num_substreams_minus1 + 1 элементами, задающими таблицу указателей битового потока для использования для последующего выведения текущего указателя битового потока, выводится следующим образом.At the start of parsing slice data in a slice, the CABAC parsing process initialization process is called. When tiles_or_entropy_coding_sync_idc is equal to 2 and num_substreams_minus1 is greater than 0, a BitStreamTable mapping table with num_substreams_minus1 + 1 elements specifying a bitstream pointer table to use for subsequent derivation of the current bitstream pointer is output as follows.
- BitStreamTable[0] инициализируется на содержание указателя битового потока.- BitStreamTable[0] is initialized to contain a bitstream pointer.
- Для всех индексов i больше 0 и меньше num_substreams_minus1 + 1, BitStreamTable[i] содержит указатель битового потока на entry_point_offset[i] байтов после BitStreamTable[i-1].- For all indices i greater than 0 and less than num_substreams_minus1 + 1, BitStreamTable[i] contains the bitstream pointer entry_point_offset[i] bytes after BitStreamTable[i-1].
Текущий указатель битового потока устанавливается на BitStreamTable[0].The current bitstream pointer is set to BitStreamTable[0].
Адрес минимального блока кодирования блока дерева кодирования, содержащего пространственный соседний блок T, ctbMinCbAddrT, выводится с использованием расположения (x0, y0) верхнего левого отсчета яркости текущего блока дерева кодирования, например, следующим образом.The address of the minimum coding block of the coding tree block containing the spatial neighboring block T, ctbMinCbAddrT, is derived using the location (x0, y0) of the upper left luma value of the current coding tree block, for example, as follows.
Переменная availableFlagT получается посредством вызова соответствующего процесса вывода доступности блока кодирования с ctbMinCbAddrT в качестве входа.The availableFlagT variable is obtained by calling the appropriate coding block availability output process with ctbMinCbAddrT as input.
В начале синтаксического анализа дерева кодирования и tiles_or_entropy_coding_sync_idc равным 2, и num_substreams_minus1 больше 0, применяется следующее.At the start of parsing the coding tree and tiles_or_entropy_coding_sync_idc is equal to 2 and num_substreams_minus1 is greater than 0, the following applies.
- Если CtbAddrRS % PicWidthInCtbs равняется 0, применяется следующее.- If CtbAddrRS % PicWidthInCtbs is 0, the following applies.
- Когда availableFlagT равен 1, вызывается процесс синхронизации процесса синтаксического анализа CABAC, как определено в подпункте «Процесс синхронизации для контекстных переменных».- When availableFlagT is equal to 1, the CABAC parsing process synchronization process is called, as defined in the "Synchronization Process for Context Variables" subclause.
- Вызывается процесс декодирования для двоичных решений перед завершением, за которым следует процесс инициализации для механизма арифметического декодирования.- The decoding process for binary decisions is called before completion, followed by the initialization process for the arithmetic decoding engine.
- Текущий указатель битового потока устанавливается на указание BitStreamTable[i] с индексом i, выводимым следующим образом.- The current bitstream pointer is set to pointing to BitStreamTable[i] with index i output as follows.
i=(CtbAddrRS/PicWidthInCtbs) % (num_substreams_minus1 + 1)i=(CtbAddrRS/PicWidthInCtbs) % (num_substreams_minus1 + 1)
- Иначе, если CtbAddrRS % PicWidthInCtbs равен 2, процесс запоминания процесса синтаксического анализа CABAC вызывается так, как задается в подпункте «Процесс запоминания для контекстных переменных».- Else, if CtbAddrRS % PicWidthInCtbs is equal to 2, the CABAC parsing process store process is invoked as specified in the Memory Process for Context Variables subclause.
Процесс инициализации может быть следующим:The initialization process can be as follows:
Выходы этого процесса инициализируются внутренними переменными CABAC.The outputs of this process are initialized by CABAC internal variables.
Его специальные процессы вызываются при начале синтаксического анализа данных слайса в слайсе, или при начале синтаксического анализа данных дерева кодирования, и деревом кодирования является первое дерево кодирования в тайле.Its special processes are called when parsing slice data in a slice starts, or when parsing encoding tree data starts, and the encoding tree is the first encoding tree in a tile.
Процесс запоминания для контекстных переменных может быть следующим:The memorization process for context variables can be as follows:
Входами этого процесса являются контекстные переменные CABAC, индексированные посредством ctxIdx.The inputs to this process are CABAC context variables indexed by ctxIdx.
Выходом этого процесса являются переменные TableStateSync и TableMPSSync, содержащие значения переменных m и n, используемых в процессе инициализации контекстных переменных, которые назначаются синтаксическим элементам за исключением флага окончания слайса.The output of this process is the TableStateSync and TableMPSSync variables containing the values of the m and n variables used in the process of initializing the context variables that are assigned to the syntax elements, except for the end-of-slice flag.
Для каждой контекстной переменной соответствующие элементы n и m таблиц TableStateSync и TableMPSSync инициализируются до соответствующих pStateIdx и valMPS.For each context variable, the corresponding elements n and m of the TableStateSync and TableMPSSync tables are initialized to the corresponding pStateIdx and valMPS.
Процесс синхронизации для контекстных переменных может быть следующим:The synchronization process for context variables can be as follows:
Входами этого процесса являются переменные TableStateSync и TableMPSSync, содержащие значения переменных n и m, используемых в процессе запоминания контекстных переменных, которые назначаются синтаксическим элементам за исключением флага окончания слайса.The inputs to this process are the variables TableStateSync and TableMPSSync containing the values of the variables n and m used in the process of storing the context variables that are assigned to the syntax elements, except for the slice end flag.
Выходами этого процесса являются контекстные переменные CABAC, индексируемые посредством ctxIdx.The outputs of this process are CABAC context variables indexed by ctxIdx.
Для каждой контекстной переменной соответствующие контекстные переменные pStateIdx и valMPS инициализируются до соответствующих элементов n и m таблиц TableStateSync и TableMPSSync.For each context variable, the corresponding context variables pStateIdx and valMPS are initialized to the corresponding elements n and m of the TableStateSync and TableMPSSync tables.
Ниже объясняется кодирование и транспортировка с малой задержкой с использование WPP. В частности, описание ниже показывает, как транспортировка с малой задержкой, как описано на фиг.7, также может быть применена к WPP.The following explains low-latency encoding and transport using WPP. In particular, the description below shows how low latency transport as described in FIG. 7 can also be applied to WPP.
Сначала, важно, что может быть послан поднабор изображения, перед завершением всего изображения. Нормально, что это достигается с использованием слайсов, как уже показано на фиг.5.First, it is important that a subset of the image can be sent before the entire image is completed. Normally, this is achieved using slices, as already shown in Fig.5.
Чтобы уменьшить задержку по сравнению с тайлами, как показано на следующих фигурах, необходимо применить единственный подпоток WPP на строку LCU и дополнительно предоставить возможность отдельной передачи каждой из этих строк. Чтобы сохранить высокой эффективность кодирования, не могут использоваться слайсы на каждую строку/подпоток. Поэтому, ниже вводятся так называемый зависимый слайс, определенный в следующем разделе. Этот слайс, например, не имеет все поля полного заголовка слайса HEVC, но поля, используемые для энтропийных слайсов. Кроме того, может быть переключатель для отключения разрыва CABAC между строками. В случае WPP, использование контекста CABAC (стрелки на фиг.14) и предсказание строк должно быть разрешено, чтобы сохранить выигрыш в эффективности кодирования WPP над тайлами.To reduce latency compared to tiles, as shown in the following figures, it is necessary to apply a single WPP subflow per LCU row and additionally allow each of these rows to be transmitted separately. To keep encoding efficiency high, slices per line/substream cannot be used. Therefore, the so-called dependent slice defined in the next section is introduced below. This slice, for example, does not have all the fields of the full HEVC slice header, but the fields used for entropy slices. Also, there may be a switch to disable the CABAC break between lines. In the case of WPP, the use of the CABAC context (arrows in FIG. 14) and row prediction must be enabled in order to maintain the WPP coding efficiency gain over tiles.
В частности, фиг.14 приводит в качестве примера изображение 10 для WPP в регулярный слайс 900 (reg. SL), и для обработки с малой задержкой в зависимые слайсы (OS) 920.In particular, FIG. 14 exemplifies an
В настоящее время предстоящий стандарт HEVC предлагает два типа разбиения в отношении слайсов. Имеется регулярный (нормальный) слайс и энтропийный слайс. Регулярный слайс представляет собой полностью независимое разбиение изображения за исключением некоторых зависимостей, которые могут быть доступны из-за процесса деблокирующего фильтра на границах слайса. Энтропийный слайс также является независимым, но только в отношении энтропийного кодирования. Идеей фиг.14 является обобщение принципа формирования слайсов. Таким образом, предстоящий стандарт HEVC должен предлагать два общих типа слайсов: независимый (регулярный) или зависимый. Поэтому, вводится новый тип слайса, зависимый слайс.Currently, the forthcoming HEVC standard proposes two types of partitioning in relation to slices. There is a regular (normal) slice and an entropy slice. A regular slice is a completely independent slice of an image, with the exception of some dependencies that may be exposed due to the deblocking filter process on slice boundaries. Entropy slice is also independent, but only with respect to entropy coding. The idea of Fig. 14 is a generalization of the principle of slice formation. Thus, the upcoming HEVC standard should offer two general types of slices: independent (regular) or dependent. Therefore, a new type of slice is introduced, the dependent slice.
Зависимый слайс представляет собой слайс, который имеет зависимости с предыдущим слайсом. Зависимости представляют собой конкретные данные, которые могут использоваться между слайсами в процессе энтропийного декодирования и/или в процессе восстановления пикселей.A dependent slice is a slice that has dependencies on a previous slice. Dependencies are specific data that can be used between slices in the entropy decoding process and/or in the pixel reconstruction process.
На фиг.14 в качестве примера представлен принцип зависимых слайсов. Изображение начинается, например, всегда с регулярного слайса. Отметьте, что в данном принципе незначительно изменено поведение регулярного слайса. Обычно, в стандартах, подобных H.264/AVC или HEVC регулярный слайс представляет собой полностью независимое разбиение и нет необходимости сохранять никакие данные после декодирования за исключением некоторых данных для процесса деблокирующего фильтра. Но обработка предстоящего зависимого слайса 920 возможна только посредством ссылки на данные слайса выше, в данном случае в первой строке: регулярного слайса 900. Для установления этого регулярные слайсы 900 должны сохранять данные последней CU-строки.14 shows the principle of dependent slices as an example. The image starts, for example, always with a regular slice. Note that the behavior of a regular slice is slightly modified in this principle. Typically, in standards like H.264/AVC or HEVC, a regular slice is a completely independent slice and there is no need to store any data after decoding except for some data for the deblocking filter process. But the processing of the upcoming
Эти данные содержат:This data contains:
- данные механизма кодирования CABAC (состояния контекстной модели одной CU, из которой может инициализироваться процесс энтропийного декодирования зависимого слайса),- data of the CABAC coding mechanism (the state of the context model of one CU, from which the dependent slice entropy decoding process can be initialized),
- все декодируемые синтаксические элементы CU для регулярного процесса декодирования CABAC зависимых CU,- all decodable CU syntax elements for the regular CABAC decoding process of dependent CUs,
- данные внутреннего предсказания и предсказания вектора движения.- intra prediction and motion vector prediction data.
Следовательно, каждый зависимый слайс 920 должен выполнять одну и ту же процедуру - сохранять данные для предстоящего зависимого слайса в этом же изображении.Therefore, each
На практике эти дополнительные этапы не должны быть проблемой, так как процесс декодирования, обычно, всегда вынужден сохранять некоторые данные, подобные синтаксическим элементам.In practice, these additional steps should not be a problem, since the decoding process is usually always forced to store some data like syntax elements.
В разделах ниже представлены возможные изменения для синтаксиса стандарта HEVC, которые необходимы, чтобы сделать возможным принцип зависимых слайсов.The sections below present possible changes to the syntax of the HEVC standard that are necessary to make the dependent slice principle possible.
Фиг.5, например, иллюстрирует возможные изменения в синтаксисе RBSP набора параметров изображения.5, for example, illustrates possible changes to the RBSP syntax of a picture parameter set.
Семантика набора параметров изображения для зависимых слайсов может быть следующая:The semantics of a set of image parameters for dependent slices can be as follows:
dependent_slices_present_flag равный 1 задает, что изображение содержит зависимые слайсы, и процесс декодирования каждого (регулярного или зависимого) слайса должен сохранять состояния энтропийного декодирования и данные внутреннего предсказания и предсказания вектора движения для следующего слайса, который может быть зависимым слайсом, который также может следовать за регулярным слайсом. Следующий зависимый слайс может ссылаться на эти сохраненные данные. dependent_slices_present_flag equal to 1 specifies that the picture contains dependent slices, and the decoding process of each (regular or dependent) slice shall store entropy decoding states and intra-prediction and motion-vector prediction data for the next slice, which may be a dependent slice, which may also follow a regular slice. The next dependent slice can refer to this stored data.
Фиг.16 изображает возможный синтаксис slice_header с изменениями относительно текущего состояния HEVC.Fig.16 depicts a possible slice_header syntax with changes relative to the current state of HEVC.
dependent_slice_flag равный 1 задает, что подразумевается, что значение не присутствующих синтаксических элементов заголовка слайса равно значению синтаксических элементов заголовка слайса в предшествующем (регулярном) слайсе, где предшедший слайс определяется как слайс, содержащий блок дерева кодирования с расположением (SliceCtbAddrRS - 1). dependent_slice_flag должен быть равен 0, когда SliceCtbAddrRS равен 0. dependent_slice_flag equal to 1 specifies that the value of the slice header syntax elements not present is assumed to be equal to the value of the slice header syntax elements in the preceding (regular) slice, where the preceding slice is defined as the slice containing the coding tree block with location (SliceCtbAddrRS - 1). dependent_slice_flag must be 0 when SliceCtbAddrRS is 0.
no_cabac_reset_flag равный 1 задает инициализацию CABAC из сохраненного состояния ранее декодированного слайса (и без первоначальных значений). Иначе, т.е. если равен 0, инициализация CABAC независимая от любого состояния ранее декодированного слайса, т.е. с первоначальными значениями. no_cabac_reset_flag equal to 1 specifies initialization of CABAC from the saved state of the previously decoded slice (and without the original values). Otherwise, i.e. if equal to 0, CABAC initialization is independent of any state of the previously decoded slice, i.e. with original values.
last_ctb_cabac_init_flag равный 1 задает инициализацию CABAC из сохраненного состояния последнего кодированного блока дерева ранее декодированного слайса (например, для тайлов всегда равных 1). Иначе, (равный 0) на данные инициализации ссылаются из сохраненного состояния второго кодированного блока дерева последнего (соседнего) ctb-row ранее декодированного слайса, если первым кодированным блоком дерева текущего слайса является первый кодированный блок дерева в строке (т.е. режим WPP), иначе инициализация CABAC выполняется из сохраненного состояния последнего кодированного блока дерева ранее декодированного слайса. last_ctb_cabac_init_flag equal to 1 specifies initialization of CABAC from the saved state of the last encoded tree block of the previously decoded slice (for example, for tiles always equal to 1). Otherwise, (equal to 0) the initialization data is referenced from the saved state of the second encoded tree block of the last (adjacent) ctb-row previously decoded slice if the first encoded tree block of the current slice is the first encoded tree block in the row (i.e. WPP mode) , otherwise CABAC initialization is performed from the saved state of the last encoded tree block of the previously decoded slice.
Ниже представлено сравнение зависимых слайсов и других схем (информационных) разбиения.Below is a comparison of dependent slices and other (informational) partitioning schemes.
На фиг.17 показана разность между нормальным и зависимым слайсами.17 shows the difference between normal and dependent slices.
Возможное кодирование и передача подпотоков WPP в зависимых слайсах (DS), как показано в отношении фиг.18, сравнивает кодирование для транспортировки с малой задержкой тайлов (слева) и WPP/DS (справа). Жирные непрерывно начерченные кресты на фиг.18 изображают один и тот же момент времени для двух способов, предполагая, что кодирование строки WPP занимает такое же время, что и кодирование единственного тайла. Вследствие зависимостей кодирования только первая строка WPP готова, после того как все тайлы были кодированы. Но используя подход зависимого слайса позволяет подходу WPP отсылать первую строку, если она кодирована. Это отличается от более ранних назначений подпотока WPP, «подпоток» определяется для WPP как сцепление строк CU слайса для декодирования WPP одним и тем же потоком декодера, т.е. одним и тем же ядром/процессором. Хотя подпоток на строку и на энтропийный слайс также был возможен ранее, энтропийный слайс нарушает зависимости энтропийного кодирования и имеет, поэтому, более низкую эффективность кодирования, т.е. теряется выигрыш эффективности WPP.Possible coding and transmission of WPP substreams in dependent slices (DS), as shown with respect to FIG. 18, compares coding for low latency tile transport (left) and WPP/DS (right). The bold continuous crosses in FIG. 18 represent the same point in time for the two methods, assuming that encoding a WPP line takes the same time as encoding a single tile. Due to encoding dependencies, only the first WPP line is ready after all tiles have been encoded. But using the dependent slice approach allows the WPP approach to send the first row if it is encoded. This differs from earlier WPP substream assignments, a "substream" is defined for WPP as concatenation of slice CU rows for WPP decoding by the same decoder stream, i.e. the same core/processor. Although substreaming per row and per entropy slice was also possible previously, entropy slice violates entropy encoding dependencies and therefore has lower encoding efficiency, i.e. the WPP efficiency gain is lost.
Дополнительно, разность задержек между обоими подходами может быть реально низкой, предполагая передачу, как показано на фиг.19. В частности, фиг.19 изображает кодирование WPP с конвейерной передачей с малой задержкой.Additionally, the delay difference between both approaches can be really low, assuming a transmission as shown in FIG. In particular, FIG. 19 depicts low latency pipelining WPP coding.
Предполагая, что кодирование последних двух CU из DS #1.1 в подходе WPP на фиг. 18 не занимает больше времени, чем передача первой строки SL#1, нет различия между тайлами и WPP в случае малой задержки. Но эффективность кодирования WP/DS превосходит принцип тайлов.Assuming that the coding of the last two CUs from DS #1.1 in the WPP approach of FIG. 18 does not take longer than the transmission of the first line of
Чтобы повысить робастность для режима WPP с малой задержкой, фиг.20 иллюстрирует, что повышение робастности достигается посредством использования регулярных слайсов (RS) в качестве привязок. В изображении, показанном на фиг.20, за (регулярным) слайсом (RS) следуют зависимые слайсы (DS). В данном случае, (регулярный) слайс действует в качестве привязки для нарушения зависимостей для предшествующих слайсов, следовательно, обеспечивается большая робастность в такой точке вставки (регулярного) слайса. В принципе, это не отличается от вставки (регулярного) слайса в любом случае.To improve robustness for low latency WPP mode, FIG. 20 illustrates that robustness enhancement is achieved by using regular slices (RS) as anchors. In the image shown in FIG. 20, a (regular) slice (RS) is followed by dependent slices (DS). In this case, the (regular) slice acts as a dependency breaking anchor for the previous slices, hence more robustness is provided at such insertion point of the (regular) slice. Basically, this is no different from inserting a (regular) slice anyway.
Принцип зависимых слайсов также может быть реализован следующим образом.The principle of dependent slices can also be implemented in the following way.
В данном случае, фиг.21 изображает возможный синтаксис заголовка слайса.In this case, FIG. 21 shows a possible slice header syntax.
Семантика заголовка слайса является следующей:The semantics of the slice header is as follows:
dependent_slice_flag равный 1 задает, что подразумевается, что значение каждого не присутствующего синтаксического элемента заголовка слайса равно значению соответствующего синтаксического элемента заголовка слайса в предшествующем слайсе, содержащем блок дерева кодирования, для которого адресом блока дерева кодирования является SliceCtbAddrRS - 1. Когда не присутствует, подразумевается, что значение dependent_slice_flag равно 0. Значение dependent_slice_flag должно быть равно 0, когда SliceCtbAddrRS равно 0. dependent_slice_flag equal to 1 specifies that the value of each not present slice header syntax element is assumed to be equal to the value of the corresponding slice header syntax element in the preceding slice containing the coding tree block for which the coding tree block address is SliceCtbAddrRS - 1. When not present, it is implied that that the value of dependent_slice_flag is 0. The value of dependent_slice_flag shall be 0 when SliceCtbAddrRS is 0.
slice_address задает адрес в разрешении степени детализации слайса, в котором начинается слайс. Длина синтаксического элемента slice_address равна (Ceil(Log2(PicWidthInCtbs * PicHeightInCtbs)) + SliceGranularity) битам. slice_address specifies the address in slice granularity resolution at which the slice begins. The length of the slice_address syntax element is (Ceil(Log2(PicWidthInCtbs * PicHeightInCtbs)) + SliceGranularity) bits.
Переменная SliceCtbAddrRS, задающая блок дерева кодирования, в котором начинается слайс, в порядке сканирования растра блока дерева кодирования, выводится следующим образом.The SliceCtbAddrRS variable specifying the coding tree block in which the slice starts, in the coding tree block raster scan order, is output as follows.
SliceCtbAddrRS = (slice_address >> SliceGranularitySliceCtbAddrRS = (slice_address >> SliceGranularity
Переменная SliceCbAddrZS, задающая адрес первого блока кодирования в слайсе с минимальной степенью детализации блока кодирования в порядке z-образного сканирования, выводится следующим образом.The SliceCbAddrZS variable specifying the address of the first coding block in the slice with the minimum coding block granularity in z-scan order is output as follows.
Декодирование слайса начинается с наибольшей возможной единицы кодирования, или, иначе, CTU, на координате начала слайса.Slice decoding starts with the largest possible coding unit, or CTU, at the slice start coordinate.
first_slice_in_pic_flag указывает, является ли слайс первым слайсом изображения. Если first_slice_in_pic_flag равен 1, переменные SliceCbAddrZS и SliceCtbAddrRS обе устанавливаются на 0, и декодирование начинается с первого блока дерева кодирования в изображении. first_slice_in_pic_flag indicates whether the slice is the first slice of an image. If first_slice_in_pic_flag is equal to 1, the variables SliceCbAddrZS and SliceCtbAddrRS are both set to 0, and decoding starts from the first coding tree block in the picture.
pic_parameter_set_id задает используемый набор параметров изображения. Значение pic_parameter_set_id должно быть в диапазоне от 0 до 255 включительно. pic_parameter_set_id specifies the image parameter set to use. The value of pic_parameter_set_id must be between 0 and 255 inclusive.
num_entry_point_offsets задает количество синтаксических элементов entry_point_offset[i] в заголовке слайса. Когда tiles_or_entropy_coding_sync_idc равен 1, значение num_entry_point_offsets должно быть в диапазоне от 0 до (num_tile_columns_minus1 + 1) * (num_tile_rows_minus1 + 1) - 1 включительно. Когда tiles_or_entropy_coding_sync_idc равен 2, значение num_entry_point_offsets должно быть в диапазоне от 0 до PicHeightInCtbs - 1 включительно. Когда не присутствует, подразумевается, что значение num_entry_point_offsets равно 0. num_entry_point_offsets specifies the number of entry_point_offset[i] syntax elements in the slice header. When tiles_or_entropy_coding_sync_idc is 1, num_entry_point_offsets must be in the
offset_len_minus1 плюс 1 задает длину в битах синтаксических элементов entry_point_offset[i]. offset_len_minus1 plus 1 specifies the length in bits of entry_point_offset[i] syntax elements.
entry_point_offset[i] задает i-ое смещение точки входа в байтах и должно быть представлено посредством offset_len_minus1 плюс 1 битов. Кодированные данные слайса после заголовка слайса состоят из num_entry_point_offsets + 1 поднаборов, причем значения индекса поднабора находятся в диапазоне от 0 до num_entry_point_offsets включительно. Поднабор 0 состоит из байтов 0 - entry_point_offset[0] - 1 включительно кодированных данных слайса, поднабор k, причем k в диапазоне от 1 до num_entry_point_offsets - 1 включительно, состоит из байтов с entry_point_offset[k-1] до entry_point_offset[k] + entry_point_offset[k-1] - 1 включительно, кодированных данных слайса, и последний поднабор (с индексом поднабора равным num_entry_point_offsets) состоит из оставшихся байтов кодированных данных слайса. entry_point_offset [i] specifies the i-th entry point offset in bytes and shall be represented by offset_len_minus1 plus 1 bits. The encoded slice data after the slice header consists of num_entry_point_offsets + 1 subsets, with subset index values ranging from 0 to num_entry_point_offsets inclusive.
Когда tiles_or_entropy_coding_sync_idc равен 1, и num_entry_point_offsets больше 0, каждый поднабор должен содержать все кодированные биты точно одного тайла, и количество поднаборов (т.е. значение num_entry_point_offsets + 1) должно быть равно или меньше количества тайлов в слайсе.When tiles_or_entropy_coding_sync_idc is 1 and num_entry_point_offsets is greater than 0, each subset must contain all encoded bits of exactly one tile, and the number of subsets (i.e., the value of num_entry_point_offsets + 1) must be equal to or less than the number of tiles in the slice.
ПРИМЕЧАНИЕ - Когда tiles_or_entropy_coding_sync_idc равен 1, каждый слайс должен включать в себя или поднабор из одного тайла (в этом случае является необязательной сигнализация точек входа) или целочисленное количество полных тайлов.NOTE – When tiles_or_entropy_coding_sync_idc is 1, each slice must include either a subset of a single tile (in which case entry point signaling is optional) or an integer number of full tiles.
Когда tiles_or_entropy_coding_sync_idc равен 2, и num_entry_point_offsets больше 0, каждый поднабор k с k в диапазоне от 0 до num_entry_point_offsets - 1 включительно, должен включать в себя все кодированные биты точно одной строки блоков дерева кодирования, последний поднабор (с индексом поднабора равным num_entry_point_offsets) должен содержать все кодированные биты остальных блоков кодирования, включенных в слайс, в котором остальные блоки кодирования состоят или из точно одной строки блоков дерева кодирования, или из поднабора одной строки блоков дерева кодирования, и количество поднаборов (т.е. значение num_entry_point_offsets + 1) должно быть равно количеству строк блоков дерева кодирования в слайсе, в котором также подсчитывается поднабор из одной строки блоков дерева кодирования в слайсе.When tiles_or_entropy_coding_sync_idc is equal to 2 and num_entry_point_offsets is greater than 0, each subset k with k in the
ПРИМЕЧАНИЕ Когда tiles_or_entropy_coding_sync_idc равен 2, слайс может включать в себя количество строк блоков дерева кодирования и поднабор строки блоков дерева кодирования. Например, если слайс включает в себя две с половиной строки блоков дерева кодирования, количество поднаборов (т.е. значение num_entry_point_offsets + 1) должно быть равно 3.NOTE When tiles_or_entropy_coding_sync_idc is 2, a slice may include a number of coding tree block lines and a subset of a coding tree block line. For example, if a slice includes two and a half lines of coding tree blocks, the number of subsets (i.e. num_entry_point_offsets + 1) should be 3.
Соответствующий синтаксис RBSP набора параметров изображения может выбираться так, как показано на фиг.22.The corresponding picture parameter set RBSP syntax may be selected as shown in FIG.
Семантика RBSP набора параметров изображения может быть следующей:The semantics of an RBSP image parameter set can be as follows:
dependent_slice_enabled_flag равный 1 задает присутствие синтаксического элемента dependent_slice_flag в заголовке слайса для кодируемых изображений, ссылающихся на набор параметров изображения. dependent_slice_enabled_flag равный 0 задает отсутствие синтаксического элемента dependent_slice_flag в заголовке слайса для кодируемых изображений, ссылающихся на набор параметров изображения. Когда tiles_or_entropy_coding_sync_idc равен 3, значение dependent_slice_enabled_flag должно быть равно 1. dependent_slice_enabled_flag equal to 1 specifies the presence of the dependent_slice_flag syntax element in the slice header for encoded pictures referring to a picture parameter set. dependent_slice_enabled_flag equal to 0 specifies the absence of the dependent_slice_flag syntax element in the slice header for encoded pictures referring to a picture parameter set. When tiles_or_entropy_coding_sync_idc is 3, dependent_slice_enabled_flag must be 1.
tiles_or_entropy_coding_sync_idc равный 0 задает, что должен быть только один тайл в каждом изображении, ссылающемся на набор параметров изображения, не должно быть конкретного процесса синхронизации для контекстных переменных, вызываемых перед декодированием первого блока дерева кодирования строки блоков дерева кодирования в каждом видеокадре, ссылающемся на набор параметров изображения, и значения cabac_independent_flag и dependent_slice_flag для кодируемых изображений, ссылающихся на набор параметров изображения, не должны быть оба равны 1. tiles_or_entropy_coding_sync_idc equal to 0 specifies that there should be only one tile in each image referring to a picture parameter set, there should not be a specific synchronization process for context variables called before decoding the first coding tree block of a string of coding tree blocks in each video frame referencing a parameter set image, and the cabac_independent_flag and dependent_slice_flag values for encoded images referring to a picture parameter set must not both be equal to 1.
Отметьте, что, когда cabac_independent_flag и dependent_slice_flag оба равны 1 для слайса, слайсом является энтропийный слайс.Note that when cabac_independent_flag and dependent_slice_flag are both equal to 1 for a slice, the slice is an entropy slice.
tiles_or_entropy_coding_sync_idc равный 1 задает, что может быть более одного тайла в каждом изображении, ссылающемся на набор параметров изображения, не должно быть конкретного процесса синхронизации для контекстных переменных, вызываемых перед декодированием первого блока дерева кодирования строки блоков дерева кодирования в каждом изображении, ссылающемся на набор параметров изображения, и значения cabac_independent_flag и dependent_slice_flag для кодируемых изображений, ссылающихся на набор параметров изображения, не должны оба быть равны 1.tiles_or_entropy_coding_sync_idc equal to 1 specifies that there can be more than one tile in each image referencing an image parameter set, there should not be a specific synchronization process for context variables called before decoding the first coding tree block of a string of coding tree blocks in each image referencing an attribute set images, and the cabac_independent_flag and dependent_slice_flag values for encoded images referring to a picture parameter set must not both be equal to 1.
tiles_or_entropy_coding_sync_idc равный 2 задает, что должен быть только один тайл в каждом изображении, ссылающемся на набор параметров изображения, конкретный процесс синхронизации для контекстных переменных должен вызываться перед декодированием первого блока дерева кодирования строки блоков дерева кодирования в каждом изображении, ссылающемся на набор параметров изображения, и конкретный процесс запоминания для контекстных переменных должен вызываться после декодирования двух блоков дерева кодирования строки блоков дерева кодирования в каждом изображении, ссылающемся на набор параметров изображения, и значения cabac_independent_flag и dependent_slice_flag для кодируемых изображений, ссылающихся на набор параметров изображения, не должны быть оба равными 1.tiles_or_entropy_coding_sync_idc equal to 2 specifies that there should be only one tile in each image referring to a picture parameter set, a specific synchronization process for context variables must be called before decoding the first coding tree block of a string of coding tree blocks in each image referencing a picture parameter set, and a specific memory process for context variables shall be invoked after decoding two coding tree blocks of a line of coding tree blocks in each picture referring to a picture parameter set, and cabac_independent_flag and dependent_slice_flag values for encoded pictures referring to a picture parameter set shall not both be equal to 1.
tiles_or_entropy_coding_sync_idc равный 3 задает, что должен быть только один тайл в каждом изображении, ссылающемся на набор параметров изображения, не должно быть конкретного процесса синхронизации для контекстных переменных, вызываемого перед декодированием первого блока дерева кодирования строки блоков дерева кодирования в каждом изображении, ссылающемся на набор параметров изображения, и значения cabac_independent_flag и dependent_slice_flag для кодируемых изображений, ссылающихся на набор параметров изображения, оба могут быть равны 1.tiles_or_entropy_coding_sync_idc equal to 3 specifies that there should be only one tile in each image referring to a picture parameter set, there should not be a specific synchronization process for context variables called before decoding the first coding tree block of a string of coding tree blocks in each image referencing a parameter set picture, and cabac_independent_flag and dependent_slice_flag values for encoded pictures referring to a picture parameter set may both be equal to 1.
Когда dependent_slice_enabled_flag должен быть равен 0, tiles_or_entropy_coding_sync_idc не должен быть равен 3.When dependent_slice_enabled_flag must be 0, tiles_or_entropy_coding_sync_idc must not be 3.
Требованием соответствия битовых потоков является то, что значение tiles_or_entropy_coding_sync_idc должно быть одинаковым для всех наборов параметров изображения, которые активизируются в кодированной видеопоследовательности.The bitstream conformance requirement is that the value of tiles_or_entropy_coding_sync_idc must be the same for all picture parameter sets that are activated in the encoded video sequence.
Для каждого слайса, ссылающегося на набор параметров изображения, когда tiles_or_entropy_coding_sync_idc равен 2, и первым блоком кодирования в слайсе не является первый блок кодирования в первом блоке дерева кодирования строки блоков дерева кодирования, последний блок кодирования в слайсе должен принадлежать этой же строке блоков дерева кодирования, что и первый блок кодирования в слайсе.For each slice referring to a picture parameter set, when tiles_or_entropy_coding_sync_idc is 2 and the first coding block in the slice is not the first coding block in the first coding tree block of a coding tree block line, the last coding block in the slice must belong to the same coding tree block line, as the first coding block in the slice.
num_tile_columns_minus1 плюс 1 задает количество столбцов тайла, разбивающих изображение. num_tile_columns_minus1 plus 1 specifies the number of tile columns that split the image.
num_tile_rows_minus1 плюс 1 задает количество строк тайла, разбивающих изображение. num_tile_rows_minus1 plus 1 specifies the number of tile rows that split the image.
Когда num_tile_columns_minus1 равен 0, num_tile_rows_minus1 не должен быть равен 0. uniform_spacing_flag равный 1 задает, что границы столбцов и, аналогично, границы строк распределяются равномерно по изображению, uniform_spacing_flag равный 0 задает, что границы столбцов и, аналогично, границы строк не распределяются равномерно по изображению, но сигнализируются явно с использованием синтаксических элементов column_width[i] и row_height[i].When num_tile_columns_minus1 is 0, num_tile_rows_minus1 must not be 0. uniform_spacing_flag equal to 1 specifies that column borders and likewise row borders are spaced evenly across the image, uniform_spacing_flag equal to 0 specifies that column borders and likewise row borders are not evenly spaced across the image , but signaled explicitly using the column_width[i] and row_height[i] syntax elements.
column_width[i] задает ширину i-ого столбца тайла в единицах блоков дерева кодирования. column_width [i] specifies the width of the i-th tile column in coding tree block units.
row_height[i] задает высоту i-ой строки тайла в единицах блоков дерева кодирования. row_height [i] sets the height of the i-th row of the tile in units of coding tree blocks.
Вектор colWidth[i] задает ширину i-ого столбца тайла в единицах блока дерева кодирования (CTB), при этом столбец i находится в диапазоне от 0 до num_tile_columns_minus1 включительно.The colWidth[i] vector specifies the width of the i-th tile column in coding tree block (CTB) units, with column i ranging from 0 to num_tile_columns_minus1 inclusive.
Вектор CtbAddrRStoTS[ctbAddrRS] задает диалоговый режим от адреса CTB в порядке сканирования растра к адресу CTB в порядке сканирования тайла, при этом индекс ctbAddrRS находится в диапазоне от 0 до (picHeightInCtbs*picWidthInCtbs)-1 включительно.The vector CtbAddrRStoTS[ctbAddrRS] specifies the interactive mode from CTB address in raster scan order to CTB address in tile scan order, with the ctbAddrRS index ranging from 0 to (picHeightInCtbs*picWidthInCtbs)-1 inclusive.
Вектор CtbAddrTStoRS[ctbAddrTS] задает диалоговый режим от адреса CTB в порядке сканирования тайла к адресу CTB в порядке сканирования растра, при этом индекс ctbAddrRS находится в диапазоне от 0 до (picHeightInCtbs*picWidthInCtbs)-1 включительно.The vector CtbAddrTStoRS[ctbAddrTS] specifies the interactive mode from CTB address in tile scan order to CTB address in raster scan order, with the ctbAddrRS index ranging from 0 to (picHeightInCtbs*picWidthInCtbs)-1 inclusive.
Вектор TileId[ctbAddrTS] задает диалоговый режим от адреса CTB в порядке сканирования тайла к id тайла, при этом ctbAddrTS находится в диапазоне от 0 до (picHeightInCtbs*picWidthInCtbs)-1 включительно.The TileId[ctbAddrTS] vector specifies the interactive mode from the CTB address in tile scan order to the tile id, with ctbAddrTS ranging from 0 to (picHeightInCtbs*picWidthInCtbs)-1 inclusive.
Значения colWidth, CtbAddrRStoTS, CtbAddrTStoRS и TileId выводятся посредством вызова процесса диалогового режима сканирования растра и тайла CTB с PicHeightInCtbs и PicWidthInCtbs в качестве входов, и выход назначается colWidth, CtbAddrRStoTS и TileId.The values of colWidth, CtbAddrRStoTS, CtbAddrTStoRS, and TileId are output by calling the CTB raster and tile scan dialog process with PicHeightInCtbs and PicWidthInCtbs as inputs, and the output is assigned to colWidth, CtbAddrRStoTS, and TileId.
Значения ColumnWidthInLumaSamples[i], задающие ширину i-ого столбца тайла в единицах отсчетов яркости, устанавливаются равными colWidth[i]<<Log2CtbSize.The ColumnWidthInLumaSamples[i] values that specify the width of the i-th tile column in units of brightness samples are set to colWidth[i]<<Log2CtbSize.
Массив MinCbAddrZS[x][y], задающий диалоговый режим от расположения (x,y) в единицах минимальных блоков кодирования (CB) к адресу минимального CB в порядке z-образного сканирования, при этом x находится в диапазоне от 0 до picWidthInMinCbs - 1 включительно, и y находится в диапазоне от 0 до picHeightInMinCbs - 1 включительно, выводится посредством вызова процесса инициализации массива порядка Z-образного сканирования с Log2MinCbSize, Log2CtbSize, PicHeightInCtbs, PicWidthInCtbs и вектором CtbAddrRStoTS в качестве входов, и выход назначается MinCbAddrZS.An array of MinCbAddrZS[x][y] specifying the conversational mode from the location (x,y) in units of the minimum coding blocks (CB) to the address of the minimum CB in z-scan order, with x ranging from 0 to picWidthInMinCbs - 1 inclusive, and y is in the
loop_filter_across_tiles_enabled_flag равный 1 задает, что операции петлевой фильтрации выполняются через границы тайлов. loop_filter_across_tiles_enabled_flag равный 0 задает, что операции петлевой фильтрации не выполняются через границы тайлов. Операции петлевой фильтрации включают в себя операции деблокирующего фильтра, адаптивного смещения отсчетов и адаптивного петлевого фильтра. Когда не присутствует, подразумевается, что значение loop_filter_across_tiles_enabled_flag равно 1. loop_filter_across_tiles_enabled_flag equal to 1 specifies that loop filtering operations are performed across tile boundaries. loop_filter_across_tiles_enabled_flag equal to 0 specifies that loop filtering operations are not performed across tile boundaries. The loop filtering operations include the deblocking filter, adaptive sample bias, and adaptive loop filter operations. When not present, loop_filter_across_tiles_enabled_flag is assumed to be 1.
cabac_independent_flag равный 1 задает, что декодирование CABAC блоков кодирования в слайсе является независимым от любого состояния ранее декодированного слайса. cabac_independent_flag равный 0 задает, что декодирование CABAC блоков кодирования в слайсе является зависимым от состояний ранее декодированного слайса. Когда не присутствует, подразумевается, что значение cabac_independent_flag равно 0. cabac_independent_flag equal to 1 specifies that the CABAC decoding of coding blocks in a slice is independent of any state of a previously decoded slice. cabac_independent_flag equal to 0 specifies that the CABAC decoding of the coding blocks in the slice is dependent on the states of the previously decoded slice. When not present, the value of cabac_independent_flag is assumed to be 0.
Процесс вывода для доступности блока кодирования с адресом минимального блока кодирования может быть следующим:The inference process for the availability of a coding block with the address of the minimum coding block can be as follows:
Входами для этого процесса являютсяThe inputs to this process are
- адрес минимального блока кодирования minCbAddrZS в порядке z-образного сканирования- address of the minimum coding block minCbAddrZS in z-scan order
- адрес текущего минимального блока кодирования currMinCBAddrZS в порядке z-образного сканирования- address of current minimum coding block currMinCBAddrZS in z-scan order
Выходом этого процесса является доступность блока кодирования с адресом минимального блока кодирования cbAddrZS в порядке z-образного сканирования cbAvailable.The output of this process is the availability of an coding block with the address of the minimum coding block cbAddrZS in the z-scan order cbAvailable.
ПРИМЕЧАНИЕ 1 - Значение доступности определяется тогда, когда вызывается этот процесс.
ПРИМЕЧАНИЕ 2 - Любой блок кодирования, независимо от его размера, ассоциируется с адресом минимального блока кодирования, который представляет собой адрес блока кодирования с минимальным размером блока кодирования в порядке z-образного сканирования.
- Если одно или несколько из следующих условий являются верными, cbAvailable устанавливается на FALSE.- If one or more of the following conditions are true, cbAvailable is set to FALSE.
- minCbAddrZS меньше 0- minCbAddrZS less than 0
- minCbAddrZS больше currMinCBAddrZS- minCbAddrZS is greater than currMinCBAddrZS
- блок кодирования с адресом минимального блока кодирования minCbAddrZS принадлежит другому слайсу, чем блок кодирования с адресом текущего минимального блока кодирования currMinCBAddrZS, и dependent_slice_flag слайса, содержащего блок кодирования с адресом текущего минимального блока кодирования currMinCBAddrZS, равен 0.- the coding block with the address of the minimum coding block minCbAddrZS belongs to a different slice than the coding block with the address of the current minimum coding block currMinCBAddrZS, and the dependent_slice_flag of the slice containing the coding block with the address of the current minimum coding block currMinCBAddrZS is equal to 0.
- блок кодирования с адресом минимального блока кодирования minCbAddrZS содержится в другом тайле, чем блок кодирования с адресом текущего минимального блока кодирования currMinCBAddrZS.- the coding block with the address of the minimum coding block minCbAddrZS is contained in a different tile than the coding block with the address of the current minimum coding block currMinCBAddrZS.
- Иначе, cbAvailable устанавливается на TRUE.- Otherwise, cbAvailable is set to TRUE.
Процесс синтаксического анализа CABAC для данных слайса может быть следующим:The CABAC parsing process for slice data can be as follows:
Этот процесс вызывается при синтаксическом анализе некоторых синтаксических элементов с дескриптором ae(v).This process is invoked when parsing some syntax elements with descriptor ae(v).
Входами для этого процесса являются запрос значения синтаксического элемента и значений ранее синтаксически анализированных синтаксических элементов.The inputs to this process are a request for the value of a syntax element and the values of previously parsed syntax elements.
Выходом этого процесса является значение синтаксического элемента.The output of this process is the value of the syntax element.
Во время начала синтаксического анализа данных слайса в слайсе вызывается процесс инициализации процесса синтаксического анализа CABAC.At the start of parsing slice data in a slice, the initialization process of the CABAC parsing process is called.
Фиг.23 иллюстрирует, как пространственный соседний блок T используется для вызова процесса вывода доступности блока дерева кодирования относительно текущего блока дерева кодирования (информативный).23 illustrates how the spatial neighbor block T is used to invoke a coding tree block availability inference process relative to the current coding tree block (informative).
Адрес минимального блока кодирования блока дерева кодирования, содержащего пространственный соседний блок T (фиг.23), ctbMinCbAddrT, выводится с использованием расположения (x0,y0) верхнего-левого отсчета яркости текущего блока дерева кодирования следующим образом.The address of the minimum coding block of the coding tree block containing the spatial neighboring block T (FIG. 23), ctbMinCbAddrT, is derived using the location (x0,y0) of the top-left luma value of the current coding tree block as follows.
Переменная availableFlagT получается посредством вызова процесса вывода доступности блока кодирования с ctbMinCbAddrT в качестве входа.The availableFlagT variable is obtained by calling the coding block availability output process with ctbMinCbAddrT as input.
В начале синтаксического анализа заданного дерева кодирования применяются следующие упорядоченные этапы.At the start of parsing a given coding tree, the following ordered steps are applied.
Механизм арифметического декодирования инициализируется следующим образом.The arithmetic decoding engine is initialized as follows.
Если CtbAddrRS равен slice_address, dependent_slice_flag равен 1, и entropy_coding_reset_flag равен 0, применяется следующее.If CtbAddrRS is slice_address, dependent_slice_flag is 1, and entropy_coding_reset_flag is 0, the following applies.
Вызывается процесс синхронизации процесса синтаксического анализа CABAC с TableStateIdxDS и TableMPSValDS в качестве входа.The CABAC parser synchronization process is called with TableStateIdxDS and TableMPSValDS as input.
Вызывается процесс декодирования для двоичных решений перед завершением, за которым следует процесс инициализации для механизма арифметического декодирования.The decoding process for binary solutions is invoked before completion, followed by the initialization process for the arithmetic decoding engine.
Иначе, если tiles_or_entropy_coding_sync_idc равен 2, и CtbAddrRS % PicWidthInCtbs равен 0, применяется следующее.Otherwise, if tiles_or_entropy_coding_sync_idc is 2 and CtbAddrRS % PicWidthInCtbs is 0, the following applies.
Когда availableFlagT равен 1, вызывается процесс синхронизации процесса синтаксического анализа CABAC с TableStateIdxWPP и TableMPSValWPP в качестве входа.When availableFlagT is 1, the CABAC parser synchronization process is called with TableStateIdxWPP and TableMPSValWPP as input.
Вызывается процесс декодирования для двоичных решений перед завершением, за которым следует процесс для механизма арифметического декодирования.The decoding process for binary decisions is called before completion, followed by the process for the arithmetic decoding engine.
Когда cabac_independent_flag равен 0, и dependent_slice_flag равен 1, или когда tiles_or_entropy_coding_sync_idc равен 2, процесс запоминания применяется следующим образом.When cabac_independent_flag is 0 and dependent_slice_flag is 1, or when tiles_or_entropy_coding_sync_idc is 2, the learning process is applied as follows.
Когда tiles_or_entropy_coding_sync_idc равен 2, и CtbAddrRS % PicWidthInCtbs равен 2, процесс запоминания процесса синтаксического анализа CABAC вызывается с TableStateIdxWPP и TableMPSValWPP в качестве выхода.When tiles_or_entropy_coding_sync_idc is 2 and CtbAddrRS % PicWidthInCtbs is 2, the CABAC parsing process memory process is called with TableStateIdxWPP and TableMPSValWPP as output.
Когда cabac_independent_flag равен 0, dependent_slice_flag равен 1, и end_of_slice_flag равен 1, процесс запоминания процесса синтаксического анализа CABAC вызывается с TableStateIdxDS и TableMPSValDS в качестве выхода.When cabac_independent_flag is 0, dependent_slice_flag is 1, and end_of_slice_flag is 1, the CABAC parser process store process is called with TableStateIdxDS and TableMPSValDS as output.
Синтаксический анализ синтаксических элементов выполняется следующим образом:The parsing of syntax elements is done as follows:
Для каждого запрошенного значения синтаксического элемента выводится бинаризация.For each syntax element value requested, a binarization is output.
Бинаризация для синтаксического элемента и последовательности синтаксически анализированных бинов определяет поток процесса декодирования.The binarization for the syntax element and the sequence of parsed bins determines the flow of the decoding process.
Для каждого бина бинаризации синтаксического элемента, который индексируется переменной binIdx, выводится индекс контекста ctxIdx.For each syntax element binarization bin that is indexed by the binIdx variable, the context index ctxIdx is output.
Для каждого ctxIdx вызывается процесс арифметического декодирования.For each ctxIdx, the arithmetic decoding process is called.
Результирующая последовательность (b0…bbinIdx) синтаксически анализированных бинов сравнивается с набором строк бинов, определенных процессом бинаризации после декодирования каждого бина. Когда последовательность совпадает со строкой бинов в данном наборе, соответствующее значение назначается синтаксическому элементу.The resulting sequence (b0...bbinIdx) of the parsed bins is compared to the set of bin strings determined by the binarization process after each bin is decoded. When a sequence matches a string of bins in a given set, the corresponding value is assigned to the syntax element.
В случае, если запрос значения синтаксического элемента обрабатывается для синтаксического элемента pcm_flag, и декодированное значение pcm_flag равно 1, инициализируется механизм декодирования после декодирования любого pcm_alignment_zero_bit, num_subsequent_pcm и всех данных pcm_sample_luma и pcm_sample_chroma.In case a syntax element value request is processed for the pcm_flag syntax element and the decoded pcm_flag value is 1, the decoding engine is initialized after decoding any pcm_alignment_zero_bit, num_subsequent_pcm and all pcm_sample_luma and pcm_sample_chroma data.
Таким образом, вышеприведенное описание показывает декодер, изображенный на фиг.24. Этот декодер, который в целом обозначен ссылочной позицией 5, восстанавливает изображение 10 из потока 12 данных, в который изображение 10 кодировано в единицах слайсов 14, на которые разбито изображение 10, причем декодер 5 выполнен с возможностью декодирования слайсов 14 из потока 12 данных в соответствии с порядком 16 слайсов. Конечно, декодер 5 не ограничивается последовательным декодированием слайсов 14. Скорее, декодер 5 может использовать волновую параллельную обработку, чтобы декодировать слайсы 14, при условии, что разбиение изображения 10 на слайсы 14 соответствует волновой параллельной обработке. Следовательно, декодер 5, например, может представлять собой декодер, который способен декодировать слайсы 14 параллельно ступенчатым образом, начиная декодирование слайсов 14, принимая во внимание порядок 16 слайсов, чтобы сделать возможной волновую обработку, как было описано выше, и также описано ниже.Thus, the above description shows the decoder shown in Fig.24. This decoder, which is generally denoted by
Декодер 5 реагирует на участок 18 синтаксического элемента в текущем слайсе из слайсов 14, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере двух режимов 20 и 22. В соответствии с первым из упомянутых по меньшей мере двух режимов, а именно режимом 20, текущий слайс декодируется из потока 12 данных, используя контекстно-адаптивное энтропийное декодирование, включающее в себя вывод контекста через границы слайсов, т.е. через пунктирные линии на фиг.24, т.е. посредством использования информации, происходящей из кодирования/декодирования других «предшествующих слайсов в порядке 16 слайсов». Кроме того, декодирование текущего слайса из потока 12 данных, используя первый режим 20, содержит непрерывное обновление вероятностей символа кодека и инициализацию вероятностей символа в начале декодирования текущего слайса, который зависит от сохраненных состояний вероятностей символа ранее декодированного слайса. Такая зависимость была описана выше, например, в связи с «процессом синхронизации для переменных кодека». Наконец, первый режим 20 также включает в себя декодирование с предсказанием через границы слайсов. Такое декодирование с предсказанием через границы слайсов, например, может включать в себя внутреннее предсказание через границы слайсов, т.е. предсказание значений отсчетов в текущем слайсе на основе уже восстановленных значений отсчетов «порядка 16 в слайсе», предшествующего слайса или предсказания параметров кодирования через границы слайсов, такого как предсказание векторов движения, режимов предсказания, режимов кодирования или т.п.
В соответствии со вторым режимом 22 декодер 5 декодирует текущий слайс, т.е. слайс, в настоящий момент подлежащий декодированию, из потока 12 данных, используя контекстно-адаптивное энтропийное декодирование с ограничением, однако, вывода контекстов, чтобы не пересекать границы слайсов. Если когда-либо, например, шаблон соседних положений, используемый для вывода контекста для некоторого синтаксического элемента, относящегося к блоку в текущем слайсе, простирается в соседний слайс, таким образом пересекая границу слайсов текущего слайса, соответствующий атрибут соответствующего участка соседнего слайса, такой как значение соответствующего синтаксического элемента этого соседнего участка соседнего слайса, устанавливается на значение по умолчанию, чтобы блокировать взаимозависимости между текущим слайсов и соседними слайсами. Хотя непрерывное обновление вероятностей символа контекстов может происходить точно так, как это имеет место в первом режиме 20, инициализация вероятностей символа во втором режиме 22 является независимой от любого раннего декодированного слайса. Кроме того, декодирование с предсказанием выполняется с ограничением декодирования с предсказанием, чтобы не пересекать границы слайсов.According to the
Чтобы облегчить понимание описания фиг.24 и последующего описания, ссылка делается на фиг.25, которая изображает возможную реализацию декодера 5 в более конструктивном смысле, чем по сравнению с фиг.24. Как это имеет место на фиг.24, декодер 5 представляет собой декодер с предсказанием, использующий контекстно-адаптивное энтропийное декодирование для декодирования потока данных, чтобы получить, например, остаток предсказания и параметры предсказания.To facilitate understanding of the description of FIG. 24 and the following description, reference is made to FIG. 25, which depicts a possible implementation of the
Как показано на фиг.25, декодер 5 может содержать энтропийный декодер 24, модуль 26 деквантования и обратного преобразования, объединитель 28, реализованный, как показано на фиг.25, например, в виде сумматора, и предсказатель 28. Энтропийный декодер 24, модуль 26 и сумматор 27 последовательно подсоединены между входом и выходом декодера 5 в порядке их упоминания, и предсказатель 28 подсоединен между выходом сумматора 28 и другим его входом, чтобы формировать петлю предсказания с объединителем 27. Следовательно, декодер 24 имеет свой выход, дополнительно подсоединенный к входу параметров кодирования предсказателя 28.As shown in FIG. 25,
Хотя фиг.25 создает впечатление, что декодер последовательно декодирует текущее изображение, декодер 5 может, например, быть реализован так, чтобы декодировать изображение 10 параллельно. Декодер 5, например, может содержать многочисленные ядра, при этом каждый работает в соответствии с элементами 24-28 на фиг.25. Параллельная обработка, однако, является необязательной, и последовательно работающий декодер 5 также способен декодировать поток данных, поступающий на вход энтропийного декодера 24.Although Fig. 25 gives the impression that the decoder sequentially decodes the current picture,
Чтобы эффективно достичь вышеупомянутой способности или последовательного, или параллельного декодирования текущего изображения 10, декодер 5 работает в единицах блоков 30 кодирования, чтобы декодировать изображение 10. Блоками 30 кодирования, например, являются листовые блоки, на которые разбиваются блоки дерева кодирования или наибольшие блоки 32 кодирования посредством рекурсивного разбиения методом мультидерева, таким как разбиение методом квадродерева. Блоки 32 дерева кодирования, в свою очередь, могут регулярно располагаться столбцами и строками, чтобы формировать регулярное разбиение изображения 10 на эти блоки 32 дерева кодирования. На фиг.25 блоки 32 дерева кодирования показаны непрерывными линиями, тогда как блоки 30 кодирования показаны пунктирными линиями. С целью иллюстрации только один блок 32 дерева кодирования показан дополнительно разбитым на блоки 30 кодирования, тогда как другие блоки 32 дерева кодирования показаны без дополнительного разбиения, чтобы, вместо этого, непосредственно формировать блок кодирования. Поток 12 данных может содержать сигнализацию синтаксического участка, как изображение 10 разбито на блоки 30 кодирования.In order to effectively achieve the aforementioned ability to either sequentially or parallel decode the
Поток 12 данных передает, для каждого блока 30 кодирования, синтаксические элементы, которые показывают, как модули 24-28 должны восстанавливать содержимое изображения в этом блоке 30 кодирования. Например, эти синтаксические элементы содержат:The
1) необязательно, данные разбиения, дополнительно разбивающие блок 30 кодирования на блоки предсказания,1) optionally, split data further splitting the
2) необязательно, данные разбиения, дополнительно разбивающие блок 30 кодирования на блоки остатка и/или преобразования,2) optionally, split data further splitting the
3) сигнализацию режима предсказания, какой режим предсказания должен использоваться для вывода сигнала предсказания для блока 30 кодирования, причем степень детализации, с которой этот режим предсказания сигнализируется, может зависеть от блоков 30 кодирования и/или блока предсказания.3) prediction mode signaling which prediction mode should be used to output the prediction signal for coding
4) параметры предсказания могут сигнализироваться на блок кодирования или, если присутствует, на блок предсказания с типом параметров предсказания, посылаемых в зависимости, например, от режима предсказания. Возможные режимы предсказания, например, могут содержать внутреннее предсказание и/или внешнее предсказание.4) The prediction parameters may be signaled to a coding block or, if present, to a prediction block with the type of prediction parameters sent depending on, for example, the prediction mode. Possible prediction modes, for example, may include intra prediction and/or inter prediction.
5) Другие синтаксические элементы также могут присутствовать, такие как информация о фильтрации для фильтрации изображения 10 в блоке 30 кодирования, чтобы получить сигнал предсказания и/или восстановленный сигнал, подлежащий воспроизведению.5) Other syntax elements may also be present, such as filtering information for filtering
6) Наконец, информация об остатке в виде, между прочим, коэффициентов преобразования может содержаться в потоке данных для блока 30 кодирования; в единицах блоков остатка, остаточные данные могут сигнализироваться; на блок остатка, спектральное разложение, например, может выполняться в единицах вышеупомянутых блоков преобразования, если они присутствуют.6) Finally, information about the remainder in the form of, among other things, the transformation coefficients may be contained in the data stream for
Энтропийный декодер 24 отвечает за получение вышеупомянутых синтаксических элементов из потока данных. С этой целью, энтропийный декодер 24 использует контекстно-адаптивное энтропийное декодирование. Т.е. энтропийный декодер 24 обеспечивает несколько видов контекста. Чтобы вывести некоторый синтаксический элемент из потока 12 данных, энтропийный декодер 24 выбирает некоторый контекст из числа возможных контекстов. Выбор из числа возможных контекстов выполняется в зависимости от атрибута соседства участка изображения 10, к которому принадлежит текущий синтаксический контекст. Для каждого из возможных контекстов энтропийный декодер 24 управляет вероятностями символа, т.е. оценкой вероятности для каждого возможного символа из алфавита символов, основываясь на том, на котором работает энтропийный декодер 24. «Управление» включает в себя вышеупомянутые непрерывные обновления вероятностей символа контекстов, чтобы адаптировать вероятности символа, ассоциированные с каждым контекстом, к фактическому содержимому изображения. Посредством этой меры вероятности символа адаптируются к фактической статистике вероятностей символа.The
Другим случаем, когда атрибуты соседства оказывают влияние на восстановление текущего участка изображения 10, такого как текущий блок 30 кодирования, является декодирование с предсказанием в предсказателе 28. Предсказание ограничивается не только содержимым предсказания в текущем блоке 30 кодирования, но также может охватывать предсказание параметров, содержащихся в потоке 12 данных для текущего блока 30 кодирования, таких как параметры предсказания, данные разбиения или даже коэффициенты преобразования. Т.е. предсказатель 28 может предсказывать содержимое изображения или такие параметры из вышеупомянутого соседства, чтобы получать записанный сигнал, который затем объединяется с остатком предсказания, полученным модулем 26 из потока 12 данных. В случае параметров предсказания предсказатель 28 может использовать синтаксические элементы, содержащиеся в потоке данных, в качестве остатков предсказания, чтобы получать фактическое значение параметра предсказания. Предсказатель 28 использует последнее значение параметра предсказания, чтобы получать только что упомянутый сигнал предсказания, подлежащий объединению с остатком предсказания в объединителе 27.Another case where neighborhood attributes affect the reconstruction of the current portion of the
Вышеупомянутое «соседство» охватывает, главным образом, верхнюю левую часть окружности текущего участка, к которому принадлежит синтаксический элемент, подлежащий в настоящий момент энтропийному декодированию, или синтаксический элемент, подлежащий в настоящий момент предсказанию. На фиг.25 такое соседство изображается позицией 34 в качестве примера для одного блока 30 кодирования.The above "neighborhood" mainly covers the upper left part of the circumference of the current section to which the syntax element currently to be entropy decoded or the syntax element to be currently predicted belongs. In FIG. 25, such a neighborhood is shown at 34 as an example for one
Порядок кодирования/декодирования определяется среди блоков 30 кодирования: на самом грубом уровне, блоки 32 дерева кодирования изображения 10 сканируются в порядке 36 сканирования, в данном случае изображен как сканирование растра, происходящее построчно сверху вниз. В каждом блоке дерева кодирования блоки 30 кодирования сканируются в порядке обхода вглубь, так что, на каждом иерархическом уровне, блок 32 дерева кодирования сканируется, по существу, также сканированием растра, происходящим построчно сверху вниз.The encoding/decoding order is determined among the encoding blocks 30: at the most rough level, the encoding tree blocks 32 of the
Порядок сканирования, определенный среди блоков 30 кодирования, согласовывается с определением соседства 34, используемого для вывода атрибута в соседстве, чтобы выбирать контексты и/или выполнять пространственное предсказание, тем, что соседство 34, главным образом, охватывает участки изображения 10, которые уже были подвергнуты декодированию в соответствии с порядком кодирования. Всякий раз, когда участок соседства 34 охватывает недоступные участки изображения 10, вместо этого используются данные по умолчанию. Например, шаблон 34 соседства может простираться за пределы изображения 10. Другой возможностью, однако, является то, что соседство 34 простирается в соседний слайс.The scan order defined among the
Слайсы делят, например, изображение 10 в соответствии с порядком кодирования/декодирования, определенным по блокам 30 кодирования, т.е. каждый слайс представляет собой непрерывную непрерываемую последовательность блоков 30 кодирования в соответствии с вышеупомянутым порядком блоков кодирования. На фиг.25 слайсы обозначены пунктирными линиями 14. Порядок, определенный среди слайсов 14, является результатом их расположения выполнений последовательных блоков 30 кодирования, как кратко изложено выше. Если участок 18 синтаксического элемента некоторого слайса 14 указывает, что он должен декодироваться в первом режиме, тогда энтропийный декодер 24 делает возможным контекстно-адаптивное энтропийное декодирование для вывода контекстов через границы слайсов. Т.е. используется пространственное соседство 34, чтобы выбрать контексты при энтропийном декодировании данных, касающихся текущего слайса 14. В случае фиг.25, например, слайсом номер 3 может быть декодируемый в настоящий момент слайс, и при энтропийном декодировании синтаксического элемента, касающегося блока 30 кодирования или некоторого участка, содержащего в нем, энтропийный декодер 24 может использовать атрибуты, происходящие из декодирования участков в соседнем слайсе, таком как слайс номер 1. Предсказатель 28 ведет себя также: для слайсов в первом режиме 20 предсказатель 28 использует пространственное предсказание через границу слайсов, охватывающую текущий слайс.The slices divide, for example, the
Для слайсов, однако, имеющих второй режим 22, ассоциированный с ними, т.е. для которых участок 18 синтаксического элемента указывает второй режим 22, энтропийный декодер 24 и предсказатель 28 ограничивают вывод энтропийных контекстов и декодирование с предсказанием тем, что они зависят от атрибутов, относящихся к участкам, лежащим только в пределах текущего слайса. Очевидно, что эффективность кодирования страдает от этого ограничения. С другой стороны, слайсы второго режима 22 принимают во внимание нарушение взаимозависимостей между последовательностью слайсов. Следовательно, слайсы второго режима 22 могут распределяться в пределах изображения 10 или в пределах видео, к которому принадлежит изображение 10, чтобы принимать во внимание точки повторной синхронизации. Не является необходимым, однако, чтобы каждое изображение 10 имело по меньшей мере один слайс во втором режиме 22.For slices, however, having a
Как уже упомянуто выше, первый и второй режим 20 и 22 также отличаются своей инициализацией вероятностей символа. Слайсы, кодированные по второму режиму 22, приводят к тому, что энтропийный декодер 24 повторно инициализирует вероятности независимо от любого ранее декодированного слайса, т.е. ранее декодированного в смысле порядка, определенного среди слайсов. Вероятности символа, например, устанавливаются на значения по умолчанию, известные как кодирующей, так и декодирующей стороне, или значения инициализации содержатся в слайсах, кодированных во втором режиме 22.As already mentioned above, the first and
Т.е. для слайсов, кодируемых/декодируемых во втором режиме 22, адаптация вероятностей символа всегда начинается немедленно с началом этих слайсов. Следовательно, точность адаптации является плохой для этих слайсов в начале этих слайсов.Those. for slices encoded/decoded in the
Дело обстоит иначе в слайсах, кодируемых/декодируемых в первом режиме 20. Для последних слайсов инициализация вероятностей символа, выполняемая энтропийным декодером 24, зависит от сохраненных состояний вероятностей символа ранее декодированного слайса. Всякий раз, когда слайс, кодируемый/декодируемый в первом режиме 20, имеет свое начало, например, расположенное кроме левой стороны изображения 10, т.е. не на стороне, откуда сканирование 36 растра начинает выполнение построчно перед выполнением шага на следующую строку вниз, принимаются вероятности символа, получающиеся в конце энтропийного декодирования непосредственно предшествующего слайса. Это изображено, например, на фиг.2 стрелкой 38 для слайса №4. Слайс №4 имеет свое начало где-то между правой стороной и левой стороной изображения 10, и, следовательно, при инициализации вероятностей символа энтропийный декодер 24 принимает, при инициализации вероятностей символа, вероятности символа, которые были получены при энтропийном декодировании непосредственно предшествующего слайса, т.е. слайса №3, до его окончания, т.е. включая непрерывное обновление вероятностей символа во время энтропийного декодирования слайса №3 до его окончания.This is not the case for slices encoded/decoded in the
Слайсы, имеющие второй режим 22, ассоциированный с ними, которые, однако, имеют начало на левой стороне изображения 10, такой как, например, слайс №5, не принимают вероятности символа, полученные после окончания энтропийного декодирования непосредственно предшествующего слайса №4, так как это бы предотвратило бы параллельное декодирование декодером 5 изображения 10 посредством использования волновой обработки. Скорее, как кратко изложено выше, энтропийный декодер 24 адаптирует вероятности символа, полученные после окончания энтропийного декодирования второго - в порядке 36 кодирования/декодирования - блока 32 дерева кодирования в непосредственно предшествующем - в порядке 36 кодирования/декодирования - блоке дерева кодирования, как показано стрелкой 40.Slices having a
На фиг.25, например, изображение 10, в качестве примера, было разбито на три строки блоков дерева кодирования и четыре столбца блоков 32 корня дерева кодирования, и каждая строка блоков дерева кодирования была подразделена на два слайса 14, так что начало каждого второго слайса совпадает с первой единицей кодирования в порядке единиц кодирования соответствующей строки блоков корня дерева кодирования. Энтропийный декодер 24, следовательно, имеет возможность использовать волновую обработку при декодировании изображения 10 посредством декодирования параллельно каждой строки блоков корня дерева кодирования, при этом декодирование этих строк блоков корня дерева кодирования начинается ступенчатым образом, начиная с первой или самой верхней строки блоков корня дерева кодирования, затем второй, и затем третьей.In Fig. 25, for example, the
Конечно, разбиение блоков 32 рекурсивным образом на дополнительные блоки 30 кодирования является необязательным, и, следовательно, в более общем смысле, блоки 32 также могут называться «блоками кодирования». Т.е. вообще говоря, изображение 10 может разбиваться на блоки 32 кодирования, расположенные по строкам и столбцам и имеющие порядок 36 сканирования растра, определенный между ними, и декодер 5 может рассматриваться как ассоциирующий каждый слайс 14 с непрерывным поднабором блоков 32 кодирования в порядке 36 сканирования растра, так что поднаборы следуют друг за другом в соответствии с порядком 36 сканирования растра в соответствии с порядком слайсов.Of course, splitting the
Как также становится ясно из вышеприведенного описания, декодер 5, или более конкретно, энтропийный декодер 24 может быть выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптированном энтропийном декодировании любого слайса до второго блока кодирования в строке блоков кодирования в соответствии с порядком 36 сканирования растра. При инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса, имеющего первый режим 20, ассоциированный с ним, декодер 5, или, более конкретно, энтропийный декодер 24, проверяет, является ли первый блок 32 кодирования непрерывного поднабора блоков 32 кодирования, ассоциированных с текущим слайсом, первым блоком 32 кодирования в строке блоков кодирования в соответствии с порядком 36 сканирования растра. Если это так, вероятности символа для контекстно-адаптивного энтропийного декодирования текущего слайса инициализируются как объяснено в отношении стрелки 40, а именно, в зависимости от сохраненных вероятностей символа, полученных при контекстном энтропийном декодировании ранее декодированного слайса до второго блока кодирования в строке блоков кодирования в соответствии с порядком 36 сканирования растра. Если нет, инициализация вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса выполняется в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса, т.е. в соответствии со стрелкой 38. Снова, в случае инициализации согласно позиции 38, подразумевается сохраненное состояние в конце энтропийного декодирования непосредственно предшествующего слайса в порядке 36 слайсов, тогда как в случае инициализации 40 им является этот ранее декодированный слайс, содержащий конец второго блока непосредственно предшествующей строки блока 32 в порядке 36 блоков.As also clear from the above description,
Как показано пунктирными линиями на фиг.24, декодер может быть выполнен с возможностью реагирования на участок 18 синтаксического элемента в текущем слайсе из слайсов 14, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере трех режимов. Т.е. может быть третий режим 42 кроме других режимов 20 и 22. Третий режим 42 может отличаться от второго режима 22 тем, что разрешается предсказание через границы слайсов, тогда как энтропийное кодирование/декодирование все еще ограничивается, чтобы не пересекать границы слайсов.As shown by dashed lines in FIG. 24, a decoder may be configured to respond to
Выше были представлены два варианта осуществления, касающиеся участка 18 синтаксического элемента. Таблица ниже суммирует эти два варианта осуществления.Two embodiments have been presented above with regard to
В одном варианте осуществления участок 18 синтаксического элемента образован индивидуально посредством dependent_slice_flag, тогда как в другом варианте осуществления комбинация dependent_slice_flag и no_cabac_reset_flag образует участок синтаксического элемента. Ссылка делается на процесс синхронизации для контекстных переменных, что касается инициализации вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее декодированного слайса. В частности, декодер может быть выполнен с возможностью, если last_ctb_cabac_init_flag=0 и tiles_or_entropy_coding_sync_idc=2, сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока кодирования в строке в соответствии с порядком сканирования растра, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в соответствии с первым режимом, проверки, является ли первый блок кодирования непрерывного поднабора блоков кодирования, ассоциированных с текущим слайсом, первым блоком кодирования в строке в соответствии с порядком сканирования растра, и, если это так, инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от сохраненных вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока кодирования в строке в соответствии с порядком сканирования растра, и, если нет, инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса.In one embodiment,
Таким образом, другими словами, в соответствии со вторым вариантом осуществления для синтаксиса, декодер восстанавливает изображение 10 из потока 12 данных, в который изображение кодировано в единицах слайсов 14, на которые изображение (10) разбито, причем декодер выполнен с возможностью декодирования слайсов 14 из потока 12 данных в соответствии с порядком 16 слайсов, и декодер реагирует на участок 18 синтаксического элемента, а именно dependent_slice_flag в текущем слайсе из слайсов, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере двух режимов 20, 22. В соответствии с первым 20 из упомянутых по меньшей мере двух режимов, а именно, если dependent_slice_flag=1, декодер декодирует текущий слайс из потока 12 данных, используя контекстно-адаптивное энтропийное декодирование 24, включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию 38, 40 вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее декодированного слайса, и декодирование с предсказанием через границы слайсов, и в соответствии со вторым 22 из упомянутых по меньшей мере двух режимов, а именно, если dependent_slice_flag=0, декодер декодирует текущий слайс из потока 12 данных, используя контекстно-адаптивное энтропийное декодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее декодированного слайса, и декодирование с предсказанием с ограничением декодирования с предсказанием, чтобы не пересекать границы слайсов. Изображение 10 может быть разбито на блоки 32 кодирования, расположенные по строкам и столбцам и имеющие порядок 36 сканирования растра, определенный между ними, и декодер выполнен с возможностью ассоциирования каждого слайса 14 с непрерывным поднабором блоков 32 кодирования в порядке 36 сканирования растра, так что поднаборы следуют друг за другом в соответствии с порядком 36 сканирования растра в соответствии с порядком слайсов. Декодер может быть выполнен с возможностью, а именно реагируя на tiles_or_entropy_coding_sync_idc=2, сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока 32 кодирования в строке в соответствии с порядком 36 сканирования растра, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в соответствии с первым режимом, проверки, является ли первый блок кодирования непрерывного поднабора блоков 32 кодирования, ассоциированных с текущим слайсом, первым блоком 32 кодирования в строке в соответствии с порядком сканирования растра, и, если это так, инициализации 40 вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от сохраненных вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока кодирования в строке в соответствии с порядком 36 сканирования растра, и, если нет, инициализации 38 вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса. Декодер может быть выполнен с возможностью реагирования на участок (18) синтаксического элемента в текущем слайсе из слайсов 14, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере трех режимов, а именно, в одном из первого 20 и третьего режима 42 или второго режима 22, причем декодер выполнен с возможностью, в соответствии с третьим режимом 42, а именно, если dependent_slice_flag=1 и tiles_or_entropy_coding_sync_idc=3, декодирования текущего слайса из потока данных, используя контекстно-адаптивное энтропийное декодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее декодированного слайса, и декодирования с предсказанием через границы слайсов, причем один из первого и третьего режимов выбирается в зависимости от синтаксического элемента, а именно cabac_independent_flag. Декодер дополнительно может быть выполнен с возможностью, а именно, если tiles_or_entropy_coding_sync_idc=0,1 и 3 («3», когда cabac_independent_flag=0), сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в соответствии с первым режимом, инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от сохраненных вероятностей символа. Декодер может быть выполнен с возможностью, а именно, если tiles_or_entropy_coding_sync_idc=1, в первом и втором режиме, ограничения декодирования с предсказанием в тайлах, на которые изображение подразделено.Thus, in other words, according to the second embodiment for the syntax, the decoder recovers the
Конечно, кодер способен устанавливать представленный выше синтаксис соответствующим образом, чтобы дать возможность декодеру получить вышеприведенные преимущества. Кодером может быть кодер, такой как многоядерный, параллельной обработки, но в этом нет необходимости. Для кодирования изображения 10 в поток 12 данных в единицах слайсов 14 кодер выполнен с возможность кодирования слайсов 14 в поток 12 данных в соответствии с порядком 16 слайсов. Кодер определяет участок 18 синтаксического элемента для текущего слайса из слайсов, и кодирует его в него, так что участок синтаксического элемента сигнализирует, что текущий слайс должен быть кодирован в соответствии с одним из упомянутых по меньшей мере двух режимов 20, 22, и, если текущий слайс должен быть кодирован в соответствии с первым 20 из упомянутых по меньшей мере двух режимов, кодирует текущий слайс в поток 12 данных, используя контекстно-адаптивное энтропийное кодирование 24, включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию 38, 40 вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее кодированного слайса, и кодирование с предсказанием через границы слайсов, и, если текущий слайс должен быть кодирован в соответствии со вторым 22 из упомянутых по меньшей мере двух режимов, кодирует текущий слайс в поток 12 данных, используя контекстно-адаптивное энтропийное кодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее кодированного слайса, и кодирование с предсказанием с ограничением кодирования с предсказанием, чтобы не пересекать границы слайсов. Хотя изображение 10 может разбиваться на блоки 32 кодирования, расположенные по строкам и столбцам и имеющие порядок 36 сканирования растра, определенный между ними, кодер может быть выполнен с возможностью ассоциирования каждого слайса 14 с непрерывным поднабором блоков 32 кодирования в порядке 36 сканирования растра, так что поднаборы следуют один за другим в соответствии с порядком 36 сканирования растра в соответствии с порядком слайсов. Кодер может быть выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до второго блока 32 кодирования в строке в соответствии с порядком 36 сканирования растра, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в соответствии с первым режимом, проверки, является ли первый блок кодирования непрерывного поднабора блоков 32 кодирования, ассоциированных с текущим слайсом, первым блоком 32 кодирования в строке в соответствии с порядком сканирования растра, и, если это так, инициализации 40 вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от сохраненных вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до второго блока кодирования в строке в соответствии с порядком 36 сканирования растра, и, если это не так, инициализации 38 вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее декодированного слайса до конца ранее кодированного слайса. Кодер может быть выполнен с возможностью кодирования участка (18) синтаксического элемента в текущий слайс из слайсов (14), так что сигнализируется, что текущий слайс должен быть кодирован в него в соответствии с одним из по меньшей мере трех режимов, а именно в одном из первого (20) и третьего режима (42) или второго режима (22), причем кодер выполнен с возможностью, ** в соответствии с третьим режимом (42), кодирования текущего слайса в поток данных, используя контекстно-адаптивное энтропийное кодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее кодированного слайса, и кодирование с предсказанием через границы слайсов, причем кодер различает один из первого и третьего режимов, используя, например, синтаксический элемент, а именно cabac_independent_flag. Кодер может быть выполнен с возможностью определения обобщенного синтаксического элемента, такого как dependent_slices_present_flag и записи его в поток данных, работая в одном из по меньшей мере двух обобщенных режимов работы в зависимости от обобщенного синтаксического элемента, а именно, с, согласно первому обобщенному режиму работы, выполнением кодирования участка синтаксического элемента для каждого слайса, и, согласно второму обобщенному режиму работы, неизбежного использования другого одного из упомянутых по меньшей мере двух режимов, кроме первого режима. Кодер может быть выполнен с возможностью, согласно первому и второму режимам, неизбежно и непрерывно продолжать непрерывное обновление вероятностей символа с начала до конца текущего слайса. Кодер может быть выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до конца ранее кодированного слайса, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в соответствии с первым режимом, инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от сохраненных вероятностей символа. И кодер может, в первом и втором режиме, ограничивать кодирование с предсказанием в тайлах, на которые изображение подразделено.Of course, the encoder is able to set the above syntax appropriately to enable the decoder to obtain the above benefits. The encoder may be an encoder, such as multi-core, parallel processing, but this is not necessary. To encode
Возможная конструкция кодера изображена на фиг.26 для полноты. Предсказатель 70 работает почти также как и предсказатель 28, т.е. выполняет предсказание, но также определяет посредством оптимизации, например, параметры кодирования, включающие в себя параметры и режимы предсказания. Модули 26 и 27 также находятся в декодере. Вычитатель 72 определяет остаток предсказания без потерь, который затем - посредством использования квантования и, необязательно, использования преобразования со спектральным разложением - кодируется с потерями в модуле 74 преобразования и квантования. Энтропийный кодер 76 выполняет контекстно-адаптивное энтропийное кодирование.A possible encoder design is shown in FIG. 26 for completeness.
В дополнение к вышеупомянутым конкретным примерам синтаксиса ниже кратко описывается другой пример с представлением согласованности между терминами, используемыми в данном документе ниже, и терминами, используемыми выше.In addition to the above specific syntax examples, another example is briefly described below to represent the consistency between the terms used herein below and the terms used above.
В частности, без конкретного краткого описания выше, зависимые слайсы являются не только «зависимыми» в том, что они учитывают применение сведений, известных за пределами их границ, как например, как упомянуто выше, энтропийные контексты которых адаптируются быстрее, или достигают лучшего пространственного предсказания из-за разрешения пересечения их границ. Скорее, чтобы сэкономить тарифные затраты, необходимые потратить для определения заголовков слайсов посредством разбиения изображения на слайсы, зависимые слайсы принимают часть синтаксиса заголовка слайса из предыдущих слайсов, т.е. эта часть заголовка синтаксиса слайса не передается снова для зависимых слайсов. Это показано, например, на фиг.16 позицией 100 и на фиг.21 позицией 102, согласно которым тип слайса, например, принимается от предыдущего слайса. Посредством этой меры подразделение изображения на слайсы, такие как независимый слайс и зависимые слайсы, является менее дорогостоящим в отношении расхода битов.In particular, without specific brief description above, dependent slices are not only "dependent" in that they allow for the application of knowledge known outside their boundaries, such as those mentioned above, whose entropy contexts adapt faster, or achieve better spatial prediction. because of the permission to cross their borders. Rather, in order to save the overhead required to define slice headers by slicing an image, dependent slices adopt part of the slice header syntax from previous slices, i.e. this portion of the slice syntax header is not passed again for dependent slices. This is shown, for example, in FIG. 16 at 100 and in FIG. 21 at 102, whereby the slice type is, for example, taken from the previous slice. By this measure, subdivision of an image into slices such as an independent slice and dependent slices is less costly in terms of bit consumption.
Именно вышеупомянутая зависимость приводит, в кратко описанном ниже примере, к слегка другой формулировке: слайсы определяются как единичные участки изображения, в которых синтаксис заголовка слайса является индивидуально устанавливаемым. Следовательно, слайсы состоят из одного - используя систему обозначений выше - независимого/регулярного/нормального слайса, теперь называемого независимым сегментом слайса, и без одного или нескольких - используя систему обозначений выше - зависимых слайсов, теперь называемых зависимыми сегментами слайса.It is the aforementioned dependency that leads, in the example briefly described below, to a slightly different formulation: slices are defined as unit areas of an image in which the slice header syntax is individually settable. Therefore, slices consist of one - using the notation above - independent/regular/normal slice, now called independent slice segment, and without one or more - using the notation above - dependent slices, now called dependent slice segments.
Фиг.27, например, изображает изображение, подлежащее разбиению на два слайса, один образован сегментами 141-143 слайса, и другой образован исключительно сегментом 144 слайса. Индексы 1-4 показывают порядок слайсов в порядке кодирования. Фиг.28a и b изображают другой пример в случае подразделения изображения 10 на два тайла, причем в случае фиг.28a один слайс образован всеми пятью сегментами 14 слайса, охватывающими оба тайла 501 и 502 - индекс снова повышается в порядке кодирования - и, в случае фиг.28a, два слайса образованы сегментами 141 и 142 и 143 и 144 слайса соответственно, подразделяя тайл 501, и другой слайс образован сегментами 145-146 слайса, охватывающими тайл 502.27, for example, shows an image to be split into two slices, one formed by
Определениями могут быть следующие:The definitions can be:
зависимый сегмент слайса: Сегмент слайса, для которого значения некоторых синтаксических элементов заголовка сегмента слайса подразумеваются из значений для предыдущего независимого сегмента слайса в порядке декодирования - раньше, в вышеупомянутых вариантах осуществления - называемых зависимым слайсом. dependent slice segment : A slice segment for which the values of some syntax elements of the slice segment header are implied from the values for the previous independent slice segment in decoding order - earlier, in the above embodiments - called dependent slice .
независимый сегмент слайса: Сегмент слайса, для которого значения синтаксических элементов заголовка сегмента слайса не подразумеваются из значений для предыдущего сегмента слайса - раньше, в вышеупомянутых вариантах осуществления, называемого нормальным слайсом. independent slice segment : A slice segment for which the values of the slice segment header syntax elements are not inferred from the values for the previous slice segment - formerly, in the above embodiments , called a normal slice .
слайс: Целочисленное количество единиц дерева кодирования, содержащихся в одном независимом сегменте слайса и всех последующих зависимых сегментах слайса (если есть какие-либо), которые предшествуют следующему независимому сегменту слайса (если есть какой-либо) в одной и той же единице доступа/изображении. slice : The integer number of coding tree units contained in one independent slice segment and all subsequent dependent slice segments (if any) that precede the next independent slice segment (if any) in the same access unit/picture .
заголовок слайса: Заголовок сегмента слайса независимого сегмента слайса, который представляет собой текущий сегмент слайса или представляет собой независимый сегмент слайса, который предшествует текущему зависимому сегменту слайса. slice header : The slice segment header of an independent slice segment that represents the current slice segment or an independent slice segment that precedes the current dependent slice segment .
сегмент слайса: Целочисленное количество единиц дерева кодирования, упорядоченных последовательно в сканировании тайла и содержащихся в единственной единице NAL; деление каждого изображения на сегменты слайса представляет собой разбиение. slice segment : An integer number of coding tree units ordered sequentially in a tile scan and contained in a single NAL unit ; dividing each image into slice segments is a partition .
заголовок сегмента слайса: Часть кодированного сегмента слайса, содержащего элементы данных, относящиеся к первому или всем единицам дерева кодирования, представленным в сегменте слайса. slice segment header : Part of the encoded slice segment containing data elements related to the first or all encoding tree units represented in the slice segment.
Сигнализация «режимов» 20 и 22, т.е. «зависимого сегмента слайса» и «независимого сегмента слайса» может быть следующей:Signaling "modes" 20 and 22, i.e. "dependent slice segment" and "independent slice segment" could be as follows:
В некоторых дополнительных единицах NAL, таких как набор параметров изображения (PPS), синтаксический элемент может использоваться для сигнализации, выполняется ли или нет использование зависимых слайсов для некоторого изображения даже последовательности для некоторых изображений:In some additional NAL units, such as a Picture Parameter Set (PPS), a syntax element can be used to signal whether or not dependent slices are used for some picture, even sequence for some pictures:
dependent_slice_segments_enabled_flag равный 1 задает присутствие синтаксического элемента dependent_slice_segment_flag в заголовках сегмента слайса. dependent_slice_segments_enabled_flag равный 0 задает отсутствие синтаксического элемента dependent_slice_segment_flag в заголовках сегмента слайса. dependent_slice_segments_enabled_flag equal to 1 specifies the presence of the dependent_slice_segment_flag syntax element in slice segment headers. dependent_slice_segments_enabled_flag equal to 0 specifies that the dependent_slice_segment_flag syntax element is not present in slice segment headers.
dependent_slice_segments_enabled_flag подобен по объему ранее описанному dependent_slices_present_flag. The dependent_slice_segments_enabled_flag is similar in scope to the previously described dependent_slices_present_flag.
Аналогично, dependent_slice_flag может называться dependent_slice_segment_flag, чтобы принимать во внимание разные системы обозначений в отношении слайсов.Likewise, dependent_slice_flag may be called dependent_slice_segment_flag to take into account different notation for slices.
dependent_slice_segment_flag равный 1 задает, что подразумевается, что значение каждого синтаксического элемента заголовка сегмента слайса, который не присутствует в текущем заголовке сегмента слайса, равно значению соответствующего синтаксического элемента заголовка сегмента слайса в заголовке слайса, т.е. заголовка сегмента слайса предшествующего независимого сегмента слайса. dependent_slice_segment_flag equal to 1 specifies that the value of each slice segment header syntax element that is not present in the current slice segment header is assumed to be equal to the value of the corresponding slice segment header syntax element in the slice header, i.e. the slice segment header of the preceding independent slice segment.
На этом же уровне, таком как уровень изображения, может быть включен следующий синтаксический элемент:At the same level, such as the image level, the following syntax element may be included:
entropy_coding_sync_enabled_flag равный 1 задает, что вызывается конкретный процесс синхронизации для контекстных переменных перед декодированием единицы дерева кодирования, которая включает в себя первый блок дерева кодирования строки блоков дерева кодирования в каждом тайле в каждом изображении, ссылающемся на PPS, и конкретный процесс сохранения для контекстных переменных вызывается после декодирования единицы дерева кодирования, которая включает в себя второй блок дерева кодирования строки блоков дерева кодирования в каждом тайле в каждом изображении, ссылающемся на PPS. entropy_coding_sync_enabled_flag равный 0 задает, что не требуется вызов конкретного процесса синхронизации для контекстных переменных перед декодированием единицы дерева кодирования, которая включает в себя первый блок дерева кодирования строки блоков дерева кодирования в каждом тайле в каждом изображении, ссылающемся на PPS, и не требуется вызов конкретного процесса сохранения для контекстных переменных после декодирования единицы дерева кодирования, которая включает в себя второй блок дерева кодирования строки блоков дерева кодирования в каждом тайле в каждом изображении, ссылающемся на PPS. entropy_coding_sync_enabled_flag equal to 1 specifies that a specific synchronization process for context variables is called before decoding a coding tree unit that includes the first coding tree block of a string of coding tree blocks in each tile in each picture referencing a PPS, and a specific save process for context variables is called after decoding a coding tree unit that includes a second coding tree block of a string of coding tree blocks in each tile in each picture referring to the PPS. entropy_coding_sync_enabled_flag equal to 0 specifies that a particular synchronization process is not required to be invoked on context variables before decoding a coding tree unit that includes the first coding tree block of a line of coding tree blocks in each tile in each picture referencing a PPS, and a particular process is not required to be invoked saving for context variables after decoding a coding tree unit that includes a second coding tree block of a string of coding tree blocks in each tile in each picture referring to the PPS.
Требованием соответствия битовых потоков является то, что значение entropy_coding_sync_enabled_flag должно быть одинаковым для всех PPS, которые активизируются в CVS.The bitstream conformance requirement is that the value of entropy_coding_sync_enabled_flag must be the same for all PPSs that are enabled in CVS.
Когда entropy_coding_sync_enabled_flag равен 1, и первый блок дерева кодирования в слайсе не является первым блоком дерева кодирования строки блоков дерева кодирования в тайле, требованием соответствия битовых потоков является то, что последний блок дерева кодирования в слайсе должен принадлежать этой же строке блоков дерева кодирования, что и первый блок дерева кодирования в слайсе. Когда entropy_coding_sync_enabled_flag равен 1, и первый блок дерева кодирования в сегменте слайса не является первым блоком дерева кодирования строки блоков дерева кодирования в тайле, требованием соответствия битовых потоков является то, что последний блок дерева кодирования в сегменте слайса должен принадлежать этой же строке блоков дерева кодирования, что и первый блок дерева кодирования в сегменте слайса.When entropy_coding_sync_enabled_flag is 1 and the first coding tree block in a slice is not the first coding tree block of a coding tree block row in a tile, the bitstream matching requirement is that the last coding tree block in the slice must belong to the same coding tree block row as the first block of the coding tree in the slice. When entropy_coding_sync_enabled_flag is 1 and the first coding tree block in a slice segment is not the first coding tree block of a coding tree block row in a tile, the bitstream matching requirement is that the last coding tree block in the slice segment must belong to the same coding tree block row, as the first block of the coding tree in the slice segment.
Как уже было описано, порядок кодирования/декодирования среди CTB 30 приводит к построчной форме растра сверху вниз, начинающейся со сканирования первого тайла, затем переходя к следующему тайлу, если в изображении присутствует более одного тайла.As already described, the order of encoding/decoding among the
Декодер 5 - и кодер соответственно - действует следующим образом при энтропийном декодировании (кодировании) сегментов 14 слайса изображения:The decoder 5 - and the encoder, respectively - operates as follows when entropy decoding (coding)
A1) Всякий раз когда декодируемый/кодируемый в данный момент синтаксический элемент synEl является первым синтаксическим элементом тайла 50, сегментом 14 слайса или строкой CTB, начинается процесс инициализации по фиг.29.A1) Whenever the currently decoded/encoded synEl syntax element is the first syntax element of tile 50,
A2) Иначе, происходит декодирование этого синтаксического элемента, используя текущие энтропийные контексты.A2) Otherwise, this syntax element is decoded using the current entropy contexts.
A3) Если текущим синтаксическим элементом был последний синтаксический элемент в CTB 30, тогда начинается процесс сохранения энтропийного контекста, как показано на фиг.30.A3) If the current syntax element was the last syntax element in
A4) Процесс продолжается на A1) со следующим синтаксическим элементом.A4) The process continues to A1) with the next syntax element.
В процессе инициализации проверяется 200, является ли synEl первым синтаксическим элементом сегмента 14 слайса или тайла 50. Если да, инициализируются контексты независимо от любого предыдущего сегмента слайса на этапе 202. Если нет, проверяется 204, является ли synEl первым синтаксическим элементом строки CTB 30, и равняется ли entropy_coding_sync_enabled_flag единице. Если да, проверяется 206, доступен ли второй CTB 30 в предыдущей строке CTB 30 идентичного тайла (см. фиг.23). Если да, на этапе 210 выполняется принятие контекста в соответствии с позицией 40, используя сохраненные в данный момент вероятности контекста для принятия типа 40. Если нет, контексты инициализируются независимо от любого предыдущего сегмента слайса на этапе 202. Если проверка 204 показывает Нет, тогда на этапе 212 проверяется, является ли synEl первым синтаксическим элементом в первом CTB зависимого сегмента 14 слайса, и равен ли единице dependent_slice_segment_flag, и, если да, на этапе 214 выполняется принятие контекста в соответствии с позицией 38, используя сохраненные в данный момент вероятности контекста для принятий типа 38. После любого из этапов 214, 212, 210 и 202, фактически начинается декодирование/кодирование.The initialization process checks 200 whether synEl is the first syntax element of
Зависимые сегменты слайса с dependent_slice_segment_flag, равняющимся единице, способствуют, таким образом, дальнейшему уменьшению задержки кодирования/декодирования почти без ухудшения эффективности кодирования.Dependent slice segments with dependent_slice_segment_flag equal to one thus help to further reduce the encoding/decoding delay with almost no deterioration in encoding efficiency.
В процессе сохранения по фиг.30 проверяется на этапе 300, является ли кодируемый/декодируемый synEl последним синтаксическим элементом второго CTB 30 строки CTB 30, и равняется ли единице entropy_coding_sync_enabled_flag. Если да, текущие энтропийные контексты сохраняются на этапе 302, т.е. вероятности энтропийного кодирования контекстов, в запоминающем устройстве, которое является специальным для принятий по типу 40. Аналогично, на этапе 304 проверяется, в дополнение к этапам 300 или 302, является кодируемый/декодируемый synEl последним синтаксическим элементом сегмента 14 слайса, и равняется ли единице dependent_slice_segment_flag. Если да, текущие энтропийные контексты сохраняются на этапе 306, т.е. вероятности энтропийного кодирования контекстов, в запоминающем устройстве, которое является специальным для принятий по типу 38.In the storage process of FIG. 30, it is checked in
Отмечается, что любая проверка, запрашивающая, является ли синтаксический элемент первым synEl строки CTB, применяет, например, синтаксический элемент slice_address 400 в заголовках сегмента слайса, т.е. синтаксический элемент начала, показывающий положения начала соответствующего сегмента слайса в соответствии с порядком декодирования.It is noted that any check that asks if a syntax element is the first synEl of a CTB string uses, for example, the
При восстановлении изображения 10 из потока 12 данных, используя обработку WPP, декодер способен применять точно последний синтаксический участок 400 начала, чтобы показывать точки входа подпотоков WPP. Так как каждый сегмент слайса содержит синтаксический участок 400 начала, указывающий положение начала декодирования соответствующего сегмента слайса в изображении 10, декодер способен идентифицировать точки входа подпотоков WPP, в которые сгруппированы сегменты слайса, посредством идентификации, используя синтаксические участки 400 начала сегментов слайса, сегментов слайса, начинающихся на левой стороне изображения. Декодер тогда может параллельно декодировать подпотоки WPP ступенчатым образом с последовательным началом декодирования подпотоков WPP в соответствии с порядком слайсов. Сегменты слайса даже могут быть меньше ширины одного изображения, т.е. одной строки CTB, так что их передача может чередоваться среди подпотоков WPP, чтобы дополнительно уменьшить общую сквозную задержку передачи. Кодер обеспечивает каждый слайс (14) с синтаксическим участком (400) начала, указывающим положение начала кодирования соответствующего слайса в изображении (10) и группирует слайсы в подпотоки WPP, так что для каждого подпотока WPP первый слайс в порядке слайсов начинается на левой стороне изображения. Кодер даже может, сам собой, использовать обработку WPP при кодировании изображения: кодер параллельно кодирует подпотоки WPP ступенчатым образом, последовательно начиная кодирование подпотоков WPP в соответствии с порядком слайсов.When reconstructing
Между прочим, последний аспект использования синтаксических участков начала сегмента слайса в качестве средства для определения расположения точек входа подпотоков WPP, может использоваться без принципа зависимых слайсов.Incidentally, the last aspect of using the slice segment start syntax regions as a means to locate WPP subflow entry points can be used without the principle of dependent slices.
Является допустимой для всех для параллельной обработки изображения 10 установка вышеупомянутых переменных следующим образом:It is valid for all for
Даже является допустимым смешивать WPP с разбиением тайлов. В этом случае, можно рассматривать тайлы в качестве индивидуальных изображений; каждый, который использует WPP, состоит из слайса, имеющего один или несколько зависимых сегментов слайса, и проверка на этапе 300 и 208 ссылается на второй CTB в вышеупомянутой строке CTB в этом же тайле, точно как этапы 204 и A1 ссылаются на первый CTB 30 в строке CTB 30 текущего тайла! В этом случае вышеупомянутая таблица может быть расширена:It is even legal to mix WPP with tile splitting. In this case, you can consider the tiles as individual images; each that WPP uses consists of a slice having one or more dependent slice segments, and the checks at
В качестве краткого примечания, последнее расширение также возможно с вариантом 2 осуществления. Вариант 2 осуществления делает возможным следующую обработку:As a quick note, the last extension is also possible with
Но со следующими расширениями таблица ниже имеет результатом:But with the following extensions, the table below results in:
Добавить к семантике набора параметров изображения:Add to image parameter set semantics:
Если tiles_or_entropy_coding_sync_idc равен 4, каждый, но первая строка CTB должна содержаться в другом слайсе с флагом зависимого слайса, установленным на 1. CTB других строк не должны присутствовать в одном и том же слайсе. Может быть более одного слайса, присутствующего на строку CTB.If tiles_or_entropy_coding_sync_idc is 4, each but the first CTB row must be contained in another slice with the dependent slice flag set to 1. CTBs of other rows must not be present in the same slice. There may be more than one slice present per CTB row.
Если tiles_or_entropy_coding_sync_idc равен 5, CTB каждого, кроме первого тайла, должны содержаться в другом слайсе. CTB других тайлов не должны присутствовать в одном и том же слайсе. Может быть более одного слайса, присутствующего на тайл.If tiles_or_entropy_coding_sync_idc is 5, the CTB of every but the first tile must be contained in another slice. CTBs of other tiles must not be present in the same slice. There may be more than one slice present per tile.
См. фиг.31 для дополнительного объяснения.See Fig.31 for further explanation.
Т.е. вышеупомянутая таблица может быть расширена:Those. the above table can be extended:
Что касается вышеописанных вариантов осуществления, необходимо отметить, что декодер может быть выполнен с возможностью, например, реагирования на tiles_or_entropy_coding_sync_idc=1,2, в первом и втором режиме, считывания информации из текущего слайса, показывая подразделение текущего слайса на параллельные подразделы, причем параллельные подразделы могут быть подпотоками WPP или тайлами, прекращения контекстно-адаптивного энтропийного декодирования в конце первого параллельного подраздела и возобновления вновь контекстно-адаптивного энтропийного декодирования в начале любого последующего параллельного подраздела, в том числе, в первом режиме, инициализацию вероятностей символа в зависимости от сохраненных состояний вероятностей символа предшествующего параллельного подраздела, и, во втором режиме, инициализацию вероятностей символа независимо от любого ранее декодированного слайса и любого ранее декодированного параллельного подраздела.With regard to the above embodiments, it should be noted that the decoder may be configured to, for example, respond to tiles_or_entropy_coding_sync_idc=1,2, in the first and second mode, read information from the current slice, indicating the subdivision of the current slice into parallel subsections, wherein the parallel subsections can be WPP substreams or tiles, terminating context-adaptive entropy decoding at the end of the first parallel subsection and resuming context-adaptive entropy decoding at the start of any subsequent parallel subsection, including, in the first mode, initialization of symbol probabilities depending on the stored probability states symbol of the preceding parallel subsection, and, in a second mode, initializing the symbol probabilities independently of any previously decoded slice and any previously decoded parallel subsection.
Таким образом, вышеприведенное описание показывает способы кодирования, декодирования, инкапсуляции и передачи с малой задержкой структурированных видеоданных, предоставляемых новым стандартом кодирования HEVC, таких как структурированные в тайлах, подпотоках волновой параллельной обработки (WPP), слайсах или энтропийных слайсах.Thus, the above description shows methods for encoding, decoding, encapsulating, and transmitting with low latency structured video data provided by the new HEVC coding standard, such as structured in tiles, wave parallel processing (WPP) substreams, slices, or entropy slices.
Особенно, было определено, как транспортировать параллельные кодированные данные в разговорном сценарии, чтобы получить минимальную латентность в процессе кодирования, декодирования и передачи. Поэтому, было описан подход конвейерного параллельного кодирования, передачи и декодирования, чтобы сделать возможными приложения с минимальной задержкой, подобные играм, дистанционной хирургии и т.д.Specifically, it has been determined how to transport parallel encoded data in a conversational scenario in order to obtain minimum latency in the process of encoding, decoding and transmission. Therefore, a pipelined parallel encoding, transmission, and decoding approach has been described to enable low-latency applications like games, telesurgery, and so on.
Кроме того, вышеупомянутые варианты осуществления закрыли пробел волновой параллельной обработки (WPP), сделав ее пригодной для применения в сценариях передачи с малой задержкой. Поэтому, был представлен новый формат инкапсуляции для подпотоков 0 WPP, зависимый слайс. Этот зависимый слайс может содержать данные энтропийного слайса, подпоток WPP, полную строку LCU, только фрагмент слайса, где ранее переданный заголовок слайса также применяется к содержащимся данным фрагмента. Содержащиеся данные сигнализируются во вспомогательном заголовке слайса.In addition, the above embodiments have closed the gap of wave parallel processing (WPP), making it suitable for use in low latency transmission scenarios. Therefore, a new encapsulation format for
Наконец отмечается, что именованием для новых слайсов также может быть «поднабор/легковесные слайсы», но название «зависимый слайс» было найдено лучшим.Finally, it is noted that the naming for new slices could also be "subset/lightweight slices", but the name "dependent slice" was found to be the best.
Была представлена сигнализация, которая описывает уровень распараллеливания при кодировании и транспортировке.Signaling has been introduced that describes the level of parallelism in encoding and transport.
Хотя некоторые аспекты были описаны в контексте устройства, ясно, что эти аспекты также представляют описание соответствующего способа, где блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа, также представляют описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все из этапов способа могут выполняться аппаратным устройством (или использовать его), подобным, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления некоторый один или несколько из наиболее важных этапов способа могут исполняться таким устройством.Although some aspects have been described in the context of a device, it is clear that these aspects also represent a description of the corresponding method, where the block or device corresponds to a method step or a feature of a method step. Likewise, the aspects described in the context of a method step also provide a description of the corresponding block or element or feature of the corresponding device. Some or all of the steps of the method may be performed by (or use) a hardware device such as, for example, a microprocessor, a programmable computer, or an electronic circuit. In some embodiments, some one or more of the most important steps of the method may be performed by such a device.
В зависимости от некоторых требований к реализации, варианты осуществления изобретения могут быть реализованы аппаратными или программными средствами. Реализация может выполняться с использованием среды для запоминания цифровых данных, например, дискета, цифровой многофункциональный диск (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 carried out using a media for storing digital data, such as floppy disk, digital versatile disc (DVD), Blu-ray disc, compact disc (CD), read only memory (ROM), programmable ROM (PROM), erasable programmable ROM ( EPROM), electrically erasable programmable ROM (EEPROM), or flash memory having electronically readable control signals stored thereon that interact (or methods of interact) with a programmable computer system such that the corresponding method is performed. Therefore, the digital data 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 data storage medium or computer-readable medium) containing a computer program recorded thereon for performing one of the methods described herein. The storage medium, digital data storage medium or recorded medium is usually tangible and/or durable.
Другим вариантом осуществления обладающими признаками изобретения способа, поэтому, является поток данных или последовательность сигналов, представляющих компьютерную программу для выполнения одного из способов, описанных в данном документе. Поток данных или последовательность сигналов, например, может быть выполнена с возможностью передачи по соединению для передачи данных, например, по Интернету.Another embodiment of an inventive method, therefore, is a data stream or sequence of signals representing a computer program for performing one of the methods described herein. The data stream or signal sequence, for example, may be configured to be transmitted over a data connection, such as the Internet.
Другой вариант осуществления содержит средство обработки, например, компьютер, или программируемое логическое устройство, выполненное с возможностью или адаптированное для выполнения одного из способов, описанных в данном документе.Another embodiment comprises a processing means, such as a computer or programmable logic device, capable of 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 configured to send (eg, electronically or optically) a computer program for performing one of the methods described herein to a receiver. The receiver may, for example, be a computer, a mobile device, a memory device, or the like. The device or system, for example, may include a file server for sending a computer program to a receiver.
В некоторых вариантах осуществления программируемое логическое устройство (например, программируемая вентильная матрица) может использоваться для выполнения некоторых или всех функциональных возможностей способов, описанных в данном документе. В некоторых вариантах осуществления программируемая вентильная матрица может взаимодействовать с микропроцессором, чтобы выполнять один из способов, описанных в данном документе. Обычно, способы, предпочтительно, выполняются любым аппаратным устройством.In some embodiments, a programmable logic device (eg, a field programmable gate array) may be used to perform some or all of the functionality of the methods described herein. In some embodiments, a programmable gate array may communicate with a microprocessor to perform one of the methods described herein. Typically, 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 clear that modifications and variations of the devices and details described in this document are obvious to those skilled in the art. Therefore, the intent is that it is only limited by the scope of the pending claims and not by the specific details provided by way of describing and explaining the embodiments herein.
Другой вариант осуществления содержит декодер для восстановления изображения (10) из потока (12) данных, в который изображение кодировано в единицах слайсов (14), на которые изображение (10) разбито, причем декодер выполнен с возможностью декодирования слайсов (14) из потока (12) данных в соответствии с порядком (16) слайсов, и декодер реагирует на участок (18) синтаксического элемента в текущем слайсе из слайсов, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере двух режимов (20, 22), и,Another embodiment comprises a decoder for restoring an image (10) from a data stream (12) into which the image is encoded in units of slices (14) into which the image (10) is divided, the decoder being configured to decode slices (14) from a stream ( 12) data according to slice order (16), and the decoder responds to the syntax element portion (18) in the current slice of slices to decode the current slice according to one of at least two modes (20, 22), and,
в соответствии с первым (20) из упомянутых по меньшей мере двух режимов, декодирования текущего слайса из потока (12) данных, используя контекстно-адаптивное энтропийное декодирование (24), включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию (38, 40) вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее декодированного слайса, и декодирования с предсказанием через границы слайсов, и,in accordance with the first (20) of the at least two mentioned modes, decoding the current slice from the data stream (12) using context-adaptive entropy decoding (24), including deriving contexts across slice boundaries, continuously updating context symbol probabilities, and initializing (38, 40) the symbol probabilities depending on the stored symbol probability states of the previously decoded slice, and cross-slice boundary predictive decoding, and,
в соответствии со вторым (22) из упомянутых по меньшей мере двух режимов, декодирования текущего слайса из потока (12) данных, используя контекстно-адаптивное энтропийное декодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее декодированного слайса, и декодирования с предсказанием с ограничением декодирования с предсказанием, чтобы не пересекать границы слайсов.in accordance with the second (22) of said at least two modes, decoding the current slice from the data stream (12) using context-adaptive entropy decoding with context derivation constrained to avoid slice boundaries, continuously updating context symbol probabilities, and initializing probabilities symbol regardless of any previously decoded slice, and predictive decoding with predictive decoding constraint not to cross slice boundaries.
В дополнительном варианте осуществления обеспечен декодер, в котором изображение (10) разбивается на блоки (32) кодирования, расположенные по строкам и столбцам и имеющие порядок (36) сканирования растра, определенный между ними, и декодер выполнен с возможностью ассоциирования каждого слайса (14) с непрерывным поднабором блоков (32) кодирования в порядке (36) сканирования растра, так что поднаборы следуют друг за другом в соответствии с порядком (36) сканирования растра в соответствии с порядком слайсов.In an additional embodiment, a decoder is provided in which the image (10) is divided into coding blocks (32) arranged in rows and columns and having a raster scan order (36) defined between them, and the decoder is configured to associate each slice (14) with a continuous subset of coding blocks (32) in raster scan order (36), so that the subsets follow each other in accordance with the raster scan order (36) in accordance with the slice order.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока (32) кодирования в строке в соответствии с порядком (36) сканирования растра, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в соответствии с первым режимом, проверки, является ли первый блок кодирования непрерывного поднабора блоков (32) кодирования, ассоциированных с текущим слайсом, первым блоком (32) кодирования в строке в соответствии с порядком сканирования растра, и, если это так, инициализации (40) вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от сохраненных вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до второго блока кодирования в строке в соответствии с порядком (36) сканирования растра, и, если нет, инициализации (38) вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса.In a further embodiment, a decoder is provided, wherein the decoder is configured to store the symbol probabilities obtained by context-adaptive entropy decoding of a previously decoded slice to a second coding block (32) in a row according to a raster scan order (36) and, upon initializing the probabilities symbol for context-adaptive entropy decoding of the current slice in accordance with the first mode, checking whether the first coding block of a continuous subset of coding blocks (32) associated with the current slice is the first coding block (32) in a row in accordance with the raster scan order, and, if so, initializing (40) the symbol probabilities for context-adaptive entropy decoding of the current slice depending on the stored symbol probabilities obtained by context-adaptive entropy decoding of the previously decoded slice to the second coding block in the row, respectively and with raster scan order (36), and if not, initialization (38) of symbol probabilities for context-adaptive entropy decoding of the current slice depending on the symbol probabilities obtained by context-adaptive entropy decoding of the previously decoded slice to the end of the previously decoded slice.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью реагирования на участок (18) синтаксического элемента в текущем слайсе из слайсов (14), чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере трех режимов, а именно, в одном из первого (20) и третьего режима (42) или второго режима (22), причем декодер выполнен с возможностью,In a further embodiment, a decoder is provided, wherein the decoder is configured to respond to a syntax element portion (18) in a current slice of slices (14) to decode the current slice in accordance with one of at least three modes, namely one of first (20) and third mode (42) or second mode (22), and the decoder is configured to
в соответствии с третьим режимом (42), декодирования текущего слайса из потока данных, используя контекстно-адаптивное энтропийное декодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее декодированного слайса, и декодирования с предсказанием через границы слайсов,according to the third mode (42), decoding the current slice from the data stream using context-adaptive entropy decoding with context output constrained to avoid slice boundaries, continuously updating the symbol probabilities of the contexts, and initializing the symbol probabilities independently of any previously decoded slice, and predictive decoding across slice boundaries,
причем один из первого и третьего режимов выбирается в зависимости от синтаксического элемента.wherein one of the first and third modes is selected depending on the syntax element.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью реагирования на обобщенный синтаксический элемент в потоке данных, чтобы работать в одном из по меньшей мере двух обобщенных режимов работы с, согласно первому обобщенному режиму работы, выполнением реагирования на участок синтаксического элемента для каждого слайса, и, согласно второму обобщенному режиму работы, неизбежным использованием другого одного из упомянутых по меньшей мере двух режимов кроме первого режима.In a further embodiment, a decoder is provided, wherein the decoder is configured to respond to a generic syntax element in the data stream to operate in one of at least two generic modes of operation, with, according to the first generic mode of operation, performing response to a portion of the syntax element for each slice. , and, according to the second generalized mode of operation, the inevitable use of another one of the at least two mentioned modes other than the first mode.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью, согласно первому и второму режимам, неизбежного и непрерывного продолжения непрерывного обновления вероятностей символа с начала до конца текущего слайса.In a further embodiment, a decoder is provided, wherein the decoder is configured, according to the first and second modes, to inevitably and continuously continue to continuously update symbol probabilities from the beginning to the end of the current slice.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном декодировании ранее декодированного слайса до конца ранее декодированного слайса, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в соответствии с первым режимом, инициализации вероятностей символа для контекстно-адаптивного энтропийного декодирования текущего слайса в зависимости от сохраненных вероятностей символа.In a further embodiment, a decoder is provided, wherein the decoder is configured to store symbol probabilities obtained by context-adaptive entropy decoding of a previously decoded slice to the end of the previously decoded slice, and, when initializing the symbol probabilities for context-adaptive entropy decoding of the current slice in accordance with the first mode, initializing symbol probabilities for context-adaptive entropy decoding of the current slice depending on the stored symbol probabilities.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью, в первом и втором режиме, ограничения декодирования с предсказанием в тайлах, на которые изображение подразделено.In a further embodiment, a decoder is provided, wherein the decoder is configured, in the first and second modes, to limit predictive decoding to the tiles into which the image is subdivided.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью, в первом и втором режиме, считывания информации из текущего слайса, показывая подразделение текущего слайса на параллельные подразделы, прекращения контекстно-адаптивного энтропийного декодирования в конце первого параллельного подраздела и возобновления контекстно-адаптивного энтропийного декодирования вновь в начале любого последующего параллельного подраздела, в том числе, в первом режиме, инициализацию вероятностей символа в зависимости от сохраненных состояний вероятностей символа предшествующего параллельного подраздела и, во втором режиме, инициализацию вероятностей символа независимо от любого ранее декодированного слайса и любого ранее декодированного параллельного подраздела.In a further embodiment, a decoder is provided, wherein the decoder is configured, in first and second modes, to read information from the current slice showing subdivision of the current slice into parallel subsections, to terminate context-adaptive entropy decoding at the end of the first parallel sub-section, and to resume context-adaptive entropy decoding. decoding again at the beginning of any subsequent parallel subsection, including, in a first mode, initialization of symbol probabilities depending on the stored symbol probability states of the previous parallel subsection and, in a second mode, initialization of symbol probabilities independently of any previously decoded slice and any previously decoded parallel subsection.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью, в соответствии с первым (20) из упомянутых по меньшей мере двух режимов, копирования для текущего слайса участка синтаксиса заголовка слайса из предшествующего слайса, декодированного во втором режиме.In a further embodiment, a decoder is provided, wherein the decoder is configured, in accordance with the first (20) of said at least two modes, to copy, for the current slice, a portion of the slice header syntax from a previous slice decoded in the second mode.
В дополнительном варианте осуществления обеспечен декодер, причем декодер выполнен с возможностью восстановления изображения (10) из потока (12) данных, используя обработку WPP, причем каждый слайс (14) содержит участок (400) синтаксиса начала, указывающий положение начала декодирования соответствующего слайса в изображении (10), и в котором декодер выполнен с возможностьюIn a further embodiment, a decoder is provided, wherein the decoder is configured to reconstruct an image (10) from a data stream (12) using WPP processing, with each slice (14) comprising a start syntax section (400) indicating the decoding start position of the corresponding slice in the image (10), and in which the decoder is configured to
идентификации точек входа подпотоков WPP, в которые группируются слайсы, посредством идентификации, используя участки синтаксиса начала слайсов, слайсов, начинающихся на левой стороне изображения, иidentifying the entry points of the WPP substreams into which slices are grouped by identifying, using slice start syntax portions, slices starting on the left side of the image, and
параллельного декодирования подпотоков WPP ступенчатым образом с последовательным началом декодирования подпотоков WPP в соответствии с порядком слайсов.decoding the WPP substreams in parallel in a staggered manner, with sequential start of decoding the WPP substreams according to the slice order.
В другом варианте осуществления обеспечен кодер для кодирования изображения (10) в поток (12) данных в единицах слайсов (14), на которые разбито изображение (10), причем кодер выполнен с возможностью кодирования слайсов (14) в поток (12) данных в соответствии с порядком (16) слайсов, и кодер выполнен с возможностьюIn another embodiment, an encoder is provided for encoding an image (10) into a data stream (12) in units of slices (14) into which the image (10) is divided, the encoder being configured to encode the slices (14) into a data stream (12) into according to the order (16) of slices, and the encoder is configured to
определения участка (18) синтаксического элемента для текущего слайса из слайсов, и кодирования его в него, так что участок синтаксического элемента сигнализирует, что текущий слайс должен быть кодирован в соответствии с одним из по меньшей мере двух режимов (20, 22), и,determining a syntax element section (18) for the current slice of slices, and encoding it into it, such that the syntax element section signals that the current slice should be encoded in accordance with one of at least two modes (20, 22), and,
если текущий слайс должен быть кодирован в соответствии с первым (20) из упомянутых по меньшей мере двух режимов, кодирования текущего слайса в поток (12) данных, используя контекстно-адаптивное энтропийное кодирование (24), включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию (38, 40) вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее кодированного слайса, и кодирования с предсказанием через границы слайсов, и,if the current slice is to be encoded in accordance with the first (20) of the at least two mentioned modes, encoding the current slice into the data stream (12) using context-adaptive entropy coding (24), including deriving contexts across slice boundaries, continuously updating the symbol probabilities of the contexts and initializing (38, 40) the symbol probabilities depending on the stored symbol probabilities states of the previously encoded slice, and cross-slice boundary predictive coding, and,
если текущий слайс должен быть кодирован в соответствии со вторым (22) из упомянутых по меньшей мере двух режимов, кодирования текущего слайса в поток (12) данных, используя контекстно-адаптивное энтропийное кодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее кодированного слайса, и кодирования с предсказанием с ограничением кодирования с предсказанием, чтобы не пересекать границы слайсов.if the current slice is to be encoded in accordance with the second (22) of said at least two modes, encoding the current slice into the data stream (12) using context-adaptive entropy coding with context derivation constraint so as not to cross slice boundaries, continuous update contexts symbol probabilities and initializing the symbol probabilities independently of any previously encoded slice, and constrained predictive coding to not cross slice boundaries.
В дополнительном варианте осуществления обеспечен кодер, причем изображение (10) разбивается на блоки (32) кодирования, расположенные по строкам и столбцам и имеющие порядок (36) сканирования растра, определенный между ними, и кодер выполнен с возможностью ассоциирования каждого слайса (14) с непрерывным поднабором блоков (32) кодирования в порядке (36) сканирования растра, так что поднаборы следуют один за другим в соответствии с порядком (36) сканирования растра в соответствии с порядком слайсов.In an additional embodiment, an encoder is provided, wherein the image (10) is divided into coding blocks (32) arranged in rows and columns and having a raster scan order (36) defined between them, and the encoder is configured to associate each slice (14) with a continuous subset of coding blocks (32) in raster scan order (36), so that the subsets follow one after the other in accordance with the raster scan order (36) in accordance with the slice order.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до второго блока (32) кодирования в строке в соответствии с порядком (36) сканирования растра, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в соответствии с первым режимом, проверки, является ли первый блок кодирования непрерывного поднабора блоков (32) кодирования, ассоциированных с текущим слайсом, первым блоком (32) кодирования в строке в соответствии с порядком сканирования растра, и, если это так, инициализации (40) вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от сохраненных вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до второго блока кодирования в строке в соответствии с порядком (36) сканирования растра, и, если это не так, инициализации (38) вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее декодированного слайса до конца ранее кодированного слайса.In a further embodiment, an encoder is provided, wherein the encoder is configured to store the symbol probabilities obtained by context-adaptive entropy encoding of a previously encoded slice to a second coding block (32) in a row according to a raster scan order (36) and, upon initializing the probabilities character for context-adaptive entropy coding of the current slice in accordance with the first mode, checking whether the first coding block of a continuous subset of coding blocks (32) associated with the current slice is the first coding block (32) in a row in accordance with the raster scan order, and, if so, initializing (40) the symbol probabilities for context-adaptive entropy coding of the current slice depending on the stored symbol probabilities obtained by context-adaptive entropy coding of the previously encoded slice up to the second coding block in the row according to the order (36 ) scanning the raster, and if not, initializing (38) the symbol probabilities for context-adaptive entropy coding of the current slice depending on the symbol probabilities obtained by context-adaptive entropy coding of the previously decoded slice to the end of the previously coded slice.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью кодирования участка (18) синтаксического элемента в текущий слайс из слайсов (14), так что сигнализируется, что текущий слайс должен быть кодирован в него в соответствии с одним из по меньшей мере трех режимов, а именно в одном из первого (20) и третьего режима (42) или второго режима (22), причем кодер выполнен с возможностью,In a further embodiment, an encoder is provided, wherein the encoder is configured to encode a portion (18) of a syntax element into a current slice of slices (14), such that the current slice is signaled to be encoded into it in accordance with one of at least three modes. , namely in one of the first (20) and third mode (42) or second mode (22), and the encoder is configured to,
в соответствии с третьим режимом (42), кодирования текущего слайса в поток данных, используя контекстно-адаптивное энтропийное кодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее кодированного слайса, и кодирования с предсказанием через границы слайсов,in accordance with the third mode (42), encoding the current slice into the data stream using context-adaptive entropy coding with constraint output of contexts so as not to cross slice boundaries, continuously updating the symbol probabilities of the contexts, and initializing the symbol probabilities independently of any previously encoded slice, and predictive coding across slice boundaries,
причем кодер различает один из первого и третьего режимов, используя синтаксический элемент.wherein the encoder distinguishes between one of the first and third modes using a syntax element.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью определения обобщенного синтаксического элемента и записи его в поток данных, работая в одном из по меньшей мере двух обобщенных режимов работы в зависимости от обобщенного синтаксического элемента, а именно, с, согласно первому обобщенному режиму работы, выполнением кодирования участка синтаксического элемента для каждого слайса, и, согласно второму обобщенному режиму работы, неизбежным использованием другого одного из упомянутых по меньшей мере двух режимов, кроме первого режима.In a further embodiment, an encoder is provided, wherein the encoder is configured to determine a generic syntax element and write it to the data stream, operating in one of at least two generic modes of operation depending on the generic syntax element, namely c, according to the first generic mode of operation, performing encoding of a portion of the syntax element for each slice, and, according to the second generalized mode of operation, inevitably using another one of the at least two modes, in addition to the first mode.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью, согласно первому и второму режимам, неизбежного и непрерывного продолжения непрерывного обновления вероятностей символа с начала до конца текущего слайса.In a further embodiment, an encoder is provided, wherein the encoder is configured, according to the first and second modes, to inevitably and continuously continue continuously updating symbol probabilities from the beginning to the end of the current slice.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью сохранения вероятностей символа, полученных при контекстно-адаптивном энтропийном кодировании ранее кодированного слайса до конца ранее кодированного слайса, и, при инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в соответствии с первым режимом, инициализации вероятностей символа для контекстно-адаптивного энтропийного кодирования текущего слайса в зависимости от сохраненных вероятностей символа.In a further embodiment, an encoder is provided, wherein the encoder is configured to store symbol probabilities obtained by context-adaptive entropy coding of a previously encoded slice to the end of the previously encoded slice, and, when initializing the symbol probabilities for context-adaptive entropy coding of the current slice according to the first mode, initializing symbol probabilities for context-adaptive entropy coding of the current slice depending on the stored symbol probabilities.
В дополнительном варианте осуществления обеспечен кодер, причем кодер выполнен с возможностью, в первом и втором режиме, ограничения кодирования с предсказанием в тайлах, на которые изображение подразделено.In a further embodiment, an encoder is provided, the encoder being configured, in the first and second modes, to limit predictive coding in tiles into which the image is subdivided.
В другом варианте осуществления обеспечен декодер для восстановления изображения (10) из потока (12) данных, в который изображение кодировано в единицах слайсов (14), на которые разбито изображение (10), используя обработку WPP, причем декодер выполнен с возможностью декодирования слайсов (14) из потока (12) данных в соответствии с порядком (16) слайсов, причем каждый слайс (14) содержит участок (400) синтаксиса начала, указывающий положение начала декодирования соответствующего слайса в изображении (10), и декодер выполнен с возможностьюIn another embodiment, a decoder is provided for recovering an image (10) from a data stream (12) into which the image is encoded in units of slices (14) into which the image (10) is divided using WPP processing, the decoder being configured to decode the slices ( 14) from the data stream (12) in accordance with the order (16) of slices, each slice (14) contains a start syntax section (400) indicating the decoding start position of the corresponding slice in the image (10), and the decoder is configured to
идентификации точек входа подпотоков WPP, в которые группируются слайсы, посредством идентификации, используя участки (400) синтаксиса начала слайсов, слайсов, начинающихся на левой стороне изображения,identifying entry points of WPP substreams into which slices are grouped by identifying, using the slice start syntax sections (400), slices starting on the left side of the image,
параллельного декодирования подпотоков WPP ступенчатым образом с последовательным началом декодирования подпотоков WPP в соответствии с порядком слайсов.decoding the WPP substreams in parallel in a staggered manner, with sequential start of decoding the WPP substreams according to the slice order.
В другом варианте осуществления обеспечен кодер для кодирования изображения (10) в поток (12) данных, в который изображение кодируется в единицах слайсов (14), на которые разбито изображение (10), используя обработку WPP, причем кодер выполнен с возможностью кодирования слайсов (14) в поток (12) данных в соответствии с порядком (16) слайсов, причем кодер выполнен с возможностью обеспечения каждого слайса (14) с участком (400) синтаксиса начала, указывающим положение начала кодирования соответствующего слайса в изображении (10), и кодер выполнен с возможностьюIn another embodiment, an encoder is provided for encoding an image (10) into a data stream (12) into which the image is encoded in units of slices (14) into which the image (10) is divided using WPP processing, the encoder being configured to encode slices ( 14) into the data stream (12) in accordance with the order (16) of slices, wherein the encoder is configured to provide each slice (14) with a start syntax section (400) indicating the start position of the encoding of the corresponding slice in the image (10), and the encoder made with the possibility
группирования слайсов в подпотоки WPP, так что для каждого подпотока WPP первый слайс в порядке слайсов начинается на левой стороне изображения, иgrouping slices into WPP substreams such that for each WPP substream, the first slice in slice order starts on the left side of the image, and
параллельного кодирования подпотоков WPP ступенчатым образом с последовательным началом кодирования подпотоков WPP в соответствии с порядком слайсов.parallel encoding of the WPP substreams in a staggered manner, with sequential start of encoding of the WPP substreams according to the slice order.
В другом варианте осуществления обеспечен способ восстановления изображения (10) из потока (12) данных, в который изображение кодировано в единицах слайсов (14), на которые разбито изображение (10), причем способ содержит декодирование слайсов (14) из потока (12) данных в соответствии с порядком (16) слайсов, и способ реагирует на участок (18) синтаксического элемента в текущем слайсе из слайсов, чтобы декодировать текущий слайс в соответствии с одним из по меньшей мере двух режимов (20, 22), в котором,In another embodiment, a method is provided for restoring an image (10) from a data stream (12), in which the image is encoded in units of slices (14) into which the image (10) is divided, the method comprising decoding slices (14) from the stream (12) data in accordance with the order (16) of slices, and the method responds to the plot (18) of the syntax element in the current slice of slices to decode the current slice in accordance with one of at least two modes (20, 22), in which,
в соответствии с первым (20) из упомянутых по меньшей мере двух режимов, текущий слайс декодируется из потока (12) данных, используя контекстно-адаптивное энтропийное декодирование (24), включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию (38, 40) вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее декодированного слайса, и декодирования с предсказанием через границы слайсов, и,in accordance with the first (20) of the at least two mentioned modes, the current slice is decoded from the data stream (12) using context-adaptive entropy decoding (24), including inference of contexts across slice boundaries, continuous updating of contexts symbol probabilities, and initializing (38, 40) the symbol probabilities depending on the stored symbol probability states of the previously decoded slice, and cross-slice boundary predictive decoding, and,
в соответствии со вторым (22) из упомянутых по меньшей мере двух режимов, текущий слайс декодируется из потока (12) данных, используя контекстно-адаптивное энтропийное декодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее декодированного слайса, и декодирования с предсказанием с ограничением декодирования с предсказанием, чтобы не пересекать границы слайсов.according to the second (22) of the at least two modes, the current slice is decoded from the data stream (12) using context-adaptive entropy decoding with context derivation constrained to avoid crossing slice boundaries, continuously updating context symbol probabilities, and initializing probabilities symbol regardless of any previously decoded slice, and predictive decoding with predictive decoding constraint not to cross slice boundaries.
В другом варианте осуществления обеспечен способ кодирования изображения (10) в поток (12) данных в единицах слайсов (14), на которые разбито изображение (10), причем способ содержит кодирование слайсов (14) в поток (12) данных в соответствии с порядком (16) слайсов, и способ содержитIn another embodiment, a method is provided for encoding an image (10) into a data stream (12) in units of slices (14) into which the image (10) is divided, the method comprising encoding slices (14) into a data stream (12) in accordance with the order (16) slices, and the method comprises
определение участка (18) синтаксического элемента для текущего слайса из слайсов и кодирование его в него, так что участок синтаксического элемента сигнализирует, что текущий слайс должен быть кодирован в соответствии с одним из по меньшей мере двух режимов (20, 22), и,defining a syntax element section (18) for the current slice of slices and encoding it into it, such that the syntax element section signals that the current slice should be encoded according to one of at least two modes (20, 22), and,
если текущий слайс должен быть кодирован в соответствии с первым (20) из упомянутых по меньшей мере двух режимов, кодирование текущего слайса в поток (12) данных, используя контекстно-адаптивное энтропийное кодирование (24), включающее в себя вывод контекстов через границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию (38, 40) вероятностей символа в зависимости от сохраненных состояний вероятностей символа ранее кодированного слайса, и кодирования с предсказанием через границы слайсов, и,if the current slice is to be encoded in accordance with the first (20) of the at least two mentioned modes, encoding the current slice into the data stream (12) using context-adaptive entropy coding (24), including deriving contexts across slice boundaries, continuously updating the symbol probabilities of the contexts and initializing (38, 40) the symbol probabilities depending on the stored symbol probabilities states of the previously encoded slice, and cross-slice boundary predictive coding, and,
если текущий слайс должен быть кодирован в соответствии со вторым (22) из упомянутых по меньшей мере двух режимов, кодирование текущего слайса в поток (12) данных, используя контекстно-адаптивное энтропийное кодирование с ограничением вывода контекстов, чтобы не пересекать границы слайсов, непрерывное обновление вероятностей символа контекстов и инициализацию вероятностей символа независимо от любого ранее кодированного слайса, и кодирования с предсказанием с ограничением кодирования с предсказанием, чтобы не пересекать границы слайсов.if the current slice is to be encoded according to the second (22) of said at least two modes, encoding the current slice into the data stream (12) using context-adaptive entropy coding with context derivation constraint so as not to cross slice boundaries, continuous update contexts symbol probabilities and initializing the symbol probabilities independently of any previously encoded slice, and constrained predictive coding to not cross slice boundaries.
В другом варианте осуществления обеспечен способ восстановления изображения (10) из потока (12) данных, в который изображение кодировано в единицах слайсов (14), на которые разбито изображение (10), используя обработку WPP, причем способ содержит декодирование слайсов (14) из потока (12) данных в соответствии с порядком (16) слайсов, причем каждый слайс (14) содержит участок (400) синтаксиса начала, указывающий положение начала декодирования соответствующего слайса в изображении (10), и способ дополнительно содержитIn another embodiment, a method is provided for recovering an image (10) from a data stream (12) in which the image is encoded in units of slices (14) into which the image (10) is divided using WPP processing, the method comprising decoding the slices (14) from of the data stream (12) in accordance with the order (16) of slices, each slice (14) contains a start syntax section (400) indicating the decoding start position of the corresponding slice in the image (10), and the method further comprises
идентификацию точек входа подпотоков WPP, в которые группируются слайсы, посредством идентификации, используя участки (400) синтаксиса начала слайсов, слайсов, начинающихся на левой стороне изображения,identifying entry points of WPP substreams into which slices are grouped by identifying, using slice start syntax sections (400), slices starting on the left side of the image,
параллельное декодирование подпотоков WPP ступенчатым образом с последовательным началом декодирования подпотоков WPP в соответствии с порядком слайсов.parallel decoding of WPP substreams in a staggered manner, with sequential start of decoding of WPP substreams according to slice order.
В другом варианте осуществления обеспечен способ кодирования изображения (10) в поток (12) данных, в который изображение кодируется в единицах слайсов (14), на которые разбито изображение (10), используя обработку WPP, причем способ содержит кодирование слайсов (14) в поток (12) данных в соответствии с порядком (16) слайсов, и обеспечение каждого слайса (14) участком (400) синтаксиса начала, указывающим положение начала кодирования соответствующего слайса в изображении (10), и дополнительноIn another embodiment, a method is provided for encoding an image (10) into a data stream (12) into which the image is encoded in units of slices (14) into which the image (10) is divided using WPP processing, the method comprising encoding the slices (14) into a data stream (12) in accordance with the order (16) of slices, and providing each slice (14) with a start syntax section (400) indicating the start position of the encoding of the corresponding slice in the image (10), and additionally
группирование слайсов в подпотоки WPP, так что для каждого подпотока WPP первый слайс в порядке слайсов начинается на левой стороне изображения, иgrouping slices into WPP substreams such that for each WPP substream, the first slice in slice order starts on the left side of the image, and
параллельное кодирование подпотоков WPP ступенчатым образом с последовательным началом кодирования подпотоков WPP в соответствии с порядком слайсов.parallel encoding of the WPP substreams in a staggered fashion, with sequential start of encoding of the WPP substreams according to slice order.
В другом варианте осуществления обеспечена компьютерная программа, имеющая программный код для выполнения, при выполнении программы на компьютере, способа по п.22 или 25.In another embodiment, a computer program is provided having program code for executing, when the program is executed on the computer, the method of
Список литературыBibliography
Claims (27)
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US61/624,098 | 2012-04-13 | ||
US61/666,185 | 2012-06-29 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
RU2019141081A Division RU2758037C2 (en) | 2012-04-13 | 2019-12-12 | Low-latency image encoding |
Publications (1)
Publication Number | Publication Date |
---|---|
RU2784930C1 true RU2784930C1 (en) | 2022-12-01 |
Family
ID=
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH09298668A (en) * | 1996-05-07 | 1997-11-18 | Mitsubishi Electric Corp | Digital information coder, digital information decoder, digital information coding/decoding device, digital information coding method and digital information decoding method |
JP3133403B2 (en) * | 1990-08-16 | 2001-02-05 | ヒューレット・パッカード・カンパニー | Neighborhood block prediction bit compression method |
JP3409552B2 (en) * | 1995-12-27 | 2003-05-26 | 三菱電機株式会社 | Digital information encoding device, digital information decoding device, and digital information encoding / decoding device |
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3133403B2 (en) * | 1990-08-16 | 2001-02-05 | ヒューレット・パッカード・カンパニー | Neighborhood block prediction bit compression method |
JP3409552B2 (en) * | 1995-12-27 | 2003-05-26 | 三菱電機株式会社 | Digital information encoding device, digital information decoding device, and digital information encoding / decoding device |
JPH09298668A (en) * | 1996-05-07 | 1997-11-18 | Mitsubishi Electric Corp | Digital information coder, digital information decoder, digital information coding/decoding device, digital information coding method and digital information decoding method |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
RU2758037C2 (en) | Low-latency image encoding | |
RU2784930C1 (en) | Low latency image encoding | |
RU2785714C1 (en) | Low latency image encoding |