ПРИНЦИП КОДИРОВАНИЯ, ДЕЛАЮЩИЙ ВОЗМОЖНОЙ ПАРАЛЛЕЛЬНУЮ ОБРАБОТКУ, ТРАНСПОРТНЫЙ ДЕМУЛЬТИПЛЕКСОР И БИТОВЫЙ ПОТОК ВИДЕО
ENCODING PRINCIPLE THAT MAKES PARALLEL PROCESSING POSSIBLE, TRANSPORT DEMULTIPLEXER AND VIDEO BITSTREAM

Настоящее изобретение относится к принципам кодирования, делающим возможным параллельную обработку, такую как в развивающемся стандарте HEVC (высокоэффективное видеокодирование), транспортному демультиплексору и битовому потоку видео.
Распараллеливание кодера и декодера является очень важным из-за повышенных требований к обработке стандартом HEVC, а также ожидаемым повышением разрешения видео. Многоядерные архитектуры становятся доступными в широком диапазоне современных электронных устройств. Следовательно, требуются эффективные способы, делающие возможным использование многоядерных архитектур.
Кодирование или декодирование наибольшей единицы кодирования (LCU) происходит с растровым сканированием, посредством которого вероятности контекстно-адаптивного двоичного арифметического кодирования (CABAC) адаптируются к специфичности каждого графического изображения. Пространственные зависимости существуют между соседними LCU. Каждая LCU зависит от ее левой, верхней, верхней слева и верхней справа соседней LCU из-за разных составляющих, например, вектора движения, предсказания, внутреннего предсказания и других. Чтобы сделать возможной распараллеливание при декодировании, эти зависимости обычно должны быть прерваны или прерываются в новейших применениях.
Были предложены некоторые принципы распараллеливания, а именно волновая обработка, использующая энтропийные слайсы [3], операции волновой параллельной обработки (WPP), использующие подпотоки [2] [4], [11], или тайлы [5]. Последние не требуют обязательного объединения с волновой обработкой, для того чтобы сделать возможным распараллеливание в декодере или кодере. С этой точки зрения тайлы подобны подпотокам WPP. Первоначальным мотиватором изобретателей для дальнейшего исследования принципа энтропийных слайсов является выполнение методов, которые уменьшают потери эффективности кодирования и, таким образом, уменьшают нагрузку на битовый поток для подходов распараллеливания в кодере и декодере.
Чтобы обеспечить лучшее понимание, в частности использования LCU, можно сначала рассмотреть структуру H.264/AVC [1].
Кодированная видеопоследовательность в H.264/AVC состоит из последовательности единиц доступа, которые собраны в поток единиц уровня сетевой абстракции (NAL), и они используют только один набор параметров последовательности. Каждая видеопоследовательность может декодироваться независимо. Кодированная последовательность состоит из последовательности кодированных изображений. Кодированным кадром может быть целый кадр или единственное поле. Каждое изображение разделяется на макроблоки фиксированного размера (в HEVC [5]: LCU). Несколько макроблоков или LCU могут объединяться вместе в один слайс. Изображение, поэтому, представляет собой совокупность из одного или нескольких слайсов. Целью этого разделения данных является получение возможности независимого декодирования отсчетов в области изображения, которая представлена слайсом, без использования данных из других слайсов.
Методом, который часто упоминается как «энтропийные слайсы» [3], является разделение традиционного слайса на дополнительные подслайсы. Конкретно, это означает разделение энтропийно кодированных данных единственного слайса. Размещение энтропийных слайсов в слайсе может быть разнообразным. Самым простейшим является использование каждой строки LCU/макроблоков в кадре в качестве одного энтропийного слайса. Альтернативно, столбцы или отдельные области могут использоваться в качестве энтропийных слайсов, которые даже могут прерываться и переключаться друг с другом, например, слайс 1 на фиг. 1.
Очевидной целью принципа энтропийных слайсов является предоставление возможности использования параллельных центрального процессора/графического процессора (CPU/GPU) и многоядерных архитектур, чтобы улучшить время процесса декодирования, т.е. ускорить процесс. Текущий слайс может быть разделен на разделы, которые могут быть подвернуты синтаксическому анализу и восстановлены без ссылки на данные другого слайса. Хотя могут быть достигнуты некоторые преимущества с подходом энтропийных слайсов, в результате этого возникают некоторые проблемы.
Принцип энтропийных слайсов был дополнительно расширен до волновой обработки подпотоков (WPP), как предложено в [2], [10], [11] и частично интегрировано в [5]. В данном случае определяется схема повторения подпотоков. Что действительно имеет улучшенную инициализацию энтропийного состояния на строку по сравнению с энтропийными слайсами.
Принцип тайлов позволяет получить разделение информации изображения, подлежащей кодированию, в тоже время каждый тайл имеет свой собственный порядок растрового сканирования. Тайл определяется общей структурой, которая повторяется в кадре. Тайл также может иметь некоторую ширину столбца и высоту строки в единицах LCU или CU (единица кодирования). Тайлы также могут кодироваться независимо и также могут кодироваться таким образом, что им не требуется совместная обработка с другими тайлами, так что потоки декодера могут обрабатывать тайлы единицы доступа полностью или по меньшей мере для некоторых этапов операции кодирования независимым образом, т.е. энтропийное кодирование и кодирование с преобразованием.
Поэтому тайл в значительной степени позволяет выполнять работу кодеров, а также декодеров тайла полностью или частично независимо параллельным образом, в последнем случае, например, до этапа фильтрации кодека HEVC.
Чтобы выполнить полное использование методов распараллеливания в цепочке захвата, кодирования, передачи, декодирования и представления системы видеосвязи, или подобных систем, транспортировка и доступ к данным между участниками связи представляет собой важный и требующий много времени этап для внесения полной сквозной задержки. Это является проблемой в особенности при использовании методов распараллеливания, таких как тайлы, подпотоки или энтропийные слайсы.
Подходы к передаче данных подпотоков WPP подразумевает, что кодированные данные разделов, если они обработаны, не имеют локальности данных, т.е. единственному потоку, декодирующему единицу доступа, необходимо перескакивать через потенциально большие участки памяти, чтобы выполнить доступ к данным следующей строки подпотока WPP. Многопоточной системе декодирования необходимо ожидать передачу некоторых данных, т.е. подпотоков WPP, чтобы работать полностью параллельным образом, так чтобы использовать волновую обработку.
В потоковом видео обеспечение более высоких разрешений (Full-HD, QUAD-HD и т.д.) приводит к большему количеству данных, которые должны передаваться. Для чувствительных к времени сценариев, так называемому варианту использования с малой задержкой, такому как видеоконференция (<145 мс), или игровые приложения (<40 мс), требуются очень малые сквозные задержки. Поэтому, время передачи становится критическим фактором. Изобретатели рассматривают линию загрузки в асимметричной цифровой абонентской линии (ADSL) для применения в видеоконференции. В данном случае, так называемые точки произвольного доступа потока, обычно они ссылаются на I-кадры, будут кандидатами на то, чтобы вызвать узкое место во время передачи.
HEVC допускает так называемую волновую обработку, а также обработку тайлов на стороне кодера, а также декодера. Это делается возможным посредством использования энтропийных слайсов, подпотоков WPP или даже их объединения. Параллельная обработка также допускается параллельным кодированием и декодированием тайлов.
В случае «цели без распараллеливания» данные всего слайса доставляются одновременно, таким образом последняя CU слайсов является доступной для декодера, если она была передана. Это не является проблемой, если имеется декодер с единственным потоком.
В многопоточном случае, если могут использоваться многочисленные CPU или ядра, процесс декодирования, однако, будет начинаться, как только кодированные данные поступят в потоки волнового декодера или декодера тайлов.
Таким образом, было бы полезным иметь наготове принципы, которые делают возможным уменьшить задержку кодирования в средах параллельной обработки с менее резкими снижениями эффективности кодирования.
Следовательно, задачей настоящего изобретения является обеспечение принципа кодирования, принципа транспортного демультиплексирования и битового потока видео, которые делают возможным такое более эффективное кодирование с малой задержкой в средах параллельной обработки.
Эта задача достигается объектом прилагаемых зависимых пунктов формулы изобретения.
Согласно первому аспекту настоящей заявки полезная нагрузка последовательности необработанных байтов, описывающая изображение слайсами, подпотоками WPP или тайлами и кодированная с использованием контекстно-адаптивного двоичного арифметического кодирования, подразделяется или разделяется на транши с продолжением адаптации вероятностей контекстно-адаптивного двоичного арифметического кодирования по границам траншей. Посредством этой меры границы траншей, дополнительно введенные в слайсы, подпотоки WPP или тайлы, не приводят к снижению эффективности энтропийного кодирования этих элементов. С другой стороны, однако, транши являются меньше исходных слайсов, подпотоков WPP или тайлов, и, следовательно, они могут передаваться раньше, т.е. с меньшей задержкой, чем неразделяемые исходные объекты, т.е. слайсы, подпотоки WPP или тайлы.
Согласно другому аспекту, который является объединяемым с первым аспектом, единицы NAL маркера подпотока используются в последовательности единиц NAL битового потока видео, чтобы предоставить возможность транспортному демультиплексору назначать данные слайсов в единицах NAL соответствующим подпотокам или тайлам, чтобы иметь возможность параллельно подавать соответствующие подпотоки или тайлы на многопоточный декодер.
Полезные реализации является предметом зависимых пунктов формулы изобретения. Кроме того, предпочтительные варианты осуществления настоящего изобретения объясняются более подробно ниже в отношении фигур, на которых
фиг. 1 изображает схему, иллюстрирующую возможные соединения энтропийных слайсов;
фиг. 2 изображает схему, иллюстрирующую три тайла, распределенные по трем слайсам;
фиг. 3 изображает схему, иллюстрирующую пример перемежения траншей схемы циклического перемежения четырех траншей с переменной длиной;
фиг. 4 изображает схему, иллюстрирующую кодирование, сегментирование, перемежение и декодирование данных энтропийного слайса;
фиг. 5 изображает схему, иллюстрирующую пример перемежения траншей схемы циклического перемежения четырех траншей с переменной длиной, использующей всегда коды маркера и распределяющей фактические данные слайса по многочисленным единицам NAL. Коды маркера используются, даже если не присутствует подраздел. Это может быть дополнительно улучшено использованием идентификатора транша после маркера, указывающего номер транша. Это устраняет потребность посылки всегда маркера, что требуется для циклического режима.
фиг. 6 изображает таблицу псевдокода, иллюстрирующего синтаксис единицы NAL;
фиг. 7 изображает таблицу псевдокода, иллюстрирующего синтаксис набора параметров последовательности;
фиг. 8 изображает таблицу псевдокода, иллюстрирующего синтаксис полезных данных последовательности необработанных байтов (RBSP) уровня слайса с малой задержкой;
фиг. 9 изображает таблицу псевдокода, иллюстрирующего синтаксис заголовка слайса;
фиг. 10 изображает таблицу псевдокода, иллюстрирующего синтаксис маркера подпотока;
фиг. 11 изображает схему, иллюстрирующую пример простой инкапсуляции данных энтропийного слайса (AF представляет собой поле адаптации TS MPEG-2);
фиг. 12 изображает схему, иллюстрирующую другой пример инкапсуляции единственного элементарного потока (ES) данных энтропийного слайса;
фиг. 13 изображает схему, иллюстрирующую другой пример инкапсуляции упакованных многочисленных ES данных энтропийного слайса;
фиг. 14 изображает блок-схему, изображающую транспортный демультиплексор для единственного ES;
фиг. 15 изображает блок-схему, изображающую транспортный демультиплексор для многочисленных ES;
фиг. 16 изображает блок-схему, изображающую кодер;
фиг. 17 изображает блок-схему, изображающую декодер;
фиг. 18 изображает блок-схему последовательности операций этапов, выполняемых декодером; и
фиг. 19 изображает схему, иллюстрирующую пример для многочисленных ES, используя транспортный протокол реального времени (RTP).
Чтобы уменьшить время, в течение которого поток параллельного декодера может начать и завершить обработку своих данных кадра, представленные ниже варианты осуществления используют сегментирование данных, структурированных для распараллеливания, таких как данные одного или нескольких тайлов или данные одного или нескольких подпотоков WPP, на малые транши посредством подхода перемежения с малой задержкой.
Следовательно кодер может доставлять данные, соответствующие конкретному набору LCU или по меньшей мере выровненной по байтам части подпотока или тайла или их частей в виде транша, декодеру по тракту передачи от кодера до декодера.
Так как транши меньше полного подпотока WPP или тайла и/или могут адаптироваться к фактической максимальной единице передачи (MTU) тракта передачи, так что транши многочисленных подпотоков WPP или тайлов могут размещаться в единице передачи между кодером и декодером перед завершением полной единицы доступа, декодирование на стороне декодера может начинаться существенно раньше, чем при использовании последовательной передачи полных подпотоков WPP или тайлов единицы доступа.
Это очевидно приводит к более быстрой передаче траншей и более раннему началу процесса параллельного декодирования в декодере. Подход также может применяться по границам кадра в случае, если слайс(-ы) следующего кадра или энтропийный слайс(-ы) уже могут быть декодированы, например, волновым образом, основываясь на сведениях, что требуемая информация для декодирования энтропийного слайса следующего кадра из-за доступности межкадровых ссылок. Эти уже декодируемые данные кадра, последующего в порядке декодирования, могут извлекаться из максимально допустимой/сигнализируемой длины вектора движения или дополнительной информации в потоке, указывая зависимости частей данных с предыдущим кадром(-ами), или схемы с фиксированными ссылками, указывающей используемую позицию, сигнализируемую в позиции фиксированной последовательности, такой как набор параметров.
Изображение может кодироваться одним энтропийным слайсом на строку(-и) наибольшей единицы кодирования (LCU), или используя подпоток WPP, или даже комбинацию в виде одного подпотока WPP на строку, которая может дополнительно содержаться в отдельном энтропийном слайсе. Такие структуры данных необходимы для использования метода волновой обработки на стороне декодера. Или тайлы могут использоваться, чтобы сделать возможной параллельную обработку.
Во время процесса кодирования битовый поток каждого слайса, содержащий данные потоков WPP или тайлов, может разделяться на транши с переменной длиной, чтобы соответствовать максимальному размеру единицы передачи, между кодером и декодером. Тогда результирующие транши перемежаются и могут передаваться для передачи и размещения в пакетах размера MTU.
Чтобы сделать возможной обработку на стороне декодера перед или после каждого транша, может вставляться код маркера. Соответствующим кодом маркера для HEVC может быть «0x00 00 02», который будет даже пропускать предотвращение эмуляции кода начала. После приема пакета, включающего в себя многочисленные транши, приемник или декодер может выполнять синтаксический анализ фактически содержащегося битового потока во время процесса предотвращения эмуляции кода начала, чтобы не требовался дополнительный этап синтаксического анализа. Может быть, например, два режима для идентификации транша. Может быть всегда циклическое размещение траншей, начиная с транша с tranche_id (идентификатор транша), равного 1, до транша с tranche_id, равным n. Это может безопасно сигнализировать данные для второго общего способа. Альтернативным способом может быть конкретный заголовок, следующий за маркером, указывающий tranche_id, например, в виде 8-битового значения.
Деперемежение данных перемеженных траншей может применяться на основе сведения о количестве траншей на пакет, которым может быть пакет единиц NAL. Поэтому, может быть дополнительно отображение подпотоков WPP или тайлов на транши. Это отображение может неявно выводиться из количества тайлов/количества подпотоков WPP, или может сигнализироваться непосредственно в наборе параметров последовательности (SPS). Отображение является важным для процесса деперемежения, так что данные некоторых подпотоков WPP или тайлов могут идентифицироваться и предоставляться потоку волнового или параллельного декодера, ответственного за декодирование данного подпотока WPP или тайла.
Чтобы информировать декодер об использовании схемы перемежения для инкапсуляции с малой задержкой, в заголовке единицы NAL может быть low_delay_flag (флаг малой задержки).
Другим режимом может быть перемежение и деперемежение на транспортном уровне, т.е. вне процесса декодирования может быть на уровне RTP [8] [9] [13] или транспортного потока MPEG-2 [7].
Поэтому, заголовок может размещаться впереди пакета, указывающий присутствие транша посредством флага, включающего в себя информацию о размере в байтах на присутствующий транш. Так как транспортный уровень не связан с процессом декодирования, может быть, что нет необходимости в интегрировании кода маркера, так как дополнительная информация транспортного уровня должна удаляться любым образом перед передачей этих данных на декодер. Транспортный уровень затем также переупорядочивает данные для доставки битового потока декодеру.
Заголовок переменной длины может использоваться на дополнительном уровне мультиплексирования. Этот уровень мультиплексирования также может представлять собой часть кодека и может вводиться перед фактическим обращением к данным последовательности необработанных байтов (RBSP) в декодере. Одну схему заголовка можно найти на фиг. 3. Но может быть также заголовок непосредственно перед каждым траншем, указывающий длину, а также его индикатор. Где, все еще имеется необходимость в отображении индикатора на структуры битового потока, уже указано выше.
Размер транша также может иметь постоянный размер, например, x байтов на транш. Это приводит к простой схеме мультиплексирования, такой как показанная на фиг. 4.
Постоянный размер сегментов может привести к проблеме в конце битового потока из-за его переменной длины.
Имеется два возможных общих решения. Первым является генерирование циклических x-байтовых сегментов (обычно представление битового потока слайса выровнено по байтам) и управление потреблением байтов каждым механизмом декодера, т.е. декодер выясняет завершение энтропийного слайса, или включение кода маркера.
Вторым способом являются длины транша сигнализации, если транши имеют переменную длину, в заголовке, как показано на фигуре.
Размер сегмента и режим перемежения могут сигнализироваться или в одном SEI-сообщении или в SPS.
Схема передачи показана на фиг. 4.
Другой интересный способ использует коды завершения или кодов маркера в конце набора траншей в пакете, таком как NAL или пакет слайсов. В данном случае, возможны сегменты переменной длины, таким образом, требуется полный синтаксический анализ битового потока. Чтобы ограничить в данном случае обращение к памяти, этот дополнительный процесс синтаксического анализа для мультиплексирования может объединяться с синтаксическим анализом предотвращения эмуляции кода начала, требуемого в качестве первого этапа перед обращением к данным RBSP, содержащимся в единице NAL. Такая схема маркера показана на фиг. 5.
Идея в данном случае заключается в разбиении перемежающим образом структуры более высокого уровня, такой как фактический слайс, энтропийный слайс или подобные, на содержащиеся в ней структуры данных более низкого уровня, такие как подпотоки WPP или тайлы, при перемежении данных в транши. Эти транши, причем каждый принадлежит к структуре более низкого уровня, например, конкретному подпотоку WPP или тайлу, перемежаются в пакете с малой задержкой, которым может быть конкретная единица NAL, единица NAL с дополнительной сигнализацией флагом перемежения с малой задержкой или даже слайс или легковесный заголовок слайса, указывающий подход перемежения с малой задержкой посредством флага или типа слайса, как показано для «единица #1 NAL» на фигуре, таким образом декодер информируется для применения функции переупорядочения для декодера с «единственным» потоком, который использует последовательную обработку траншей в исходном/деперемеженном порядке в декодере. Чтобы разделить данные фактического слайса в виде перемеженных траншей по многочисленным пакетам, чтобы получить выигрыш в признаке малой задержки, транспортный уровень может фрагментировать единицу NAL, содержащую перемеженные данные с малой задержкой, в сетевые пакеты максимального размера MTU. Фрагментирование данных фактического слайса в многочисленные единицы NAL также может непосредственно применяться уровнем кодирования, таким образом, существует потребность в сигнализации такого типа единицы NAL, содержащей продолжение слайса, как показано на фиг. 5 для «единицы #2 NAL». Чтобы обнаруживать завершение перемеженных данных в многочисленных пакетах, таких как единицы NAL. Может быть необходимость в конкретном коде завершения, также показанном для «единицы #2 NAL» на фигуре, или флаге, который указывает завершение в слайсе или заголовка NAL.
В случае потери пакетов NAL также существует потребность в обнаружении потерь. Это может применяться посредством дополнительной информации в заголовке, например, легковесного заголовка слайса, такого как первые макроблоки (MB) содержащихся траншей, или только конкретного транша #1. Имея информацию, такую как смещения для подпотоков WPP или фактический размер транша, кто-нибудь также может использовать эти значения размера (значения смещения для конкретного подпотока WPP или тайла), чтобы выполнить проверку работоспособности после приема единицы NAL с кодом завершения и предшествующими единицами NAL.
Т.е, как описано, транши могут пакетироваться в пакеты 300 таким образом, что каждый пакет 300 содержит один транш T# каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения (так как, например, некоторый подпоток WPP или тайл уже был полностью передан посредством предыдущих пакетов), расположенных в порядке #, заданном среди подпотоков WPP или тайлов, причем каждый пакет содержит заголовок 302, содержащий информацию, выявляющую позиции и/или длительности траншей T#, упакованных в соответствующий пакет 300, или маркеры 304, разделяющие транши T# в соответствующем пакете 300 друг от друга, причем декодер может быть выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках 302 или маркерах 304, для обращения к траншам в пакетах. Пакеты 300a, которые содержат первые - в соответствии с порядком, определенным среди подпотоков WPP или тайлов - транши подпотоков WPP или тайлы изображения, могут содержать индикатор 306 признака малой задержки, и пакеты 300b, содержащие вторые или последующие - в соответствии с порядком, определенным среди подпотоков WPP или тайлов - тайлы T# подпотоков WPP или тайлов изображения, могут содержать индикатор 308 продолжения. Пакетами 300 могут быть единицы NAL или слайсы.
Ниже предоставляется пример для сигнализации синтаксиса и семантики для перемежения с малой задержкой в транши.
Тем не менее, разделение данных транша, таких как данные подпотока WPP или тайла, также может применяться на уровне слайса или ниже, как указано выше.
Ниже показан подход, который может быть объединен с синтаксическим анализом для предотвращения эмуляции кода начала, чтобы уменьшить количество дополнительных этапов процесса. Поэтому, перемежение применяется на уровне RBSP кодека HEVC.
Транш может рассматриваться как разделяющий данные RBSP на секции, подлежащие перемежению в секции полезных данных единиц NAL для доступа к данным с малой задержкой. Завершение транша может указываться кодом 0x000002 и за которым может следовать 8-битовый идентификатор транша tranche_id. Транши могут перемежаться циклическим образом, так что за кодом окончания транша не следует tranche_id, который выводится неявным образом. Данные RBSP в единственном транше соответствуют или данным тайла, данным подпотока, данным слайса или данным энтропийного слайса.
В синтаксисе единицы NAL могут учитываться два режима для перемежения с малой задержкой как указано посредством «low delay encapsulation_flag» (флаг инкапсуляции с малой задержкой), который представляет собой циклическое размещение траншей, а также указание транша посредством дополнительного идентификатора «tranche_id», следующий за кодом маркера посредством флага, такого как «low delay cyclic_flag» (флаг циклического размещения малой задержки) в заголовке единицы NAL. Эти два флага также могут представляться в наборах параметров последовательности, или даже APS. Для циклического размещения траншей все же может требоваться знание количества траншей во время синтаксического анализа, такого как предусмотренного в SPS в виде «num_low_delay_tranches» (количество траншей с малой задержкой).
В единице NAL перемеженные «LD_rbsp_byte» считываются блоком синтаксического анализа и переупорядочиваются в фактический последовательный порядок RBSP в последнем for-цикле в синтаксисе NAL:
Также может быть явная сигнализация в SPS или APS для фиксированного размера циклически размещенных траншей, что указывается в «low-delay_tranche_length_minus1» (длительность транша с малой задержкой минус 1). Последний не использовался в примере синтаксиса единицы NAL, но является прямым, подразумевая пакетирование, показанное на фиг. 4. В синтаксисе единицы NAL на фиг. 6 было базовым пакетирование, показанное на фиг. 5 и описанное выше.
Чтобы сделать возможным этот признак перемежения траншей по многочисленным пакетам, таким как слайсы и/или единицы NAL, может быть требование к глобальному буферу, такому как массив LD_rbsp_byte для траншей, чтобы имел многократный доступ к данным RBSP уже принятых единиц NAL.
Чтобы сделать возможной устойчивость к ошибкам после приема кода завершения, или если сумма количества принятых байтов для транша равна размеру транша, который может быть получен из значений смещений, предоставленных для содержащихся данных транша, например, из данных, касающихся соответствующего подпотока WPP или тайла, частью которых является рассматриваемый транш.
Важным требованием к подпотокам WPP, расположенным в перемеженных траншах с малой задержкой, является то, что посредством транша n+1 выполняется обращение только к данным из транша n, которые уже предоставлены в транше n и уже сохранены или доступны в декодере.
Синтаксис RBSP уровня слайса с малой задержкой для переупорядочения/деперемежения на уровне слайса может быть разработан следующим образом. В частности, синтаксис в данном случае должен иметь почти такое же поведение, что и на уровне единиц NAL, но переупорядочение должно определяться на уровне слайса. Фиг. 8 изображает синтаксис RBSP уровня слайса с малой задержкой.
В случае использования заголовка слайса для пакетирования перемеженных траншей может быть требование к указанию на уровне кодека, если принимается новый слайс, не сбрасывать состояние CABAC, так как энтропийное кодирование траншей, например, подпотока WPP, не должно прерываться. Не сбрасывать CABAC в слайсе указывается как «no_cabac_reset_flag» в заголовке слайса. Показанный заголовок слайса подходит для слайсов с малой задержкой, таким образом, также должны присутствовать признаки entropy_slice (энтропийный слайс). Соответствующий синтаксис заголовка слайса показан на фиг. 9.
Транспортный уровень делает возможной оптимизацию планирования данных, направляемых на блок(-и) декодера, основываясь на факте, если может ли быть обработано количество подпотоков/тайлов/траншей (на транспортном уровне изобретатели предполагают абстрактный объект, который может быть представлен подпотоком, тайлом, частью подпотока или тайла, или частью битового потока, который имеет подобную функцию, т.е. он делает возможным параллельное декодирование или постепенное обновление декодера) на уровне кодирования независимо друг от друга. Одной возможностью является начало посылки траншей параллельно нескольким блокам декодирования с минимальной задержкой. Битовый поток состоит из последовательности единиц NAL, которые являются наименьшими элементами, которые могут быть обработаны индивидуально на транспортном уровне. Следовательно, следующие способы обработки на транспортном уровне основываются на подпотоках/тайлах/траншах, которые содержатся в отдельном слайсе или единицах NAL энтропийного слайса.
Транспортный уровень также должен оптимизировать рабочие характеристики декодера и устойчивость к ошибкам, основываясь на факте, использует ли уровень кодирования постепенное обновление декодера. Одним вариантом является отбрасывание неподходящих частей битового потока, если предыдущие части битового потока не были приняты правильно, например, из-за ошибок передачи, или совсем не были приняты, например, из-за переключения между транспортными каналами.
Чтобы учитывать такое использование/оптимизацию, разная информация сигнализируется по транспортному уровню.
Общая дополнительная информация сигнализируется с использованием дескритпоров:
- количество подпотоков/тайлов, где «1» означает, что имеется только один поток/тайл, который содержит весь кадр видео;
- информация, общая для всех подпотоков/тайлов, например, если все подпотоки/тайлы имеют одинаковый размер, или являются одинаковыми требования к буферу;
- индивидуальная информация о каждом подпотоке/тайле, например, если подпотоки/тайлы имеют разные размеры, или различаются их требования к буферу;
- количество этапов постепенного обновления декодера, где «1» означает, что не используется постепенное обновление декодера;
- флаг, указывающий, учитывают ли эти подпотоки/тайлы параллельную обработку с малой задержкой.
Если количество подпотоков/тайлов>1, элементы синтаксиса вставляются в поток перед каждым блоком данных, который содержит некоторый подпоток/тайл. Эти элементы синтаксиса придерживаются синтаксиса единиц NAL, но используют уникальный тип единицы NAL, который не используется уровнем кодирования (например, nal_unit_type=0x19 или nal_unit_type=0x1F), ниже упоминаемый как маркеры подпотока.
Эти элементы синтаксиса используются в качестве маркеров и переносят информацию о блоке данных, который следует за по меньшей мере полем данных, которое идентифицирует подпоток/тайл.
Если количество этапов постепенного обновления декодера >1, эти элементы синтаксиса также переносят флаг, который указывает, имеет ли подпоток/тайл с внутренним кодированием (делает возможным постепенное обновление декодера).
Соответствующий синтаксис показан на фиг. 10. Могут применяться следующие ограничения:
forbidden_zero_bit должен быть равен 0.
nal_ref_flag должен быть равен 0.
nal_unit_type должен быть равен 0x19.
substream_ID: значение счетчика, начинающееся с 0 для первого слайса, которое принадлежит изображению, увеличиваемое на 1 каждым следующим слайсом или энтропийным слайсом, который принадлежит этому же изображению.
is_intra: если равен «1», следующая единица NAL содержит слайс с внутренним кодированием или энтропийный слайс с внутренним кодированием.
Способ инкапсуляции видеопотока при транспортном мультиплексировании показан на фиг. 11, где каждый слайс или энтропийный слайс транспортируется отдельно в целочисленном количестве пакетов транспортного потока. Если размер полезных данных не точно соответствует доступным байтам в пакетах транспортного потока (TS) фиксированного размера, последний пакет TS содержит поле адаптации.
Необходимо отметить, что подобное поведение элементарного потока транспортного потока MPEG-2 также может обеспечиваться сеансом RTP или потоком RTP транспортного протокола реального времени, как показано на фиг. 19. В RTP [8] поток RTP (идентифицированный типом мультимедиа и типом полезных данных, как указано в SDP [12]) может содержаться в своем собственном сеансе RTP, где сеанс RTP идентифицируется сетевым адресом (IP (протокола Интернета)), портом (протокола передачи дейтаграмм пользователя (UDP)), а также идентификатором источника (SSRC). Мультимедийный сеанс, как указывается в SDP, может содержать многочисленные сеансы RTP, причем каждый содержит разный тип мультимедиа. Но также возможно транспортировать один и тот же поток мультимедиа (например, видео) в разных потоках RTP, где потоки RTP могут содержаться в одном и том же сеансе RTP (аналогично 1. ниже) или могут содержаться в своих собственных сеансах RTP (аналогично 2. ниже). Фиг. 19 иллюстрирует случай 2.
Форматы полезных данных RTP [9] [13] имеют номер порядка декодирования (DON), который позволяет восстанавливать порядок декодирования единиц NAL в приемнике в случае, когда они намеренно передаются вне порядка декодирования с целью устойчивости к ошибкам, как описано в [9] [13]. Дополнительные маркеры MKR, поэтому, не являются необходимыми. В случае транспортировки траншей подпотоков WPP или тайлов в порядке, в котором они становятся доступными из процессов кодирования, DON также может использоваться для восстановления порядка декодирования траншей перед предоставлением их единственному декодеру. Но в этом случае дополнительная задержка вводится в декодере из-за отдельного процесса деперемежения перед процессом декодирования. Описанная здесь система может предоставлять кодированные транши непосредственно процессам декодирования разных подпотоков WPP или тайлов, в то время как данные поступают в приемник. Идентификация траншей, ассоциированных с подпотоком WPP или тайлом, может извлекаться посредством адреса слайса в заголовке сегмента слайса сегмента слайса и порядка передачи пакетов, как указывается номером последовательности RTP в заголовке RTP. При таком сценарии DON используется только для обратной совместимости, т.е. для декодеров, не обеспечивающих улучшенную возможность декодирования траншей подпотоков WPP или тайлов, посылаемых вне порядка декодирования, когда они поступают. Посылка данных транша вне порядка декодирования как раз применяется в отношении уровня подпотоков WPP и тайлов, т.е. в передаваемых данных, причем транши единственного подпотока WPP или тайла передаются в порядке декодирования, где перемежаются данные разных подпотоков WPP или тайлов.
Существует два возможных варианта:
1. Все слайсы и энтропийные слайсы содержатся в одном и том же элементарном потоке, т.е. один и тот же PID (идентификатор пакета) назначается всем пакетам TS этого видеопотока; в последующем тексте этот способ ссылается на инкапсуляцию единственного ES.
2. Разные PID назначаются слайсам и энтропийным слайсам одного и того же битового потока видео; в нижеследующем тексте этот способ ссылается на инкапсуляцию многочисленных ES.
Фиг. 11 действительна для обоих вариантов, если первый вариант рассматривается как специальный случай более общей структуры посредством установки одного и того же PID для всех ES.
Более эффективный способ инкапсуляции в единственном ES показан на фиг. 12. В данном случае требуется максимум одно поле адаптации на изображение.
Более эффективный способ инкапсуляции в многочисленных ES показан на фиг. 13. В данном случае исключаются поля адаптации, вместо этого, другой слайс, например, совместный тайл следующего изображения, начинается непосредственно в этом же пакете транспортного потока.
Возможная конструкция транспортного демультиплексора для инкапсуляции с одним единственным элементарным потоком (ES), целью которой является многопоточный декодер, показана на фиг. 14. Энтропийный слайс на фигуре может содержать данные конкретного подпотока WPP или тайла.
Транспортный буфер (TB) собирает данные, которые принадлежат транспортному пакету, и направляют их мультиплексному буферу (MB). На выходе MB заголовки единиц NAL оцениваются, и отбрасываются маркеры подпотока, в тоже время сохраняются данные, переносимые в маркере подпотока. Данные каждого слайса или энтропийного слайса сохраняются в отдельном буфере слайсов (SB), из которого они извлекаются многопоточным декодером, если доступен поток декодера.
Возможная конструкция транспортного демультиплексора для инкапсуляции многочисленных элементарных потоков, целью которой является многопоточный декодер, показана на фиг. 15.
Вышеприведенные кратко изложенные принципы снова описываются ниже другими словами. Описание ниже, поэтому, является индивидуально объединяемым с дополнительными подробностями вышеупомянутого описания.
Фиг. 16 изображает общую конструкцию кодера согласно варианту осуществления настоящей заявки. Кодер 10 может быть реализован с возможностью работы в многопоточном режиме или нет, т.е. просто с единственным потоком. Т.е. кодер 10, например, может быть реализован с использованием многочисленных ядер CPU. Другими словами, кодер 10 может поддерживать параллельную обработку, но не должен. Принцип кодирования настоящей заявки позволяет кодерам параллельной обработки эффективно применять параллельную обработку, однако, без опасности ухудшения эффективности сжатия. Что касается возможности параллельной обработки, подобные утверждения действительны для декодера, который описан ниже в отношении фиг. 17.
Кодер 10 представляет собой видеокодер, но вообще кодер 10 также может представлять собой кодер изображения. Изображение 12 видео 14 показано как поступающее в кодер 10 на входе 16.
Кодер 10 представляет собой гибридный кодер, т.е. изображение 12 предсказывается в предсказателе 18 и остаток 20 предсказания, получаемый определителем 22 остатка, таким как вычитатель, подвергается преобразованию, такому как спектральное разложение, такому как дискретное косинусное преобразование (DCT), и квантованию в модуле 24 преобразования/квантования. Квантованный остаток 26, полученный таким образом, подвергается энтропийному кодированию в энтропийном кодере 28, а именно контекстно-адаптивному двоичному арифметическому кодированию. Восстанавливаемая версия остатка, доступная для декодера, т.е. деквантованный и повторно преобразованный сигнал 30 остатка, восстанавливается модулем 31 повторного преобразования и повторного квантования и объединяется с сигналом 32 предсказания предсказателя 18 посредством объединителя 33, таким образом приводя к восстановлению 34 изображения 12. Однако кодер 10 работает на блочной основе. Следовательно, восстановленный сигнал 34 имеет разрывность на границах блока, и, следовательно, фильтр 36 может применяться к восстановленному сигналу 34, чтобы получить опорное изображение 38, на основе которого предсказатель 18 предсказывает последовательно кодированные изображения. Как показано пунктирными линиями на фиг. 16, предсказатель 18 может, однако, также использовать восстановленный сигнал 34 непосредственно без фильтра 36 или промежуточную версию. В случае кодирования изображения фильтр 36 может быть исключен.
Предсказатель 18 может выбирать из числа разных режимов предсказания, чтобы предсказывать некоторые блоки изображения 12. Может быть режим временного предсказания, согласно которому блок предсказывается на основе ранее кодированных изображений, режим пространственного предсказания, согласно которому блок предсказывается на основе ранее кодированных блоков этого же изображения, режимы межуровневого предсказания, согласно которым блок изображения, изображающего сцену на более высоком уровне, таком как при более высоком пространственном разрешении или с другой точки обзора, предсказывается на основе соответствующего изображения, изображающего эту сцену на более низком уровне, таком как при более низком пространственном разрешении или с другой точки обзора.
Некоторый синтаксис используется для сбора квантованных данных 26 остатка, т.е. уровни коэффициентов преобразования и другие данные остатка, а также данные режима кодирования, включающие в себя, например, режимы предсказания и параметры предсказания для индивидуальных блоков изображения 12, определенного предсказателем 18, и эти элементы синтаксиса подвергаются энтропийному кодированию энтропийным кодером 28. Полученный таким образом поток данных, выводимый энтропийным кодером 28, называется полезной нагрузкой 40 последовательности необработанных байтов.
Элементы кодера 10 на фиг. 16 соединены между собой так, как показано на фиг. 16.
Фиг. 17 изображает декодер, который соответствует кодеру на фиг. 16, т.е. способен декодировать полезную нагрузку последовательности необработанных байтов. Декодер на фиг. 17 в целом обозначен ссылочной позицией 50 и содержит энтропийный декодер 52, модуль 54 повторного преобразования/деквантования, объединитель 56, фильтр 58 и предсказатель 60. Энтропийный декодер 42 принимает полезную нагрузку 40 последовательности необработанных байтов и выполняет энтропийное декодирование, используя контекстно-адаптивное двоичное арифметическое декодирование для восстановления сигнала 62 остатка и параметров 64 кодирования. Модуль 54 повторного преобразования/деквантования деквантует и повторно преобразует данные 62 остатка и направляет полученный таким образом сигнал остатка на объединитель 56. Объединитель 56 также принимает сигнал 66 предсказания от предсказателя 60, который, в свою очередь, формирует сигнал 66 предсказания, используя параметры 64 кодирования, на основе восстановленного сигнала 68, определенного объединителем 56 посредством объединения сигнала 66 предсказания и сигнала 65 остатка. Как уже описано выше в отношении фиг. 16, предсказатель 60 может альтернативно или дополнительно использовать фильтрованную версию восстановленного сигнала 68 или некоторую ее промежуточную версию. Изображение, подлежащее окончательному воспроизведению и выводу на выходе 70 декодера 50, может подобно определяться по нефильтрованной версии сигнала 68 объединения или по некоторой ее фильтрованной версии.
Согласно принципу тайлов изображение 12 подразделяется на тайлы, и по меньшей мере предсказания блоков в этих тайлах ограничены на использование, как основы для пространственного предсказания, только данных, относящихся к этому же тайлу. Посредством этой меры по меньшей мере предсказание может выполняться для каждого тайла индивидуально и параллельно. Только для целей иллюстрации фиг. 16 иллюстрирует изображение 12, разделенное на девять тайлов. Подразделение каждого тайла на девять блоков, как показано на фиг. 16, также служит только в качестве примера. Кроме того, ради завершенности, отмечается, что способ кодирования тайлов отдельно может не ограничиваться пространственным предсказанием (внутренним предсказанием). Скорее, любое предсказание параметров кодирования соответствующего тайла по границам тайла и любая зависимость выбора контекста при энтропийном кодировании соответствующего тайла по границам соответствующего тайла также может предотвращаться, чтобы ограничиваться зависимостью только от данных одного и того же тайла. Таким образом, декодер способен выполнять только что упомянутые операции параллельно, а именно в единицах тайлов.
Чтобы передаваться по некоторому каналу передачи, элементы синтаксиса должны энтропийно кодироваться по слайсам посредством энтропийного кодера 28. С этой целью энтропийный кодер 28 сканирует блоки тайлов прохождением блоков сначала первого тайла, затем продолжая с блоками следующего тайла в порядке тайлов и т.п. Порядок растрового сканирования, например, может использоваться для сканирования блоков в тайлах и тайлов соответственно. Слайсы затем упаковываются в единицы NAL, которые представляют собой наименьшие единицы для передачи. Перед энтропийным кодированием слайса энтропийный кодер 28 инициализирует свои вероятности CABAC, т.е. вероятности, используемые для арифметического кодирования элемента синтаксиса этого слайса. Энтропийный декодер 52 выполняет тоже самое, т.е. инициализирует свои вероятности в начале слайса. Каждая инициализация, однако, отрицательно влияет на эффективность энтропийного кодирования, так как вероятности непрерывно адаптируются к фактической статистике вероятности символа различных контекстов и, следовательно, сброс вероятностей CABAC представляет отклонение от адаптированного состояния. Как известно для специалиста в данной области техники, энтропийное кодирование приводит к оптимальному сжатию только тогда, когда вероятности соответствуют фактической статистике вероятности символа.
Следовательно, декодер, согласно варианту осуществления настоящей заявки, работает так, как показано на фиг. 18. На этапе 80 декодер принимает полезную нагрузку последовательности необработанных байтов, описывающую изображение 12 в тайлах 82, в траншах тайлов. На фиг. 18 первый тайл 82 в порядке 84 тайлов показан в виде примера рассеченным или разделенным на два транша 86a и 86b, причем каждый в качестве примера охватывает подпоследовательность последовательности блоков в этом тайле. Затем на этапе 82 энтропийно декодируются транши 86a и 86b. Однако при энтропийном декодировании траншей 86a и 86b продолжается адаптация вероятностей CABAC по границам траншей. Т.е. во время декодирования транша 86a вероятности CABAC непрерывно адаптируются к фактическим статистикам символа, и состояние в конце энтропийного декодирования транша 86a адаптируется в начале энтропийного декодирования транша 86b. На этапе 90 полезная нагрузка последовательности необработанных байтов, энтропийно декодированная таким образом, декодируется для получения изображения 12.
Из-за продолжения адаптации вероятности CABAC по границам 92 траншей, расположенным внутри транша 82, эти границы траншей не оказывают отрицательного влияния на эффективность энтропийного кодирования вне подразделения изображения 12 на тайлы 82. С другой стороны, все же возможна параллельная обработка тайлов. Кроме этого, возможна индивидуальная передача траншей, и, так как транши меньше завершенных тайлов 82, возможно начинать на этапе 90 декодирование каждого тайла как только первый транш соответствующего тайла будет принят и энтропийно декодирован.
Описание фиг. 16-18 касается, главным образом, использования тайлов. Как описано выше, тайлы являются результатом пространственного разделения изображения. Подобно тайлам, слайсы также пространственно подразделяют изображение. Слайсы, следовательно, также представляют собой средство для предоставления возможности параллельного кодирования/декодирования. Подобно тайлам, предсказание и т.п. запрещается, так что слайсы являются индивидуально декодируемыми. Следовательно, описание фиг. 16-18 также действительно для разделения слайсов на транши.
Это же применимо при использовании подпотоков WPP. Подпотоки WPP также представляют пространственное разделение изображения 12, а именно на подпотоки WPP. В противоположность тайлам и слайсам, подпотоки WPP не накладывают ограничения на предсказания и выборы контакта по подпотокам WPP. Подпотоки WPP проходят по строкам блока, таким как строки LCU, как показано на фиг. 4, и, чтобы сделать возможной параллельную обработку, выполняется только один компромисс в отношении энтропийного кодирования CABAC, чтобы, как определяется среди подпотоков WPP (см. фиг. 4) 92 и для каждого подпотока 92 WPP, за исключением первого подпотока WPP, вероятности CABAC не полностью сбрасываются, но принимаются, или устанавливаются равными, вероятностям CABAC, появляющимся после энтропийного декодирования непосредственно предшествующего подпотока WPP до его второго LCU 94, причем порядок LCU начинается для каждого подпотока WPP на одной и той же стороне изображения 12, такой как левой стороне, как показано на фиг. 4. Следовательно, соответствуя некоторой задержке кодирования между последовательностью подпотока WPP, эти подпотоки 92 WPP являются декодируемыми параллельно, так что части, в которых изображение 12 декодируется параллельно, т.е. одновременно, формируют некоторый вид фронта 96 волны, который перемещается по изображению наклонным образом слева направо.
Т.е. при переносе описания фиг. 16-18 на подпотоки WPP, любой подпоток 92 WPP (фиг. 4) также может подразделяться на транши 98a и 98b без прерывания адаптации вероятностей CABAC на границе 100 между этими траншами 98a и 98b внутри соответствующего подпотока 92 WPP, тем самым устраняя проблемы в отношении эффективности энтропийного кодирования из-за индивидуальной возможности передачи обоих траншей 98a и 98b, но сохраняя возможность использования волновой параллельной обработки и делая возможным начать эту волновую параллельную обработку раньше, так как транши меньше завершенных подпотоков 92 WPP.
Как описано выше в отношении фиг. 1-15, существует несколько возможностей для передачи траншей, пакетированных в единицы NAL. Ссылка делается на фиг. 3, где тайлы или подпотоки или слайсы таких траншей или подпотоков были разделены на транши в арифметически кодированной области, причем заголовок предшествует n-ому траншу каждого подпотока или тайла и представляет информацию, позволяющую выполнять локализацию границ траншей. Другим вариантом осуществления был вариант осуществления, представленный на фиг. 9. На нем подразделение тайлов или подпотоков WPP в транши было выполнено посредством незначительного изменения структуры слайса: слайсы, начинающиеся на границе тайла или подпотока WPP, т.е. начинающиеся в начале тайла или подпотока WPP, имеют no_cabac_reset_flag (флаг отсутствия сброса CABAC), установленный в ноль, тем самым вызывая обычную инициализацию/сброс вероятностей CABAC. Слайсы, однако, переносящие транши, которые начинаются внутри тайла или подпотока WPP, имеют no_cabac_reset_flag, установленный в единицу, тем самым вызывая вышеописанное продолжение адаптации вероятностей CABAC.
Что касается деперемежения, которое происходит на этапе 80 приема, для каждого транша определяется, к какому подпотоку WPP или тайлу принадлежит соответствующий транш. Выше были описаны разные возможности, такие как, например, круговое зацикливание по некоторому количеству подпотоков WPP или тайлов текущего изображения. Альтернативно, в случае использования заголовков слайса для транспортировки траншей, заголовки слайса могут содержать указание, делающее возможным локализацию начала соответствующего слайса в текущем изображении 12.
В этом отношении отмечается, что разбиение слайсов, подпотоков WPP или тайлов на транши выполняется в соответствии с порядком декодирования, определенном в каждом слайсе, подпотоке WPP или тайле: т.е. в каждом слайсе, подпотоке WPP или тайле, часть изображения, пространственно охватываемая соответствующим слайсом, подпотоком WPP или тайлом, кодируется в, или декодируется из, соответствующего слайса, подпотока WPP или тайла в этом порядке декодирования, и каждый транш соответствующего слайса, подпотока WPP или тайла охватывает непрерывную часть соответствующего слайса, подпотока WPP или тайла в соответствии с этим порядком декодирования. Посредством этого, порядок определяется среди траншей, принадлежащих одному и тому же слайсу, подпотоку WPP или тайлу, а именно порядок кодирования/декодирования, и каждый транш имеет ранг в этом порядке. Так как подразделение изображения на подпотоки WPP или тайлы сигнализируется декодеру, декодер имеет сведения о подразделении. Следовательно, для ассоциирования каждого транша с соответствующим подпотоком WPP или тайлом, например, будет достаточным, если каждый транш имеет начальный адрес, идентифицирующий начальную позицию, с которой соответствующий транш непрерывно охватывает изображение, используя порядок кодирования/декодирования тайлов/подпотоков WPP, частью которого является соответствующий транш. Даже если порядок среди траншей, которые принадлежат некоторому тайлу или подпотоку WPP, например, может быть восстановлен на транспортном демультиплексоре или декодером, используя начальные позиции. Однако, для обращения также может использоваться информация о заголовках транспортного пакета более низких уровней взаимодействия открытых систем (OSI), как описано выше в отношении передачи RTP, такая как номер порядка декодирования, т.е. DON. Транспортный демультиплексор только что упомянутого типа может быть выполнен аналогично вышеописанному транспортному демультиплексору, чтобы хранить данные траншей одинакового подпотока WPP или тайла в одном буфере слайсов, и данные траншей подпотоков WPP или тайлов, ассоциированных разных подпотоков WPP или тайлов, в разных буферах слайсов. Как упомянуто выше, структура слайса, т.е. заголовки слайса, могут использоваться для передачи траншей.
i
Затем ссылка делается на варианты осуществления на фиг. 11-15 для описания их снова другими словами. Как описано на этих фигурах, слайсы Si пакетируются в единицы NAL, причем каждая единица 110 NAL (см. фиг. 11) содержит заголовок 112 единицы NAL. Необходимо отметить, что слайсы Si могут быть нормальными слайсами или слайсами, переносящими транши согласно фиг. 9. Следовательно, эти слайсы переносят исключительно данные, касающиеся одного подпотока WPP или тайла текущего изображения, а именно i-ого подпотока WPP или тайла соответственно. Посредством фрагментирования единицы 110 NAL транспортируются посредством пакетов 114 транспортного потока (TS), а именно их секции 116 полезных данных. Выполняя так, каждой единице 110 NAL и соответствующему слайсу S предшествует соответствующий маркер MKR подпотока, указывающий i, т.е. подпоток WPP или тайл, к которому принадлежит непосредственно следующий за ним слайс непосредственно следующей единицы 110 NAL.
Единицы 110 NAL, переносящие слайсы, принадлежащие разным подпотокам WPP или тайлам, могут распределяться по более, чем одному элементарному потоку ES или по одному и тому же элементарному потоку, как описано на фиг. 11-13. Как упомянуто выше, «элементарный поток» также может идентифицировать отдельный поток RTP в его собственном сеансе RTP.
Как объяснено в отношении фиг. 14 и 15, транспортный демультиплексор может содержать мультиплексный буфер MB, буфер SB слайсов и транспортный буфер TB. Из буферов SB слайсов извлекает данные многопоточный декодер MTD, который делает возможным параллельное декодирование изображения в подпотоках WPP или тайлах. Транспортный буфер TB выполнен с возможностью сбора данных, принадлежащих пакету TS предопределенного элементарного потока битового потока видео, и направления данных в мультиплексный буфер MB. Транспортный демультиплексор тогда выполняется с возможностью оценки заголовков единицы NAL единиц NAL последовательности единиц NAL, пакетированной в пакеты TS на выходе мультиплексного буфера MB, отбрасывания единиц MKR NAL маркера подпотока с сохранением данных маркера подпотока, переносимых в единицах NAL маркера подпотока, и хранения данных слайсов подпотоков или тайлов в единицах NAL, следующих за единицами NAL маркера подпотока, поле данных которых идентифицирует одинаковый подпоток WPP или тайл в одном, т.е. в одном и том же, буфере SB слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за единицами NAL маркера подпотока, поле данных которых идентифицирует разные подпотоки WPP или тайлы в разных буферах SB слайсов. Как показано на фиг. 15, транспортный демультиплексор может содержать демультиплексор, называемый демультиплексором TS (TS demux) на фиг. 15 и выполненный с возможностью приема битового потока видео и разделения пакетов TS битового потока видео на разные элементарные потоки, т.е. распределения пакета TS битового потока видео разным элементарным потокам. Демультиплексор выполняет это разделение или распределение согласно PID, содержащимся в заголовках TS пакета TS, так что каждый элементарный поток состоит из пакетов TS PAD, отличных от PAD пакетов TS других элементарных потоков.
Т.е., если слайсы соответствуют траншам в смысле варианта осуществления на фиг. 9, MTD, т.е. многопоточный декодер, способен начинать обработку более чем одного подпотока WPP или тайла текущего изображения, как только соответствующий буфер SB слайсов соответствующего подпотока WPP или тайла будет иметь данные, содержащиеся в нем, тем самым уменьшая задержку.
Хотя некоторые аспекты были описаны в контексте устройства, ясно, что эти аспекты также представляют описание соответствующего способа, где блок или устройство соответствует этапу способа или признаку этапа способа. Аналогично, аспекты, описанные в контексте этапа способа также представляют описание соответствующего блока или элемента или признака соответствующего устройства. Некоторые или все этапы способа могут исполняться посредством (или используя) аппаратного устройства, подобного, например, микропроцессору, программируемому компьютеру или электронной схеме. В некоторых вариантах осуществления некоторый один или несколько из наиболее важных этапов способа могут исполняться таким устройством.
Обладающий признаками изобретения кодированный битовый поток может сохраняться на цифровой запоминающей среде или может передаваться по среде передачи, такой как беспроводная среда передачи или проводная среда передачи, такая как Интернет.
Эти вышеупомянутые усовершенствования, таким образом, между прочим, описывают способы инкапсуляции с малой задержкой и передачи структурированных видеоданных, обеспечиваемых новым стандартом кодирования HEVC, таких как структурированные в тайлах, подпотоках волновой параллельной обработки (WPP), слайсах или энтропийных слайсах. Между прочим, были представлены методы, которые делают возможным транспортировку с малой задержкой в распараллеленной среде кодера-передатчика-приемника-декодера посредством перемеженной транспортировки энтропийных слайсов/слайсов/тайлов/подпотоков. Чтобы решить проблемы узкого места, кратко изложенные в вводной части описания изобретения, и минимизировать задержку передачи и время декодирования, т.е. сквозную задержку, был представлен, между прочим, метод для схемы перемеженных энтропийных слайсов для параллельной передачи и обработки.
В зависимости от некоторых требований к реализации варианты осуществления изобретения могут быть реализованы аппаратными или программными средствами. Реализация может выполняться с использованием цифровой запоминающей среды, например, дискеты, цифрового многофункционального диска (DVD), диска Blu-Ray, компакт-диска (CD), постоянного запоминающего устройства (ROM), программируемого ROM (PROM), стираемого программируемого ROM (EPROM), электрически-стираемого программируемого ROM (EEPROM) или флэш-памяти, имеющей хранимые на ней сигналы управления, считываемые электронным образом, которые взаимодействуют (или способны взаимодействовать) с программируемой компьютерной системой, так что выполняется соответствующий способ. Поэтому, цифровая запоминающая среда может быть считываемой компьютером.
Некоторые варианты осуществления согласно изобретению содержат носитель данных, имеющий сигналы управления, считываемые электронным образом, которые способны взаимодействовать с программируемой компьютерной системой, так что выполняется один из способов, описанных в данном документе.
Обычно, варианты осуществления настоящего изобретения могут быть реализованы в виде продукта компьютерной программы с программным кодом, причем программный код действует для выполнения одного из способов, когда продукт компьютерной программы выполняется на компьютере. Программный код, например, может храниться на машиносчитываемом носителе.
Другие варианты осуществления содержат компьютерную программу для выполнения одного из способов, описанных в данном документе, хранимую на машиносчитываемом носителе.
Другими словами, вариант осуществления обладающими признаками изобретения способа, поэтому, представляет собой компьютерную программу, имеющую программный код для выполнения одного из способов, описанных в данном документе, когда компьютерная программа выполняется на компьютере.
Другой вариант осуществления обладающих признаками изобретения способов, поэтому, представляет собой носитель данных (или цифровую запоминающую среду или считываемую компьютером среду), содержащий записанную на ней компьютерную программу для выполнения одного из способов, описанных в данном документе. Носитель данных, цифровая запоминающая среда или записанная среда обычно являются материальными и/или долговременными.
Другой вариант осуществления обладающими признаками изобретения способа, поэтому, представляет собой поток данных или последовательность сигналов, представляющих компьютерную программу для выполнения одного из способов, описанных в данном документе. Поток данных или последовательность сигналов, например, может быть выполнена с возможностью пересылки по соединению передачи данных, например, посредством Интернета.
Другой вариант осуществления содержит средство обработки, например, компьютер, или программируемое логическое устройство, выполненное или адаптированное для выполнения одного из способов, описанных в данном документе.
Другой вариант осуществления содержит компьютер, имеющий установленную на нем компьютерную программу для выполнения одного из способов, описанных в данном документе.
Другой вариант осуществления согласно изобретению содержит устройство или систему, выполненную с возможностью пересылки (например, электронным или оптическим образом) на приемник компьютерной программы для выполнения одного из способов, описанных в данном документе. Приемником, например, может быть компьютер, мобильное устройство, устройство памяти или т.п. Устройство или система, например, могут содержать файловый сервер для пересылки компьютерной программы на приемник.
В некоторых вариантах осуществления программируемое логическое устройство (например, программируемая вентильная матрица) может использоваться для выполнения некоторых или всех функциональных возможностей способов, описанных в данном документе. В некоторых вариантах осуществления программируемая вентильная матрица может взаимодействовать с микропроцессором, чтобы выполнять один из способов, описанных в данном документе. Как правило, способы предпочтительно выполняются любым аппаратным устройством.
Вышеописанные варианты осуществления являются просто иллюстративными для принципов настоящего изобретения. Понятно, что модификации и изменения устройства и деталей, описанных в данном документе, очевидны для специалиста в данной области техники. Намерением, поэтому, является ограничение только объемом рассматриваемой формулы изобретения и не конкретными подробностями, представленными описанием и объяснением вариантов осуществления в данном документе.
В одном аспекте настоящего осуществления обеспечен декодер, выполненный с возможностью приема полезных данных последовательности необработанных байтов, описывающих изображение слайсами, подпотоками WPP или тайлами и кодированных с использованием CABAC, от кодера в траншах слайсов, подпотоков WPP или тайлов; энтропийного декодирования траншей с продолжающейся адаптацией вероятностей CABAC через границы траншей; и декодирования полезных данных последовательности необработанных байтов для получения изображения.
В упомянутом декодере последовательность необработанных байтов описывает изображение слайсами, и декодер выполнен с возможность, при декодировании полезных данных последовательности необработанных байтов, декодирования каждого слайса отдельно, без использования данных других слайсов.
В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение тайлами, и декодер выполнен с возможностью, при декодировании полезных данных последовательности необработанных байтов, выполнения энтропийного декодирования и декодирования с преобразованием тайлов независимо друг от друга.
В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение подпотоками WPP, и декодер выполнен с возможностью, при декодировании полезных данных последовательности необработанных байтов, использования волновой параллельной обработки подпотока WPP.
В упомянутом декодере транши упаковываются с использованием заголовков слайса, и декодер выполнен с возможностью, при приеме траншей, реагирования, после приема некоторого нового слайса, на флаг в заголовке слайса этого нового слайса, slice_type этого нового слайса или на тип единицы NAL собственно единицы NAL, содержащей этот новый слайс, чтобы либо прерывать адаптацию вероятностей CABAC посредством сброса вероятностей CABAC, либо продолжать адаптацию вероятностей CABAC.
В упомянутом декодере полезная нагрузка последовательности необработанных байтов описывает изображение подпотоками WPP или тайлами, которые дополнительно подразделяются на транши.
Упомянутый декодер выполнен с возможностью, при приеме упомянутых траншей, деперемежения этих траншей посредством идентификации для каждого транша, к какому подпотоку WPP или тайлу этот соответствующий транш принадлежит.
В упомянутом декодере транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов, причем каждый пакет содержит заголовок, содержащий выявление позиций и/или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга, при этом декодер выполнен с возможностью, при приеме полезных данных последовательности необработанных байтов, использования информации, содержащейся в заголовках или маркерах с тем, чтобы осуществить доступ к траншам в упомянутых пакетах.
В упомянутом декодере пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.
В упомянутом декодере пакеты представляют собой единицы NAL или слайсы.
В другом аспекте настоящего осуществления обеспечен транспортный демультиплексор, содержащий мультиплексный буфер; буферы слайсов для извлечения многопоточным декодером, позволяющим осуществлять параллельное декодирование изображения подпотоками WPP или тайлами; транспортный буфер, выполненный с возможностью сбора данных, принадлежащих пакету TS некоторого предопределенного элементарного потока битового потока видео, и направления этих данных в мультиплексный буфер; при этом транспортный демультиплексор выполнен с возможностью оценки заголовков единиц NAL собственно единиц NAL из последовательности единиц NAL, упакованной в пакеты TS, на выходе мультиплексного буфера, отбрасывания маркеров подпотоков, вставленных в последовательность единиц NAL, с сохранением данных маркеров подпотоков, переносимых в этих маркерах подпотоков, и сохранения данных слайсов подпотоков или тайлов в единицах NAL, следующих за маркерами подпотоков, поле данных которых идентифицирует одинаковый подпоток WPP или тайл, в одном буфере слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за маркерами подпотоков, поле данных которых идентифицирует разные подпотоки WPP или тайлы, в разных буферах слайсов.
В упомянутом транспортном демультиплексоре маркеры подпотоков представляют собой единицы NAL маркеров подпотоков, имеющие тип единицы NAL, отличный от единиц NAL, внутри которых находятся данные слайсов подпотоков или тайлов.
Упомянутый транспортный демультиплексор дополнительно содержит демультиплексор, выполненный с возможностью приема битового потока видео и разделения пакетов TS битового потока видео на разные элементарные потоки согласно PID, содержащимся в заголовках TS пакетов TS, так, чтобы каждый элементарный поток состоял из пакетов TS с некоторым PID, отличным от PID пакетов TS других элементарных потоков.
В другом аспекте настоящего осуществления обеспечен транспортный демультиплексор, выполненный с возможностью приема битового потока видео, содержащего полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш содержит информацию, идентифицирующую для каждого транша то, к какому подпотоку WPP или тайлу принадлежит соответствующий транш, и ассоциирования траншей со слайсами, подпотоками WPP или тайлами, используя упомянутую информацию.
В упомянутом транспортном демультиплексоре для каждого транша информация, содержащаяся в соответствующем транше, содержит адрес начальной позиции в изображении, начиная с которой соответствующий транш непрерывно охватывает некоторую часть слайса, подпотока WPP или тайла, к которому этот соответствующий транш принадлежит.
Упомянутый транспортный демультиплексор выполнен с возможностью сортировки, для каждого слайса, подпотока WPP или тайла, их траншей, используя номер порядка декодирования в заголовках пакетов собственно пакетов, в которые эти транши упакованы.
В другом аспекте настоящего осуществления обеспечена система, содержащая транспортный демультиплексор по любому из пунктов 11-13 и многопоточный декодер, при этом многопоточный декодер реализован согласно пункту 5.
В другом аспекте настоящего осуществления обеспечен кодер, выполненный с возможностью формирования, посредством кодирования изображения, полезных данных последовательности необработанных байтов для описания упомянутого изображения слайсами, подпотоками WPP или тайлами с энтропийным кодированием последовательности необработанных байтов, используя CABAC, передачи последовательности необработанных байтов в траншах и продолжения адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей.
Упомянутый кодер выполнен с возможностью формирования последовательности необработанных байтов так, чтобы транши соответствовали максимальному размеру единицы передачи.
В другом аспекте настоящего осуществления обеспечен битовый поток видео, передающий последовательность единиц NAL, содержащих заголовки единиц NAL, причем последовательность единиц NAL имеет вставленные в нее маркеры подпотоков, при этом единицы NAL, переносящие данные слайсов некоторого одного из потоков или тайлов, следуют за маркерами подпотоков, поле данных которых идентифицирует упомянутый один подпоток или тайл, и данные слайсов разных подпотоков или тайлов следуют за разными маркерами подпотоков, поле данных которых идентифицирует эти разные подпотоки или тайлы.
В другом аспекте настоящего осуществления обеспечен битовый поток видео, содержащий полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш включает в себя явное указание своего ранга среди траншей, на которые последовательно разбивается слайс, подпоток WPP или тайл, к которому этот соответствующий транш принадлежит.
В упомянутом битовом потоке видео транши упаковываются в пакеты таким образом, что каждый пакет содержит один транш из каждого подпотока WPP или тайла изображения или поднабора подпотоков WPP или тайлов изображения, расположенных в порядке, заданном среди этих подпотоков WPP или тайлов, причем каждый пакет содержит заголовок, содержащий выявление позиций и/или длин траншей, упакованных в соответствующий пакет, или маркеры, отделяющие транши в соответствующем пакете друг от друга.
В упомянутом битовом потоке видео пакеты, содержащие первые, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор признака малой задержки, а пакеты, содержащие вторые или последующие, в соответствии с порядком, заданным среди подпотоков WPP или тайлов, транши подпотоков WPP или тайлов изображения, содержат индикатор продолжения.
В упомянутом битовом потоке видео пакеты представляют собой единицы NAL или слайсы.
В другом аспекте настоящего осуществления обеспечен способ принятия решения, содержащий прием полезных данных последовательности необработанных байтов, описывающих изображение слайсами, подпотоками WPP или тайлами и кодированных с использованием CABAC, от кодера в траншах слайсов, подпотоков WPP или тайлов; энтропийное декодирование упомянутых траншей с продолжающейся адаптацией вероятностей CABAC через границы траншей; и декодирование полезных данных последовательности необработанных байтов для получения изображения.
В другом аспекте настоящего осуществления обеспечен способ транспортного демультиплексирования, использующий мультиплексный буфер, буферы слайсов для извлечения многопоточным декодером, позволяющим осуществлять параллельное декодирование изображения в подпотоках WPP или тайлах, и транспортный буфер, выполненный с возможностью сбора данных, принадлежащих пакету TS некоторого предопределенного элементарного потока из битового потока видео, и направления этих данных в мультиплексный буфер, причем способ содержит оценку заголовков единиц NAL собственно единиц NAL из последовательности единиц NAL, упакованной в пакеты TS, на выходе мультиплексного буфера, отбрасывание единиц NAL маркеров подпотоков с сохранением данных маркеров подпотоков, переносимых в этих единицах NAL маркеров подпотоков, и сохранение данных слайсов подпотоков или тайлов в единицах NAL, следующих за единицами NAL маркеров подпотоков, поле данных которых идентифицирует одинаковый подпоток WPP или тайл, в одном буфере слайсов, и данных слайсов подпотоков WPP или тайлов в единицах NAL, следующих за единицами NAL маркеров подпотоков, поле данных которых идентифицирует разные подпотоки WPP или тайлы, в разных буферах слайсов.
В другом аспекте настоящего осуществления обеспечен способ транспортного демультиплексирования, содержащий прием битового потока видео, содержащего полезную нагрузку последовательности необработанных байтов, описывающую изображение слайсами, подпотоками WPP или тайлами и кодированную с использованием CABAC, причем битовый поток видео разбивается на транши слайсов, подпотоков WPP или тайлов с продолжающейся адаптацией вероятностей CABAC через границы траншей, при этом каждый транш содержит информацию, идентифицирующую для каждого транша то, к какому подпотоку WPP или тайлу принадлежит соответствующий транш, и ассоциирования траншей со слайсами, подпотоками WPP или тайлами, используя упомянутую информацию.
В другом аспекте настоящего осуществления обеспечен способ кодирования, содержащий формирование, посредством кодирования изображения, полезных данных последовательности необработанных байтов для описания упомянутого изображения слайсами, подпотоками WPP или тайлами с энтропийным кодированием последовательности необработанных байтов, используя CABAC, передачу последовательности необработанных байтов в траншах и продолжение адаптации вероятностей CABAC при выполнении энтропийного кодирования через границы траншей.
В другом аспекте настоящего осуществления обеспечена компьютерная программа, имеющая программный код для выполнения, при исполнении на компьютере, способа по любому из пунктов 25-28.
Ссылочная литература