СИНТАКСИС И СЕМАНТИКА ДЛЯ БУФЕРИЗАЦИИ ИНФОРМАЦИИ С ЦЕЛЬЮ УПРОЩЕНИЯ КОНКАТЕНАЦИИ ВИДЕОДАННЫХ
SYNTAX AND SEMANTICS FOR BUFFERING INFORMATION TO SIMPLIFY VIDEO CONCATENATION

УРОВЕНЬ ТЕХНИКИ
Инженеры используют уплотнение (называемое также кодированием источника (исходника) или кодированием источника данных) для снижения скорости передачи цифровых видеоданных. Уплотнение снижает стоимость хранения и передачи видеоинформации путем преобразования информации в некоторую форму с более низкой скоростью передачи. Разуплотнение (называемое также декодированием) восстанавливает версию исходной информации из уплотненной формы. «Кодек» является системой кодера/декодера.
За последние два десятилетия были приняты различные стандарты видеокодеков, включая стандарты ITU-T H.261, H.262 (MPEG-2 или ISO/IEC 13818-2), H.263 и H.264 (MPEG-4 AVC или ISO/IEC 14496-10), а также стандарты MPEG-1 (ISO/IEC 11172-2), MPEG-4 Visual (ISO/IEC 14496-2) и SMPTE 421M (VC-1). Позднее был разработан стандарт HEVC (ITU-T H.265 или ISO/IEC 23008-2). Стандарт видеокодека обычно задает настройки для синтаксиса кодированного видеопотока, детализирующие параметры в потоке, когда конкретные признаки используются при кодировании и декодировании. Во многих случаях стандарт видеокодека также задает детали операций декодирования, которые декодер должен реализовывать для достижения при декодировании соответствующих результатов. Помимо стандартов кодеков, различные фирменные форматы кодеков задают другие настройки для синтаксиса кодированного видеопотока и соответствующих операций декодирования.
Один тип параметра в кодированном видеопотоке представляет собой задержку удаления из буфера кодированного изображения (“CPBRD”). Как правило, значение CPBRD для заданного изображения задает номинальное время, в которое кодированные данные, связанные с изображением, должны удаляться из буфера в декодере. Если кодированные данные для изображений удаляются в нужные моменты времени в соответствии с нормальными режимами работы, буфер декодера не переполняется (что может вызывать потерю кодированных данных) или недостаточно заполняется (что может приводить к «подергиваниям» или иному нарушению непрерывного воспроизведения). В режиме малой задержки недостаточное заполнение при некоторых обстоятельствах допустимо, но в режиме большой задержки (таком, как обычно используется для широкополосного вещания) недостаточное заполнение буфера не допускается. Модель буфера, условно именуемая гипотетическим эталонным декодером (“HRD”) или буферным видеоконтрольником (“VBV”), использует значения CPBRD и иные параметры, такие как значения скорости передачи, значения размера буфера и значения заполненности буфера или значения начальной задержки буферизации (перед началом воспроизведения), чтобы убедиться, что битовые потоки могут декодироваться в рамках ресурсов буферизации системы декодирования, и помочь декодеру определить временной режим и этапы выполнения его процесса декодирования.
Во многих случаях битовые потоки для различных видеопоследовательностей сращиваются друг с другом. Например, такая конкатенация может использоваться для введения в телевизионную программу рекламного объявления или серии рекламных объявлений, либо для переключения между различными телевизионными программами. Существующие подходы к сигнализации CPBRD могут привести к обременительным и потенциально сложным операциям во время конкатенации с целью корректировки значений CPBRD с учетом конкатенации. Еще одна проблема состоит в том, что хотя два исходных потока могут являться независимо согласующимися с HRD, после конкатенации результирующий сращенный поток не является гарантированно согласующимися с HRD.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Таким образом, в подробном описании представлены инновации в синтаксисе и/или семантике значений задержки удаления из буфера кодированного изображения (“CPBRD”), которые упрощают операции конкатенации. В частности, инновации поддерживают операции конкатенации посредством новых путей сигнализации значений CPBRD для определенных изображений, когда такие значения CPBRD могут попросту повторно использоваться, если битовый поток или часть битового потока для одной видеопоследовательности соединяется с другим битовым потоком или частью битового потока для другой видеопоследовательности.
В соответствии с одним аспектом описываемых в настоящем документе инноваций, видеокодер или иное средство устанавливает значение CPBRD для заданного изображения видеопоследовательности. Значение CPBRD для заданного изображения указывает на значение приращения относительно номинального времени удаления буфера кодированного изображения («СРВ») предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о периоде буферизации (“SEI о BP”). При этом кодер или иное средство сигнализирует значение CPBRD для заданного изображения. Значение CPBRD может сигнализироваться в соответствии с однозначным подходом, при котором флаг указывает, как интерпретировать значение CPBRD, в соответствии с двухзначным подходом, при котором также сигнализируется еще одно значение CPBRD (имеющее другую интерпретацию), в соответствии с двухзначным подходом, в котором используются флаг и дельта-значение, или в соответствии с иным методом.
В соответствии с еще одним аспектом описываемых в настоящем документе инноваций, видеодекодер или иное средство принимает значение CPBRD для заданного изображения видеопоследовательности. Значение CPBRD для заданного изображения указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о BP. При этом кодер или иное средство проводит синтаксический анализ значения CPBRD для заданного изображения. Значение CPBRD может сигнализироваться в соответствии с однозначным подходом, при котором флаг указывает, как интерпретировать значение CPBRD, в соответствии с двухзначным подходом, при котором также сигнализируется еще одно значение CPBRD (имеющее другую интерпретацию), в соответствии с двухзначным подходом, в котором используются флаг и дельта-значение, или в соответствии с иным подходом.
В соответствии с еще одним аспектом описываемых в настоящем документе инноваций, средство конкатенации принимает, по меньшей мере, часть первого битового потока для первой видеопоследовательности и, кроме того, принимает, по меньшей мере, часть второго битового потока для второй видеопоследовательности. Значение CPBRD для заданного изображения второй видеопоследовательности указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о BP. Средство конкатенации сращивает, по меньшей мере, часть второй видеопоследовательности, по меньшей мере, с частью первой видеопоследовательности. В ходе конкатенации средство конкатенации соединяет всю вторую видеопоследовательность или ее часть, начиная с заданного изображения, с указанной, по меньшей мере, частью первой видеопоследовательности. Значение CPBRD может сигнализироваться в соответствии с однозначным подходом, при котором флаг указывает, как интерпретировать значение CPBRD, в соответствии с двухзначным подходом, при котором также сигнализируется еще одно значение CPBRD (имеющее другую интерпретацию), в соответствии с двухзначным подходом, в котором используются флаг и дельта-значение, или в соответствии с иным подходом.
Кодирование, декодирование и конкатенация могут быть реализованы как часть способа, как часть вычислительного устройства, выполненного с возможностью осуществления способа, или как часть материального машиночитаемого носителя информации, хранящего выполняемые компьютером команды, инициирующие осуществление способа вычислительным устройством.
Вышеописанные и прочие цели, признаки и преимущества изобретения станут более понятными из нижеследующего подробного описания, которое приводится со ссылкой на прилагаемые чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фиг. 1 представляет собой схему примера вычислительной системы, в которой могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 2а и 2b представляют собой схемы примеров сетевых сред, в которых могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 3 представляет собой схему примера системы кодера, с использованием которой могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 4 представляет собой схему примера системы декодера, с использованием которой могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 5 представляет собой схему, иллюстрирующую пример видеокодера, с использованием которого могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 6 представляет собой схему, иллюстрирующую пример видеодекодера, с использованием которого могут быть реализованы некоторые описываемые варианты осуществления.
Фиг. 7 представляет собой схему, иллюстрирующую операцию конкатенации в соответствии с предшествующими методами корректировки значений CPBRD.
Фиг. 8 и 9 представляют собой таблицы, иллюстрирующие синтаксис для однозначного подхода к сигнализации значений CPBRD.
Фиг. 10 представляет собой график, иллюстрирующий заполненность буфера при сращивании двух битовых потоков.
Фиг. 11 представляет собой таблицу, иллюстрирующую синтаксис для двухзначного подхода к сигнализации значений CPBRD с использованием флага и дельта-значения.
Фиг. 12 представляют собой структурную схему, иллюстрирующую обобщенный метод установки значений CPBRD во время кодирования для упрощения конкатенации видеоданных.
Фиг. 13 представляет собой структурную схему, иллюстрирующую пример метода установки значений CPBRD во время кодирования для упрощения конкатенации видеоданных в соответствии с однозначным подходом.
Фиг. 14 представляет собой структурную схему, иллюстрирующую обобщенный метод обработки значений CPBRD во время декодирования.
Фиг. 15 представляет собой структурную схему, иллюстрирующую пример метода определения значений CPBRD во время декодирования в соответствии с однозначным подходом.
Фиг. 16 представляет собой структурную схему, иллюстрирующую обобщенный метод конкатенации битовых потоков.
Фиг. 17 представляет собой структурную схему, иллюстрирующую пример метода установки значений CPBRD во время кодирования для упрощения конкатенации видеоданных в соответствии с двухзначным подходом с использованием флага и дельта-значения.
Фиг. 18 представляет собой структурную схему, иллюстрирующую пример метода определения значений CPBRD во время декодирования в соответствии с двухзначным подходом с использованием флага и дельта-значения.
ПОДРОБНОЕ ОПИСАНИЕ
В подробном описании представлены различные подходы к улучшению поддержки операций конкатенации путем корректировки синтаксиса и/или семантики значений задержки удаления из буфера кодированного изображения (“CPBRD”). Во многих случаях эти подходы устраняют недостатки предыдущих подходов. В частности, в подробном описании представлены инновации для синтаксиса и семантики значений CPBRD, сигнализируемых в типах сообщений с дополнительной расширяющей информацией (“SEI”) в стандарте HEVC или в стандарте H.264/AVC. В различных примерах синтаксис и/или семантика сообщений с SEI о периоде буферизации (“SEI о BP”) и/или сообщений с SEI о временном режиме изображений (“SEI о PT”) корректируется для обеспечения операций конкатенации.
Несмотря на то, что описываемые в настоящем документе операции иногда описываются как выполняемые кодером (например, видеокодером), декодером (например, видеодекодером) или средством конкатенации (например, средством конкатенации видеоданных), во многих случаях эти операции могут в качестве альтернативы выполняться другим типом средства обработки мультимедийной информации.
Некоторые из инноваций, описываемых в настоящем документе, иллюстрируются применительно к элементам и операциям синтаксиса, типичным для стандарта HEVC. Например, упоминается проект JCTVC-K1003 стандарта HEVC - «Проект 9 текстового описания Высокоэффективного кодирования видеосигналов (HEVC)», JCTVC-K1003_d13, 11-е заседание, Шанхай, 10-19 октября, 2012 г. Описываемые в настоящем документе инновации могут также быть реализованы для других стандартов или форматов, например, стандарта H.264/AVC.
В общем, возможны различные альтернативы примерам, описываемым в настоящем документе. Например, некоторые из способов, описываемых в настоящем документе, могут быть изменены путем изменения последовательности описываемых действий способа, путем разделения, повторения или исключения некоторых действий способа и т.д. Различные аспекты рассматриваемой технологии могут использоваться в совокупности или по отдельности. Различные варианты осуществления используют одну или более из описываемых инноваций. Некоторые из инноваций, описываемых в настоящем документе, решают одну или более проблем, отмеченных при описании уровня техники. Как правило, отдельно взятый метод/средство не решает все указанные проблемы.
I. Примеры вычислительных систем
Фиг. 1 иллюстрирует обобщенный пример применимой вычислительной системы (100), в которой могут быть реализованы некоторые из описанных инноваций. Вычислительная система (100) не предполагает какого-либо ограничения в отношении области применения или функциональных возможностей, поскольку указанные инновации могут быть реализованы в различных универсальных или специализированных вычислительных системах.
В соответствии с Фиг. 1, вычислительная система (100) содержит одно или более устройств (110, 115) обработки и память (120, 125). Устройства (110, 115) обработки выполняют выполняемые компьютером команды. Устройство обработки представляет собой универсальный центральный процессор (“CPU”), специализированную интегральную схему (“ASIC”) или любой иной тип процессора. В мультипроцессорной системе множество устройств обработки выполняет выполняемые компьютером команды для повышения вычислительной мощности. Например, на Фиг. 1 показан центральный процессор (110), а также устройство графической обработки или устройство (115) совместной обработки. Материальная память (120, 125) может представлять собой энергозависимую память (например, регистры, кэш, оперативное запоминающее устройство (ОЗУ)), энергонезависимую память (например, постоянное запоминающее устройство (ПЗУ), электрически-стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ), флэш-память и т.д.) или некоторые комбинации обоих, доступные для устройства (устройств) обработки. Память (120, 125) хранит программные средства (180), реализующие одну или более инноваций, для кодирования, декодирования и/или конкатенации видеоданных с использованием синтаксиса и семантики для значений CPBRD, которые упрощают конкатенацию видеоданных, в форме выполняемых компьютером команд, применимых для выполнения устройством (устройствами) обработки.
Вычислительная система может иметь дополнительные признаки. Например, вычислительная система (100) содержит накопитель (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода и одно или более коммуникационных соединений (170). Механизм межсоединений (не показан), такой как шина, контроллер или сеть, соединяет компоненты вычислительной системы (100). Как правило, операционная система (не показана) обеспечивает операционную среду для других программных средств, выполняемых в вычислительной системе (100), и координирует операции компонентов вычислительной системы (100).
Материальный накопитель (140) может быть съемным или несъемным и включает в себя магнитные диски, магнитные ленты или кассеты, постоянные запоминающие устройства на компакт-дисках (CD-ROM), цифровые видеодиски (DVD) или любой иной носитель, который может использоваться для хранения информации и который может быть доступным в вычислительной системе (100). Накопитель (140) хранит команды для программных средств (180), реализующие одну или более инноваций, для кодирования, декодирования и/или конкатенации видеоданных с использованием синтаксиса и семантики для значений CPBRD, которые упрощают конкатенацию видеоданных.
Устройство (устройства) (150) ввода может представлять собой сенсорное устройство ввода, такое как клавиатура, мышь, перо, либо трекбол, устройство речевого ввода, сканирующее устройство, либо иное устройство, которое обеспечивает ввод в вычислительную систему (100). Для кодирования видеоданных устройство (устройства) (150) ввода может представлять собой камеру, видеоадаптер, адаптер ТВ-тюнера, либо подобное устройство, которое принимает входные видеоданные в аналоговой или цифровой форме, либо CD-ROM или компакт-диск с многократной записью (CD-RW), который передает входные видеоданные в вычислительную систему (100). Устройство (устройства) (160) вывода может представлять собой дисплей, принтер, громкоговоритель, устройство записи компакт-дисков, либо иное устройство, которое обеспечивает вывод из вычислительной системы (100).
Коммуникационное соединение (соединения) (170) обеспечивает связь в среде передачи данных с другим вычислительным объектом. Среда передачи данных передает информацию, такую как выполняемые компьютером команды, входные или выходные аудиоданные или видеоданные, либо иные данные в модулированном информационном сигнале. Модулированный информационный сигнал представляет собой сигнал, одна или более характеристик которого задаются или изменяются таким образом, чтобы кодировать информацию в сигнале. В качестве примера, а не ограничения, среда передачи данных может использовать электрическую, оптическую, радиочастотную (РЧ) или иную несущую.
Инновации могут описываться в общем контексте машиночитаемых носителей. Машиночитаемые носители представляют собой любые материальные носители, доступ к которым может осуществляться в вычислительной среде. В качестве примера, а не ограничения, в вычислительной системе (100) машиночитаемые носители включают в себя память (120, 125), накопитель (140) и комбинации любого из перечисленного.
Инновации могут описываться в общем контексте выполняемых компьютером команд, например, входящих в программные модули и выполняемых в вычислительной системе в целевом реальном или виртуальном процессоре. Как правило, программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. В различных вариантах осуществления функциональные возможности программных модулей могут быть по желанию объединены или разделены между программными модулями. Выполняемые компьютером команды для программных модулей могут выполняться в локальной или распределенной вычислительной системе.
Термины «система» и «устройство» используются в настоящем документе как синонимы. Если в контексте явно не указано иное, ни один из двух терминов не предполагает какого-либо ограничения типа вычислительной системы или вычислительного устройства. Как правило, вычислительная система или вычислительное устройство может быть локальным или распределенным и может включать в себя любую комбинацию специализированных аппаратных средств и/или универсальных аппаратных средств с использованием программных средств, реализующих описываемые в настоящем документе функциональные возможности.
Описываемые способы могут также быть реализованы с помощью специализированной вычислительной техники, выполненной с возможностью осуществления любых из описываемых способов. Например, описываемые способы могут быть реализованы с помощью интегральной схемы (например, специализированной интегральной схемы (“ASIC”), такой как цифровой сигнальный процессор (“DSP”) ASIC, графический процессор (“GPU”) или программируемое логическое устройство (“PLD”), такое как программируемая пользователем вентильная матрица (“FPGA”)), специально предназначенной для реализации или выполненной с возможностью реализации любого из описываемых способов.
С целью представления в подробном описании используются такие термины, как «определять» и «использовать» для описания компьютерных операций в вычислительной системе. Эти термины являются высокоуровневыми абстракциями для операций, выполняемых компьютером, и их не следует путать с действиями, выполняемыми человеком. Реальные компьютерные операции, соответствующие этим терминам, варьируются в зависимости от реализации.
II. Примеры сетевых сред
На Фиг. 2а и 2b приведены примеры сетевых сред (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединяются по сети (250) с помощью соответствующего протокола передачи данных. Сеть (250) может включать в себя Интернет или иную компьютерную сеть.
В сетевой среде (201), изображенной на Фиг. 2а, каждое средство (210) передачи в реальном времени (“RTC”) содержит как кодер (220), так и декодер (270) для двусторонней связи. Отдельно взятый кодер (220) может обеспечивать выходную информацию, совместимую со стандартом SMPTE 421M, стандартом ISO/IEC 14496-10 (называемым также Н.264 или AVC), стандартом HEVC (называемым также Н.265), иным стандартом, либо фирменным форматом, при этом соответствующий декодер (270) принимает кодированные данные от кодера (220). Двусторонняя связь может являться частью видеоконференции, видеотелефонного разговора или иного сценария двусторонней или многосторонней связи. Несмотря на то, что сетевая среда (201) на Фиг. 2 включает в себя два средства (210) передачи в реальном времени, сетевая среда (201) может вместо этого включать в себя три или более средств (210) передачи в реальном времени, которые участвуют в многосторонней связи.
Средство (210) передачи в реальном времени управляет кодированием с помощью кодера (220). На Фиг. 3 приведен пример системы (300) кодера, которая может быть включена в состав средства (210) передачи в реальном времени. В качестве альтернативы в средстве (210) передачи в реальном времени используется иная система кодера. Средство (210) передачи в реальном времени управляет также декодированием с помощью декодера (270). На Фиг. 4 приведен пример системы (400) декодера, которая может быть введена в состав средства (210) передачи в реальном времени. В качестве альтернативы в средстве (210) передачи в реальном времени используется иная система декодера.
В сетевой среде (202), изображенной на Фиг. 2b, средство (212) кодирования содержит кодер (220), который кодирует видеоданные для передачи на множество средств (214) воспроизведения, содержащих декодеры (270). Односторонняя связь может обеспечиваться для системы видеонаблюдения, системы контроля с веб-камерой, доклада при проведении компьютерной конференц-связи с удаленным рабочим столом или иного сценария, в котором видеоинформация кодируется и отправляется из одного местоположения в одно или более других местоположений. Несмотря на то, что сетевая среда (202) на Фиг. 2b содержит два средства (214) воспроизведения, сетевая среда (202) может содержать больше или меньше средств (214) воспроизведения. Как правило, средство (214) воспроизведения связывается со средством (212) кодирования для определения потока видеоданных для приема средством (214) воспроизведения. Средство (214) воспроизведения принимает поток, буферизует принимаемые кодированные данные для соответствующего периода и начинает декодирование и воспроизведение.
На Фиг. 3 приведен пример системы (300) кодера, которая может быть включена в состав средства (212) кодирования. В качестве альтернативы средство (212) кодирования использует другую систему кодера. Средство (212) кодирования может также включать в себя серверную логическую схему контроллера для управления соединениями с одним или более средств (214) воспроизведения. На Фиг. 4 приведен пример системы (400) декодера, которая может быть включена в состав средства (214) воспроизведения. В качестве альтернативы средство (214) воспроизведения использует другую систему декодера. Средство (214) воспроизведения может также включать в себя клиентскую логическую схему контроллера для управления соединениями со средством (212) кодирования.
Сетевая среда (201), изображенная на Фиг. 2а, может включать в себя множество средств RTC с множеством кодеров. Сетевая среда (202), изображенная на Фиг. 2b, может включать в себя множество средств кодирования с множеством кодеров. Такие кодеры могут выдавать множество выходных битовых потоков, которые сращиваются средством конкатенации в единый битовый поток. Либо один кодер может выдавать множество битовых потоков, которые сращиваются средством конкатенации в единый битовый поток.
III. Примеры систем кодера
Фиг. 3 представляет собой блок-схему примера системы (300) кодера, с использованием которой могут быть реализованы некоторые описываемые варианты осуществления. Система (300) кодера может представлять собой универсальное средство кодирования, способное работать в любом из множества режимов кодирования, таких как режим кодирования с малой задержкой для передачи в реальном времени, режим транскодирования и режим кодирования с большой задержкой для создания мультимедийной информации для воспроизведения из файла или потока, либо она может представлять собой специализированное средство кодирования, приспособленное для одного такого режима кодирования. Система (300) кодера может быть реализована в виде модуля операционной системы, в составе библиотеки прикладных программ или в виде автономного приложения. В общем и целом, система (300) кодера принимает последовательность исходных видеокадров (311) от источника (310) видеоинформации и выдает кодированные данные в качестве выходной информации в канал (390). Кодированные данные, выдаваемые в канал, могут содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD.
Источником (310) видеоинформации может являться камера, адаптер тюнера, носитель информации или иной источник цифровой видеоинформации. Источник (310) видеоинформации выдает последовательность видеокадров с частотой кадров, например, 30 кадров в секунду. Используемый в настоящем документе термин «кадр» обычно относится к исходным, кодированным или восстановленным видеоданным. Для видеоинформации с прогрессивной разверткой кадр представляет собой кадр видеоинформации с прогрессивной разверткой. Для чересстрочной видеоинформации в примерах осуществления в кадре чересстрочной видеоинформации перед кодированием устраняется чересстрочная развертка. В качестве альтернативы два сопряженных поля чересстрочной видеоинформации кодируются вместе в виде единого видеокадра или кодируются в виде отдельно кодируемых полей. Помимо обозначения кадра видеоинформации с прогрессивной разверткой или кадра видеоинформации с чересстрочной разверткой термин «кадр» или «изображение» может обозначать единое непарное поле видеоинформации, сопряженную пару полей видеоинформации, плоскость объекта видеоинформации, которая представляет собой объект видео в определенный момент времени, или представляющий интерес участок в более крупном изображении. Плоскость объекта или участок видеоинформации может входить в более крупное изображение, которое содержит множество объектов или участков сцены.
Поступающий исходный кадр (311) сохраняется в области (320) хранения временной памяти исходных кадров, которая содержит множество областей (321, 322, …, 32n) хранения кадровых буферов. Кадровый буфер (321, 322 и т.д.) хранит один исходный кадр в области (320) хранения исходных кадров. После того, как один или более исходных кадров (311) сохраняются в кадровых буферах (321, 322 и т.д.), селектор (330) кадров выбирает отдельный исходный кадр из области (320) хранения исходных кадров. Порядок, в котором кадры выбираются селектором (330) кадров для ввода в кодер (340), может отличаться от порядка, в котором кадры выдаются источником (310) видеоинформации, например, кодирование некоторых кадров может задерживаться в порядке следования для обеспечения кодирования некоторых более поздних кадров в первую очередь и посредством этого временного обеспечения обратного предсказания. Перед кодером (340) система (300) кодера может содержать препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием. Предварительная обработка может также включать в себя преобразование пространства цветов в первичные (например, яркость) и вторичные (например, смещения цветности в сторону красного цвета и в сторону синего цвета) компоненты и передискретизацию (например, для уменьшения пространственного разрешения компонентов цветности) для кодирования.
Кодер (340) кодирует выбранный кадр (331) для получения кодированного кадра (341) и, кроме того, выдает сигналы (342) операции управления распределением памяти (“MMCO”) или информацию о наборе эталонных изображений (“RPS”). Если текущий кадр не является первым кодированным кадром при осуществлении процесса кодирования, кодер (340) может использовать один или более из ранее кодированных/декодированных кадров (369), которые сохранялись в области (360) хранения временной памяти декодированных кадров. Такие декодированные кадры (369) используются в качестве эталонных кадров для межкадрового предсказания контента текущего исходного кадра (331). Информация (342) MMCO/RPS указывает декодеру, какие восстановленные кадры могут использоваться в качестве эталонных кадров и, следовательно, должны сохраняться в области хранения кадров.
Как правило, кодер (340) содержит множество модулей кодирования, которые выполняют задачи кодирования, такие как оценка и компенсация движения, частотные преобразования, квантование и энтропийное кодирование. Конкретные операции, выполняемые кодером (340), могут варьироваться в зависимости от формата сжатия. Форматом выходных кодированных данных может являться видеоформат Windows Media, формат VC-1, формат MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), формат Н.26х (например, Н.261, Н.262, Н.263, Н.264), формат HEVC (Н.265) или иной формат.
Например, в кодере (340) полученный с помощью межкадрового кодирования и предсказания кадр представлен с учетом предсказания по эталонным кадрам. Блок оценки движения оценивает движение наборов выборок исходного кадра (331) относительно одного или более эталонных кадров (369). Набор выборок может представлять собой макромассив (macroblock), суб-макромассив (sub-macroblock) или раздел суб-макромассива (как в стандарте Н.264), либо он может представлять собой блок дерева кодирования или блок предсказания (как в стандарте HEVC). Как правило, используемый в настоящем документе термин «массив» означает набор выборок, который может представлять собой одну двумерную (“2D”) матрицу или множество 2D матриц (например, одну матрицу для компоненты яркости и две матрицы для компонент цветности). При использовании множества эталонных кадров указанное множество эталонных кадров может быть получено по различным временным направлениям или одному и тому же временному направлению. Блок оценки движения выдает информацию о движении, такую как информация о векторе движения, которая подвергается энтропийному кодированию. Блок компенсации движения применяет векторы движения к эталонным кадрам для определения значений предсказания с учетом компенсации движения для межкадрового предсказания. Кодер определяет различия (при их наличии) между значениями предсказания с учетом компенсации движения блока и соответствующими исходными значениями. Эти остаточные значения предсказания дополнительно кодируются с помощью частотного преобразования, квантования и энтропийного кодирования. Например, кодер (340) устанавливает значения для параметра квантования (“QP”) яркости и QP цветности для изображения, фрагмента и/или иной части видеоинформации и в соответствии с этим квантует коэффициенты преобразования. Аналогичным образом, для внутрикадрового предсказания кодер (340) может определять значения внутреннего предсказания для блока, определять остаточные значения предсказания и кодировать остаточные значения предсказания (с частотным преобразованием, квантованием и энтропийным кодированием). В частности, энтропийный кодер кодера (340) уплотняет значения квантованного коэффициента преобразования, а также определенную побочную информацию (например, информацию о векторе движения, значения QP, выбранные режимы, выбранные параметры). Типичные методы энтропийного кодирования включают в себя Экспоненциальное кодирование Голомба, кодирование Голомба-Райса, арифметическое кодирование, кодирование по методу Хаффмена, кодирование длин серий, перекодирование неравномерного кода в неравномерный (“V2V”), перекодирование неравномерного кода в равномерный (“V2F”), кодирование по методу Лемпела-Зива (“LZ”), словарное кодирование, энтропийное кодирование с разбиением интервала вероятности (“PIPE”) и комбинации перечисленного. Энтропийный кодер может использовать различные методы кодирования для различных видов информации, может применять множество методов вместе (например, путем применения кодирования Голомба-Райса с последующим арифметическим кодированием) и может выбирать среди множества таблиц кодов в рамках конкретного метода кодирования.
Кодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации (342) MMCO/RPS, поскольку зависимости и структуры упорядочения для кадров уже известны в кодере (340)) обрабатываются эмулятором (350) процесса декодирования. Эмулятор (350) процесса декодирования реализует некоторые из функциональных возможностей декодера, например, задачи декодирования по восстановлению эталонных кадров, которые используются кодером (340) при оценке и компенсации движения. Способом, согласующимся с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования определяет, необходимо ли восстанавливать отдельно взятый кодированный кадр (341) и сохранять его для использования в качестве эталонного кадра при межкадровом предсказании последующих кодируемых кадров. Если кодированный кадр (341) необходимо сохранять, эмулятор (350) процесса декодирования моделирует процесс декодирования, осуществляемый декодером, который принимает кодированный кадр (341) и выдает соответствующий декодированный кадр (351). При этом, если кодер (340) использовал декодированный кадр (кадры) (369), который был сохранен в области (360) хранения декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный кадр (кадры) (369) из области (360) хранения в ходе процесса декодирования.
Область (360) хранения временной памяти декодированных кадров содержит множество областей (361, 362, …, 36n) хранения кадровых буферов. Способом, согласующимся с информацией (342) MMCO/RPS, эмулятор (350) процесса декодирования управляет содержимым области (360) хранения с целью отождествления любых кадровых буферов (361, 362 и т.д.) с кадрами, которые больше не нужны кодеру (340) для использования в качестве эталонных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет вновь декодированный кадр (351) в кадровом буфере (361, 362 и т.д.), который был отождествлен таким образом.
Кодер (340) устанавливает значения CPBRD для изображений, которые кодируются в соответствии со спецификацией модели буферного потока (например, гипотетического эталонного декодера (“HRD”) или буферного видеоконтрольника (“VBV”)). Таким образом, кодер (340) накладывает ограничения на флуктуации скорости передачи данных для битового потока, чтобы обеспечивать возможность декодирования битового потока в рамках ресурсов буферизации системы декодирования. Кодер (340) также устанавливает значения CPBRD, чтобы помочь декодеру определить временной режим и этапы для выполнения своего процесса декодирования.
Кодированные кадры (341) и информация (342) MMCO/RPS (или информация, эквивалентная информации MMCO/RPS) также буферизуются во временной области (370) кодированных данных. Кодированные данные, которые агрегируются в области (370) кодированных данных, содержат - в составе синтаксиса элементарного кодированного битового потока видеоинформации - кодированные данные для одного или более изображений. Кодированные данные, которые агрегируются в области (370) кодированных данных, могут также содержать метаданные мультимедийной информации, относящиеся к кодированным видеоданным (например, в качестве одного или более параметров в одном или более сообщений с дополнительной расширяющей информацией (“SEI”) или сообщений с информацией о применимости видеоданных (“VUI”). Такие метаданные мультимедийной информации могут содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD (например, в составе сообщений с SEI о PT и сообщений с SEI о BP).
Агрегированные данные (371) из временной области (370) кодированных данных обрабатываются канальным кодером (380). Канальный кодер (380) может пакетизировать и/или мультиплексировать агрегированные данные для передачи или хранения в виде потока мультимедийной информации (например, в соответствии с форматом программного потока мультимедийной информации или форматом транспортного потока, таким как ITU-T H.222.0|ISO/IEC 13818-1, или форматом транспортного протокола реального времени Интернета, таким как IETF RFC 3550), при этом канальный кодер (380) может добавлять элементы синтаксиса в составе синтаксиса потока передачи мультимедийной информации. Такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Либо канальный кодер (380) может организовывать агрегированные данные для хранения в виде файла (например, в соответствии с форматом контейнера мультимедийной информации, таким как ISO/IEC 14496-12), при этом канальный кодер (380) может добавлять элементы синтаксиса в составе синтаксиса файла накопителя мультимедийной информации. Такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Либо, в более общем смысле, канальный кодер (380) может реализовывать один или более протоколов мультиплексирования мультимедийной системы или транспортных протоколов, при этом канальный кодер (380) может добавлять элементы синтаксиса в составе синтаксиса протокола (протоколов). В этом случае также такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Канальный кодер (380) выдает выходную информацию в канал (390), который представляет собой накопитель, коммуникационное соединение или иной канал для вывода. Канальный кодер (380) или канал (390) может также содержать другие элементы (не показаны), такие как кодирование с прямым исправлением ошибок (“FEC”) и модулирование аналоговых сигналов.
IV. Примеры систем декодера
Фиг. 4 представляет собой блок-схему примера системы (400) декодера, с использованием которой могут быть реализованы некоторые описываемые варианты осуществления. Система (400) декодера может представлять собой универсальное средство декодирования, способное работать в любом из множества режимов декодирования, таких как режим декодирования с малой задержкой для передачи в реальном времени и режим декодирования с большей задержкой для воспроизведения мультимедийной информации из файла или потока, либо она может представлять собой специализированное средство декодирования, приспособленное для одного такого режима декодирования. Система (400) декодера может быть реализована в виде модуля операционной системы, в составе библиотеки прикладных программ или в виде автономного приложения. В общем и целом, система (400) декодера принимает кодированные данные из канала (410) и выдает восстановленные кадры в качестве выходной информации для адресата (490) вывода. Кодированные данные могут содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD.
Система (400) декодера содержит канал (410), который может представлять собой накопитель, коммуникационное соединение или иной канал для кодированных данных в качестве входных. Канал (410) выдает кодированные данные, которые подвергались канальному кодированию. Канальный декодер (420) может обрабатывать кодированные данные. Например, канальный декодер (420) депакетизирует и/или демультиплексирует данные, которые были агрегированы для передачи или хранения, в виде потока мультимедийной информации (например, в соответствии с форматом программного потока мультимедийной информации или форматом транспортного потока, таким как ITU-T H.222.0|ISO/IEC 13818-1, или форматом транспортного протокола реального времени интернета, таким как IETF RFC 3550), при этом канальный декодер (420) может проводить синтаксический анализ элементов синтаксиса, добавляемых в составе синтаксиса потока передачи мультимедийной информации. Такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Либо канальный декодер (420) разделяет кодированные данные, которые были агрегированы для хранения в виде файла (например, в соответствии с форматом контейнера мультимедийной информации, таким как ISO/IEC 14496-12), при этом канальный декодер (420) может проводить синтаксический анализ элементов синтаксиса в составе синтаксиса файла накопителя мультимедийной информации. Такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Либо, в более общем смысле, канальный декодер (420) может реализовывать один или более протоколов демультиплексирования мультимедийной системы или транспортных протоколов, при этом канальный декодер (420) может проводить синтаксический анализ элементов синтаксиса в составе синтаксиса протокола (протоколов). В этом случае также такой синтаксис может содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD. Канал (410) или канальный декодер (420) может также содержать другие элементы (не показаны), такие как декодирование FEC и демодулирование аналоговых сигналов.
Кодированные данные (421), которые выдаются из канального декодера (420), хранятся во временной области (430) кодированных данных до тех пор, пока не будет принято достаточное количество таких данных. Кодированные данные (421) содержат кодированные кадры (431) и информацию (432) MMCO/RPS. Кодированные данные (421) в области (430) кодированных данных содержат - в составе синтаксиса элементарного кодированного битового потока видеоинформации - кодированные данные для одного или более изображений. Кодированные данные (421) в области (430) кодированных данных могут также содержать метаданные мультимедийной информации, относящиеся к кодированным видеоданным (например, в качестве одного или более параметров в одном или более сообщений с SEI или сообщений с VUI). Такие метаданные мультимедийной информации могут содержать элементы синтаксиса, которые указывают на значения CPBRD для изображений, а также элементы синтаксиса, которые указывают, как должны интерпретироваться значения CPBRD (например, в составе сообщений с SEI о PT и сообщений с SEI о BP).
Декодер (450) использует значения CPBRD для определения временного режима и этапов выполнения своего полного процесса декодирования. Как правило, область (430) кодированных данных временно сохраняет кодированные данные (421) до тех пор, пока такие кодированные данные (421) не будут использоваться декодером (450), на что указывает значение CPBRD. При этом кодированные данные для кодированного кадра (431) и информации (432) MMCO/RPS передаются из области (430) кодированных данных в декодер (450). По мере того, как декодирование продолжается, новые кодированные данные добавляются в область (430) кодированных данных, а самые старые кодированные данные, остающиеся в области (430) кодированных данных, передаются в декодер (450).
Декодер (450) декодирует кодированный кадр (431) для получения соответствующего декодированного кадра (451). В случае необходимости при осуществлении своего процесса декодирования декодер (450) может использовать один или более из ранее декодированных кадров (469) в качестве эталонных кадров для межкадрового предсказания. Декодер (450) считывает такие ранее декодированные кадры (469) из области (460) хранения временной памяти декодированных кадров. Как правило, декодер (450) содержит множество модулей декодирования, которые выполняют задачи декодирования, такие как энтропийное декодирование, внутрикадровое предсказание, обратное квантование и обратные частотные преобразования. Конкретные операции, выполняемые декодером (450), могут варьироваться в зависимости от формата сжатия.
Например, декодер (450) принимает кодированные данные для сжатого кадра или последовательности кадров и выдает выходную информацию, содержащую декодированный кадр (451). В декодере (450) буфер принимает кодированные данные для сжатого кадра и в соответствующее время, на которое номинально указывает значение CPBRD, делает принимаемые кодированные данные доступными для энтропийного декодера. Энтропийный декодер осуществляет энтропийное декодирование прошедших энтропийное кодирование квантованных данных, а также прошедшей энтропийное кодирование побочной информации, обычно применяя обратную операцию по отношению к энтропийному кодированию, выполняемому в кодере. Компенсатор движения применяет информацию о движении к одному или более эталонных кадров для формирования предсказаний массивов с компенсацией движения (например, макромассивов, суб-макромассивов, разделов суб-макромассивов, блоков дерева кодирования, блоков предсказания, либо их частей, таких как массивы дерева кодирования, массивы предсказания или иные массивы) восстанавливаемого кадра. Модуль внутрикадрового предсказания может пространственно предсказывать выборочные значения текущего блока из соседних ранее восстановленных выборочных значений. Декодер (450) также восстанавливает остаточные значения предсказания. Обратный квантователь осуществляет обратное квантование прошедших энтропийное декодирование данных. Например, декодер (450) устанавливает значения для QP яркости и QP цветности для изображения, фрагмента и/или иной части видеоинформации на основе элементов синтаксиса в битовом потоке и в соответствии с этим осуществляет обратное квантование коэффициентов преобразования. Обратный преобразователь частот преобразует квантованные данные частотной области в информацию пространственной области. Для кадра, прошедшего межкадровое предсказание, декодер (450) комбинирует восстановленные остаточные значения предсказания с предсказаниями с компенсацией движения для формирования восстановленного кадра. Декодер (450) может аналогичным образом комбинировать остаточные значения предсказания с пространственными предсказаниями по внутрикадровому предсказанию. Адаптивный фильтр деблокинга введен в состав контура компенсации движения в видеодекодере (450) для сглаживания неоднородностей по всем строкам и/или столбцам границы блока в декодированном кадре (451). В качестве альтернативы или дополнения в качестве операций контурной фильтрации может применяться другая фильтрация (такая как фильтрация с подавлением реверберации, фильтрация в контуре автоматического управления (“ALF”) или фильтрация с адаптивным смещением выборки (“SAO”); не показаны).
Область (460) хранения временной памяти декодированных кадров содержит множество областей (461, 462, …, 46n) хранения кадровых буферов. Область (460) хранения декодированных кадров является примером DPB. Декодер (450) использует информацию (432) MMCO/RPS для идентификации кадрового буфера (461, 462 и т.д.), в котором он может сохранить декодированный кадр (451). Декодер (450) сохраняет декодированный кадр (451) в этом кадровом буфере.
Выходное устройство (480) задания последовательностей идентифицирует (например, с помощью информации в сообщениях о ВР и PT SEI), когда следующий кадр, выдаваемый в порядке вывода, доступен в области (460) хранения декодированных кадров. Когда следующий кадр (481), выдаваемый в порядке вывода, доступен в области (460) хранения декодированных кадров, он считывается выходным устройством (480) задания последовательностей и выводится в адресат (490) вывода (например, дисплей). Как правило, порядок, в котором кадры выводятся из области (460) хранения декодированных кадров устройством (480) задания последовательностей, может отличаться от порядка, в котором кадры декодируются декодером (450).
V. Примеры видеокодеров
Фиг. 5 представляет собой блок-схему обобщенного видеокодера (500), с использованием которого могут быть реализованы некоторые описываемые варианты осуществления. Кодер (500) принимает последовательность видеокадров, содержащих видеокадр (505), и выдает кодированные данные (595) в качестве выходной информации.
Кодер (500) основан на массивах и использует формат массива, который зависит от реализации. Массивы могут дополнительно подразделяться на различных этапах, например, на этапах частотного преобразования и энтропийного кодирования. Например, кадр может разделяться на 64×64 массивы, 32×32 массивы или 16×16 массивы, которые, в свою очередь, могут разделяться на более мелкие массивы выборочных значений для кодирования и декодирования.
Система (500) кодера уплотняет полученные межкадровым предсказанием кадры и прошедшие внутрикадровое кодирование кадры. Для наглядности на Фиг. 5 показан «внутренний путь» через кодер (500) для внутрикадрового кодирования и «внешний путь» для межкадрового кодирования. Многие из компонентов кодера (500) используются как для внутрикадрового кодирования, так и для межкадрового кодирования. Конкретные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа уплотняемой информации.
Если текущий кадр (505) является кадром, полученным с помощью межкадрового предсказания, блок (510) оценки движения оценивает движение массивов (например, макромассивов, суб-макромассивов, разделов суб-макромассивов, блоков дерева кодирования, блоков предсказания, либо их частей, таких как массивы дерева кодирования, массивы предсказания или иные массивы) текущего кадра (505) относительно одного или более эталонных кадров. Устройство (520) хранения кадров буферизует один или более восстановленных предыдущих кадров (525) для использования в качестве эталонных кадров. При использовании множества эталонных кадров указанное множество эталонных кадров может быть получено по различным временным направлениям или одному и тому же временному направлению. Блок (510) оценки движения выдает в качестве побочной информации информацию (515) о движении, такую как информация о дельта-векторе.
Блок (530) компенсации движения применяет восстановленные векторы движения к восстановленному эталонному кадру (кадрам) (525) при формировании полученного с помощью компенсации движения текущего кадра (535). Различие (при его наличии) между полученным с помощью компенсации движения текущим кадром (535) и соответствующей частью исходного текущего кадра (505) является остаточной величиной (545) для блока. Во время последующего восстановления текущего кадра восстановленные остаточные значения предсказания добавляются к полученному с помощью компенсации движения текущему кадру (535) для получения восстановленного кадра, который ближе к исходному текущему кадру (505). Однако при сжатии с потерями часть информации из исходного текущего кадра (505), тем не менее, теряется. Внутренний путь может содержать модуль внутреннего предсказания (не показан), который пространственно предсказывает выборочные значения текущего блока среди соседних ранее восстановленных выборочных значений.
Преобразователь (560) частот преобразует видеоинформацию в пространственной области в данные в частотной области (т.е. данные спектрального преобразования). Для основанных на массивах видеокадров преобразователь (560) частот применяет дискретное косинусное преобразование, его целочисленное приближение или иной тип прямого преобразования массивов (например, дискретное синусное преобразование или его целочисленное приближение) к массивам данных выборочных значений или остаточным данным предсказания, формируя массивы коэффициентов частотного преобразования. Затем квантователь (570) квантует коэффициенты преобразования. Например, квантователь (570) применяет скалярное квантование зоны нечувствительности к данным частотной области с использованием размера шага квантования, который варьируется по кадрам, по фрагментам, по массивам, в зависимости от частоты или иным образом. Например, кодер (500) устанавливает значения для QP яркости и QP цветности для изображения, фрагмента и/или иной части видеоинформации, такой как блок кодирования, и в соответствии с этим квантует коэффициенты преобразования.
В тех случаях, когда для последующей оценки/компенсации движения необходима восстановленная версия текущего кадра, обратный квантователь (576) выполняет обратное квантование квантованных данных частотного коэффициента. Обратный преобразователь (566) частот выполняет обратное частотное преобразование, формируя блоки восстановленных остаточных значений предсказания или выборочных значений. Для кадра, прошедшего межкадровое предсказание, кодер (500) комбинирует восстановленные остаточные значения (545) предсказания с полученными с помощью компенсации движения предсказаниями (535) для формирования восстановленного кадра (505). (Хотя на Фиг. 5 это и не показано, на внутреннем пути кодер (500) может комбинировать остаточные значения предсказания с пространственными предсказаниями по внутреннему предсказанию.) Устройство (520) хранения кадров буферизует один или более восстановленных предыдущих кадров (525) для использования в качестве эталонных кадров.
На Фиг. 5 контур компенсации движения в кодере (500) содержит адаптивный внутриконтурный (in-loop) фильтр (522) деблокинга (обычно) перед устройством (520) хранения кадров. Кодер (500) применяет внутриконтурную фильтрацию к восстановленным кадрам для адаптивного сглаживания неоднородностей по всем границам в кадрах. В качестве альтернативы или дополнения в качестве операций внутриконтурной фильтрации может применяться другая фильтрация (такая как фильтрация с подавлением реверберации, ALF или фильтрация SAO; не показаны).
Энтропийный кодер (580) уплотняет выходную информацию квантователя (570), а также информацию (515) о движении и определенную побочную информацию (например, значения QP). Энтропийный кодер (580) выдает кодированные данные (595) в буфер (590), который мультиплексирует кодированные данные в выходной битовый поток.
Контроллер (не показан) принимает входные значения от различных модулей кодера. Контроллер оценивает промежуточные результаты во время кодирования, например, устанавливая значения QP и выполняя анализ искажения в зависимости от скорости передачи. Контроллер работает с другими модулями для установления и изменения параметров кодирования во время кодирования. Контроллер может устанавливать значения CPBRD для изображений, которые кодируются в соответствии с моделью потока данных в буфере. Таким образом, контроллер может накладывать ограничения на флуктуации скорости передачи данных для битового потока, чтобы помочь обеспечить возможность декодирования битового потока в рамках ресурсов буферизации системы декодирования. Контроллер также устанавливает значения CPBRD, чтобы помочь декодеру определить временной режим и этапы для выполнения своего процесса декодирования.
В зависимости от реализации и типа требуемого сжатия модули кодера могут добавляться, исключаться, разделяться на множество модулей, объединяться с другими модулями и/или заменяться подобными модулями. В альтернативных вариантах осуществления кодеры с различными модулями и/или другими конфигурациями модулей осуществляют один или более из описанных методов. В конкретных вариантах осуществления кодеров обычно используется разновидность или дополненная версия кодера (500). Показанные функциональные зависимости между модулями в кодере (500) указывают на общие потоки информации в кодере; другие функциональные зависимости не показаны для упрощения.
VI. Примеры видеодекодеров
Фиг. 6 представляет собой блок-схему обобщенного декодера (600), с использованием которого могут быть реализованы некоторые описываемые варианты осуществления. Декодер (600) принимает кодированные данные (695) для сжатого кадра или последовательности кадров и выдает выходную информацию, содержащую восстановленный кадр (605). Для наглядности на Фиг. 6 показан «внутренний путь» через декодер (600) для внутрикадрового декодирования и «внешний путь» для межкадрового декодирования. Многие из компонентов декодера (600) используются как для внутрикадрового кодирования, так и для межкадрового кодирования. Конкретные операции, выполняемые этими компонентами, могут варьироваться в зависимости от типа разуплотняемой информации.
Буфер (690) принимает кодированные данные (695) для сжатого кадра и делает принимаемые кодированные данные доступными для средства синтаксического анализа/энтропийного декодера (680) с временным режимом, на который, по меньшей мере, частично указывают значения CPBRD для соответствующих кадров. Средство синтаксического анализа/энтропийный декодер (680) осуществляет энтропийное декодирование прошедших энтропийное кодирование квантованных данных, а также прошедшей энтропийное кодирование побочной информации, обычно применяя обратную операцию по отношению к энтропийному кодированию, выполняемому в кодере.
Компенсатор (630) движения применяет информацию (615) о движении к одному или более эталонных кадров (625) для формирования предсказаний (635) массивов с компенсацией движения (например, макромассивов, суб-макромассивов, разделов суб-макромассивов, блоков дерева кодирования, блоков предсказания, либо их частей, таких как массивы дерева кодирования, массивы предсказания или иные массивы) восстанавливаемого кадра (605). Устройство (620) хранения кадров сохраняет один или более ранее восстановленных кадров для использования в качестве эталонных кадров.
Внутренний путь может содержать модуль внутреннего предсказания (не показан), который пространственно предсказывает выборочные значения текущего массива по соседним ранее восстановленным выборочным значениям. На внутреннем пути декодер (600) восстанавливает остаточные значения предсказания. Обратный квантователь (670) осуществляет обратное квантование прошедших энтропийное декодирование данных. Например, декодер (600) устанавливает значения для QP яркости и QP цветности для изображения, фрагмента и/или иной части видеоинформации, такой как блок кодирования, на основе элементов синтаксиса в битовом потоке, и в соответствии с этим обратный квантователь (670) осуществляет обратное квантование коэффициентов преобразования.
Обратный преобразователь (660) частот преобразует восстановленные данные частотной области в информацию пространственной области. Например, обратный преобразователь (660) частот применяет обратное преобразование массивов к коэффициентам частотной области, выдавая данные о выборочных значениях или остаточные данные предсказания. Обратное частотное преобразование может представлять собой обратное дискретное косинусное преобразование, его целочисленное приближение или иной тип обратного частотного преобразования (например, обратное дискретное синусное преобразование или его целочисленное приближение).
Для кадра, прошедшего межкадровое предсказание, декодер (600) комбинирует восстановленные остаточные значения (645) предсказания с предсказаниями (635) с компенсацией движения для формирования восстановленного кадра (605). (Хотя на Фиг. 6 это и не показано, на внутреннем пути декодер (600) может комбинировать остаточные значения предсказания с пространственными предсказаниями по внутрикадровому предсказанию.) Контур компенсации движения в декодере (600) содержит адаптивный внутриконтурный фильтр (610) деблокинга перед устройством (620) хранения кадров или после него. Декодер (600) применяет внутриконтурную фильтрацию к восстановленным кадрам для адаптивного сглаживания неоднородностей по всем границам в кадрах. В качестве альтернативы или дополнения в качестве операций внутриконтурной фильтрации может применяться другая фильтрация (такая как фильтрация с подавлением реверберации, ALF или фильтрация SAO; не показаны).
На Фиг. 6 декодер (600) также содержит фильтр (608) постобработки. Фильтр (608) постобработки может включать в себя фильтрацию с подавлением реверберации, адаптивную винеровскую фильтрацию, фильтр с воспроизведением зернистости фильма, фильтрацию SAO или иной вид фильтрации.
В зависимости от реализации и типа требуемого сжатия модули декодера могут добавляться, исключаться, разделяться на множество модулей, объединяться с другими модулями и/или заменяться подобными модулями. В альтернативных вариантах осуществления декодеры с различными модулями и/или другими конфигурациями модулей осуществляют один или более из описанных методов. В конкретных вариантах осуществления декодеров обычно используется разновидность или дополненная версия декодера (600). Показанные функциональные зависимости между модулями в декодере (600) указывают на общие потоки информации в декодере; другие функциональные зависимости не показаны для упрощения.
VII. Синтаксис и семантика для значений CPBRD с целью упрощения конкатенации
В данном разделе представлены различные инновации для синтаксиса и семантики значений задержки удаления из буфера кодированного изображения (“CPBRD”). Во многих случаях инновации упрощают конкатенацию видеопоследовательностей. Приводятся различные примеры для значений CPBRD, сигнализируемых в сообщениях с дополнительной расширяющей информацией (“SEI”) в соответствии со стандартом HEVC или стандартом H.264/AVC.
А. Введение
В проектах стандарта HEVC, таких как JCTVC-K1003, и в стандарте H.264/AVC синтаксис и семантика задаются для сообщения с SEI о временном режиме изображений (“SEI о PT”). Сообщение с SEI о PT содержит элемент синтаксиса, означающий задержку удаления из буфера кодированного изображения (“CPBRD”). В JCTVC-K1003 элемент синтаксиса называется au_cpb_removal_delay_minus1, и он интерпретируется добавлением 1 к кодированному целочисленному значению, которое сигнализируется в сообщении с SEI о PT.
Как правило, вместе с начальной задержкой буферизации (или - в качестве альтернативы - начальной наполненностью буфера) значение CPBRD для отдельно взятого изображения (обычно называемого «текущим изображением») задает номинальный момент времени, в который кодированные данные, связанные с изображением, должны удаляться из буфера кодированного изображения (“CPB”). CPB является гипотетическим буфером декодера, и декодер может использовать его в качестве эталона для построения буфера декодера. Кроме того, кодер может генерировать согласованные битовые потоки на основе гипотетического буфера декодера. C точки зрения стандарта HEVC, набор данных, связанный с текущим изображением, является «блоком доступа». Значение CPBRD понимается в контексте модели буфера, которая может именоваться HRD или VBV. Спецификация в соответствии с моделью буфера помогает обеспечивать декодирование битовых потоков в рамках ресурсов буферизации системы декодирования и помогает декодеру определять временной режим и этапы выполнения своего полного процесса декодирования для изображений.
Начало отсчета времени для значений CPBRD сбрасывается для последующих сообщений, когда в кодируемых видеоданных имеется сообщение с SEI о периоде буферизации (“SEI о BP”). В JCTVC-K1003 значение CPBRD всегда кодируется относительно номинального времени удаления предыдущего изображения (при его наличии) в порядке декодирования, который содержится в сообщении с SEI о BP. Кодер может отправлять сообщение с SEI о BP вместе с каждым изображением точки произвольного доступа (“RAP”) в битовом потоке. Кодер может также отправлять сообщение с SEI о BP вместе с другими изображениями, не являющимися изображениями RAP.
Средство конкатенации видеоданных обычно выполняет операции конкатенации в местоположениях изображений RAP в битовых потоках. Изображение RAP может являться изображением мгновенного обновления декодера (“IDR”). Изображение RAP содержит сообщение с SEI о BP, связанное с ним. Например, операция конкатенации может использоваться для введения в телевизионную программу рекламного объявления или серии рекламных объявлений, либо для переключения между различными телевизионными программами.
Построение изображений RAP в HEVC специально направлено на обеспечение использования изображений RAP в качестве точек конкатенации для битовых потоков. Однако в JCTVC-K1003 значение CPBRD всегда кодируется относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, который имеет сообщение с SEI о BP. Из-за этой опорной точки для системы конкатенации может оказаться сложным определять правильное значение CPBRD при сращивании между битовыми потоками (или непрерывном соединении кодируемых по отдельности битовых потоков с формированием более длительного битового потока).
Таким образом, для подходов к синтаксису и семантике CPBRD, как в JCTVC-K1003, с целью выполнения операции конкатенации для перехода от отправки изображений битового потока А к отправке изображений битового потока В средство конкатенации корректирует значение CPBRD изображения в точке конкатенации (т.е. значение CPBRD в сообщении с SEI о BP, связанном с изображением в точке конкатенации). Точка конкатенации, в которой происходит переход, является местоположением, соответствующим изображению RAP в битовом потоке В. (Изображение RAP в битовом потоке В в точке конкатенации также имеет сообщение с SEI о BP, при этом сообщение с SEI о BP будет сбрасывать начало отсчета времени для значений CPBRD последующих изображений из битового потока В в порядке декодирования, поэтому корректировка значений CPBRD для последующих изображений в битовом потоке В нецелесообразна.) Для осуществления операции конкатенации средство конкатенации обычно выполняет нижеследующие этапы, хотя и не обязательно в указанном порядке, при этом могут существовать альтернативные варианты.
RAPB
RAPB
Средство конкатенации находит и считывает значение CPBRD изображения RAP в битовом потоке В относительно номинального времени удаления изображения с предыдущим сообщением с SEI о BP в битовом потоке В. Значением указанной CPBRD является D. Если в битовом потоке не было предыдущего изображения, D может быть установлено равным некоторому значению исходя из локальной частоты кадров (например, исходя из значения DeltaToDivisor, которое может задаваться на основе значения pic_struct_present_flag, field_pic_flag и pic_struct для последнего изображения в битовом потоке А или первого изображения в битовом потоке В).
PREVB
PREVB
Средство конкатенации также находит и считывает значение CPBRD изображения (битового потока В), которое предшествовало изображению RAP в порядке декодирования с битовом потоке В, имеющем задержку относительно изображения с предыдущим сообщением с SEI о BP в битовом потоке В. Значением указанной CPBRD является D. Если в битовом потоке не было предыдущего изображения, D может быть установлено равным 0.
PREVA
PREVA
Средство конкатенации также находит и считывает значение CPBRD последнего изображения (битового потока А), которое предшествует точке конкатенации в порядке декодирования в битовом потоке А, имеющем задержку относительно изображения с предыдущим сообщением с SEI о BP в битовом потоке А. Значением указанной CPBRD является D. Если последнее изображение (битового потока А), которое предшествует точке конкатенации в порядке декодирования в битовом потоке А, является изображения с предыдущим сообщением с SEI о BP, D устанавливается равным 0.
PREVA
RAPB
PREVB
Затем средство конкатенации изменяет значение CPBRD изображения RAP из битового потока В в точке конкатенации, устанавливая значение CPBRD равным D + (D - D), поэтому значение CPBRD изображения RAP из битового потока В в точке конкатенации выражается относительно изображения с предыдущим сообщением с SEI о BP в битовом потоке А. Средство конкатенации вносит указанное измененное изображение RAP и последующие изображения из битового потока В в сращенный битовый поток после изображений, которые были получены из битового потока А.
Некоторые подробности, связанные с ними другие операции и потенциальные сложности были исключены из данного описания. Например, в описании не рассматриваются случаи, когда опорный тактовый сигнал для двух битовых потоков различен, либо когда местоположения изображений RAP и сообщения с SEI о BP не совпадают.
Средство конкатенации выполняет вышеописанные операции нахождения и считывания, поскольку - в соответствии с предыдущими подходами к синтаксису и семантике CPBRD - информация CPBRD связана с изображением в битовом потоке с предыдущим сообщением с SEI о BP. Средство конкатенации корректирует информацию CPBRD в сращенном битовом потоке таким образом, что значение CPBRD в точке конкатенации выражается относительно указанной опорной точки. Операции нахождения и считывания значения CPBRD могут быть обременительными и сложными в выполнении и могут потребовать доступа к данным, которые не являются легкодоступными для системы конкатенации (например, ввиду ограничений шифрования или возможностей буферизации).
Фиг. 7 иллюстрирует эту проблему для упрощенной ситуации, предполагающей соединение двух кодируемых по отдельности битовых потоков А и В. В верхней части Фиг. 7 изображены три блока доступа (“AU”) битового потока А и два AU битового потока В перед конкатенацией. Для битового потока А значения CPBRD сигнализируются для указания задержек удаления для 2-го и 3-го AU (т.е. AU 1 и AU 2) относительно исходной задержки удаления CPB для 1-го AU (т.е. AU 0) битового потока А. Для битового потока В значение CPBRD сигнализируется для указания задержки удаления для 2-го AU (т.е. AU 1) относительно исходной задержки удаления CPB для 1-го AU (т.е. AU 0) битового потока В. Величина au_removal_delay(k) связана с задержкой удаления CPB для AU номер k. Когда AU битового потока В сращиваются после AU битового потока А, CPBRD определяется для 1-го AU (AU 0) битового потока В. В нижней части Фиг. 7 изображены два битовых потока А и В после конкатенации в единый битовый поток. Некоторые из значений CPBRD этих AU в сращенном битовом потоке остаются неизменными (т.е. значения CPBRD для 2-го и 3-го AU (AU 1 и AU 2) битового потока А относительно исходной задержки удаления CPB для 1-го AU (AU 0) битового потока А и значения CPBRD для 2-го AU (AU 1) битового потока В относительно исходной задержки удаления CPB для 1-го AU (AU 0) битового потока В). Однако значение CPBRD для 1-го AU (AU 0 перед конкатенацией, имеющего номер AU 3 после конкатенации) битового потока В корректируется для выражения задержки удаления относительно исходной задержки удаления CPB для 1-го AU (AU 0) битового потока А для сращенного битового потока. В более сложных примерах (например, когда битовые потоки содержат больше AU и/или когда некоторые AU отсутствуют) определение значения CPBRD для 1-го AU второй последовательности в сращенном битовом потоке может оказаться затруднительным.
В. Общий подход к изменению синтаксиса и семантики CPBRD
В данном разделе описываются различные модификации предыдущих подходов к синтаксису и семантике CPBRD. В соответствии с этими модификациями, когда отдельно взятое изображение (обычно называемое «текущим изображением») содержит связанное с ним сообщение с SEI о BP, кодер может отправлять элементы синтаксиса, указывающие на следующее:
(a) значение CPBRD относительно номинального времени удаления CPB изображения, которое предшествует текущему изображению в порядке декодирования (называемом также порядком битового потока или декодированным порядком), содержащему сообщение с SEI о BP, как в предыдущих подходах («пункт а»);
(b) значение CPBRD относительно номинального времени удаления CPB последнего изображения, которое предшествует текущему изображению в порядке декодирования, независимо от того, содержит ли это последнее изображение сообщение с SEI о BP или нет («пункт b») (в некоторых разновидностях рассматривается последнее изображение, которое предшествует текущему изображению, на том же или более низком подуровне; например, если текущее изображение имеет TemporalId, равное 0, предыдущее изображение также имеет TemporalId, равное 0); и
(c) указания на то, (i) присутствует ли значение, задаваемое в пункте а (либо, если оно всегда присутствует, является ли его величина допустимой), и (ii) присутствует ли значение, задаваемое в пункте b (либо, если оно всегда присутствует, является ли его величина допустимой) («пункт с»).
Два указания для пункта с могут быть объединены в единый элемент синтаксиса, указывающий на одну из трех допустимых комбинаций (то есть, пункт а является допустимым / пункт b не является допустимым, пункт а не является допустимым / пункт b является допустимым, либо оба пункта а и b являются допустимыми). (В качестве альтернативы в реализациях, в которых значение 0 не может являться допустимым значением - для пункта с, одним из способов указания на отсутствие допустимости может являться использование значения 0 для значения CPBRD. Указание на то, что ни одно из значений CPBRD не является допустимым, должно быть запрещено.)
Используя такой синтаксис, средство конкатенации может упрощать свои операции конкатенации во многих случаях. Если контент битового потока В соответствует условию в пункте b, считывание других значений не требуется - данные из двух битовых потоков могут попросту соединяться друг с другом. Если контент битового потока В также содержит элементы синтаксиса, которые соответствуют условию в пункте а, данные CPBRD пункта а будут удалены или помечены как недопустимые в соединенном битовом потоке.
Если текущее изображение не имеет сообщения с SEI о BP, синтаксис стандарта HEVC, как в JCVC-K1003, либо эквивалентный синтаксис (как в стандарте H.264/AVC) может использоваться без изменений.
В качестве разновидности пункта b синтаксис может задавать величину приращения CPBRD относительно номинального времени удаления СРВ последнего изображения, которое предшествует текущему изображению в порядке декодирования, в пределах того же временного подуровня или более низкого временного подуровня (а не на любом временном подуровне, как указано выше). В этом случае значение CPBRD выражается относительно предыдущего изображения на том же (или более низком) временном подуровне, а не просто предыдущего изображения любого подуровня, что делает эту схему устойчивой к удалению изображений более высоких временных подуровней при их наличии. Такая разновидность может также применяться для однозначного подхода и двухзначных подходов, описываемых в разделах C, D и Е соответственно. Например, если текущее изображение имеет TemporalId, равное 0, значение CPBRD выражается относительно предыдущего изображения с TemporalId, равным 0. Это может представлять собой ситуацию, в которой значения CPBRD, соответствующие условию пункта В, сигнализируются лишь для изображений, которые имеют TemporalId, равное 0 (например, ввиду условия, что сообщения с SEI с такими значениями CPBRD могут использоваться только для изображений, имеющих TemporalId, равное 0).
С. Однозначный подход с использованием флага
В однозначных разновидностях вышеописанных модификаций для некоторых изображений кодер отправляет одно из двух значений CPBRD для пункта а и пункта b вместе с указанием на то, соответствует ли сигнализируемое значение CPBRD условию пункта а или пункта b.
Фиг. 8 и 9 иллюстрируют реализацию однозначного подхода, в котором синтаксис и семантика сообщений с SEI о BP (как в JCVC-K1003) изменены и в котором семантика некоторых сообщений с SEI о РТ (как в JCVC-K1003) изменена, хотя их синтаксис не изменился. Синтаксис сообщения с SEI о BP изменяется с введением флага, именуемого concatenation_flag (флаг_соединения), как показано в примере синтаксиса (800) на Фиг. 8. concatenation_flag является двоичной величиной. В тех случаях, когда отдельно взятое изображение (текущее изображение) имеет сообщение с SEI о BP, семантика значения CPBRD в сообщении с SEI о РТ для текущего изображения зависит от значения concatenation_flag в сообщении с SEI о BP для данного изображения. На Фиг. 9 изображен синтаксис (900) для сообщения с SEI о РТ, содержащего элемент синтаксиса au_cpb_removal_delay_minus1. В тех случаях, когда значение concatenation_flag равно 0, значение CPBRD, указанное элементом синтаксиса au_cpb_removal_delay_minus1, интерпретируется в соответствии с условием пункта а. С другой стороны, в тех случаях, когда значение concatenation_flag равно 1, значение CPBRD, указанное au_cpb_removal_delay_minus1, интерпретируется в соответствии с условием пункта b.
Другие элементы синтаксиса, изображенные на Фиг. 8 и 9, имеют значения, задаваемые в JCTVC-K1003.
r,n
r,n
Для сращенного битового потока в тех случаях, когда значение concatenation_flag равно 1, номинальное время t(n) для изображения n, имеющего сообщение с SEI о BP, может быть вычислено по номинальному времени t(n-1) предыдущего изображения (блока доступа) n-1 вместе с задержкой:
r,n
r,n
c
af
r,n
c
t(n) = t(n-1) + t * (Max(au_cpb_removal_delay(n), Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + t(n-1) - t(n-1)) + t))).
af
r,n
c
r,n
В данной формуле ограничение Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + t(n-1) - t(n-1)) + t) обеспечивает, чтобы задержка была, по меньшей мере, такой же длительной, как в случае, если бы декодирование начиналось в точке конкатенации (изображение n) без недостаточного заполнения буфера. Задержка, добавляемая к t(n-1), устанавливается в зависимости от наиболее длительной из значения CPBRD, сигнализируемого для изображения n, и задержки запуска, указываемой в ограничении.
af
r,n
c
g,90
g,90
r,n
af
r,n
af
На Фиг. 10 показано, почему учитывается ограничение Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + t(n-1) - t(n-1)) + t). Для каждого блока n доступа при n>0, связанного с сообщением с SEI о периоде буферизации, величина Δt(n) определяется как Δt(n) = 90000 * (t(n) - t(n-1)), где t(n) - номинальное время удаления блока n доступа (на Фиг. 10 - первого блока доступа текущего периода буфера), а t(n-1) - конечное время поступления блока n-1 доступа (на Фиг. 10 - последнего блока доступа предыдущего периода буфера). На Фиг. 10, если поток 1 и поток 2 соединяются друг с другом, при использовании значения CPBRD может произойти недостаточное заполнение. При использовании данного ограничения недостаточное заполнение предотвращается, поскольку состояние буфера потока 2 после соединения остается таким же, как и исходное состояние буфера.
D. Двухзначный подход с использованием флага и дельта-значения
В некоторых двухзначных модификациях вышеописанных модификаций для некоторых изображений кодер может отправлять одно или оба из двух значений CPBRD для пункта а и пункта b в сообщениях с SEI для изображения RAP.
Фиг. 11 иллюстрирует реализацию двухзначного подхода, в котором синтаксис и семантика сообщений с SEI о BP (как в JCVC-K1003) изменены. Синтаксис сообщения с SEI о РТ не изменился. Как показано в примере синтаксиса (1100) на Фиг. 11, синтаксис сообщения с SEI о BP изменяется с введением concatenation_flag и элемента синтаксиса, называемого au_cpb_removal_delay_delta_minus1, который может означать «дельта»-значение CPBRD (в данном случае дельта-значение минус единица).
Элемент синтаксиса concatenation_flag указывает, применяется ли заданное ограничение к соотношению между величиной au_cpb_removal_delay_delta_minus1 и величиной au_cpb_removal_delay_delta_minus1 для предыдущего изображения в порядке декодирования при его наличии (либо - в некоторых модификациях - предыдущего изображения на том же или более низком временном подуровне при его наличии, например, путем проверки предыдущего изображения с TemporalId, меньшим или равным величине TemporalId текущего изображения). Например, при рассмотрении временного разбиения на подуровни, если текущее изображение имеет TemporalId, равное 0, проверяется предыдущее изображение с TemporalId, равным 0.
Элемент синтаксиса au_cpb_removal_delay_delta_minus1 - плюс 1 - задает величину приращения задержки удаления СРВ относительно номинального времени удаления СРВ последнего изображения, которое предшествует текущему изображению в порядке битового потока (порядке декодирования) при его наличии (либо - в некоторых модификациях - последнего такого изображения в том же или более низком временном подуровне при его наличии, например, путем проверки предыдущего изображения с TemporalId, меньшим или равным величине TemporalId текущего изображения). Например, при рассмотрении временного разбиения на подуровни, если текущее изображение имеет TemporalId, равное 0, проверяется предыдущее изображение с TemporalId, равным 0.
В тех случаях, когда concatenation_flag равен 0, значение CPBRD (определяемое элементом синтаксиса au_cpb_removal_delay_minus1 сообщения с SEI о РТ для текущего изображения) интерпретируется в соответствии с пунктом а. Если предыдущее изображение не имеет сообщения с SEI о ВР, указанное значение CPBRD пункта а равно значению CPBRD в соответствии с пунктом b плюс значению CPBRD пункта а для изображения, которое предшествует текущему изображению в порядке декодирования (в некоторых модификациях - предыдущему изображению соответствующего временного подуровня). Значение CPBRD пункта b является разностью между значением CPBRD пункта а для текущего изображения и значением CPBRD пункта а для предыдущего изображения. Это значение пункта b выражается элементом синтаксис au_cpb_removal_delay_minus1, и его величина может быть проверена по отношению к разности между двумя значениями CPBRD пункта а, которые отправляются в сообщениях с SEI о РТ текущего и предыдущего изображений, чтобы подтвердить, что значения CPBRD пункта а и пункта b допустимы. Отдельное значение CPBRD пункта а сигнализируется в сообщении с SEI о РТ для текущего изображения. Иными словами, если текущее изображение имеет сообщение с SEI о ВР, а concatenation_flag равен 0, при этом текущее изображение не является первым изображением в битовом потоке, для согласованности битового потока необходимо нижеследующее.
(1) Если предыдущее изображение (или - в некоторых модификациях - предыдущее изображение с TemporalId, меньшим или равным величине TemporalId текущего изображения) не имеет сообщения с SEI о ВР, au_cpb_removal_delay_minus1 текущего изображения равно au_cpb_removal_delay_minus1 предыдущего изображения (в некоторых модификациях - предыдущего изображения с TemporalId, меньшим или равным величине TemporalId текущего изображения) плюс au_cpb_removal_delay_delta_minus1 плюс 1.
(2) В противном случае (предыдущее изображение имеет сообщение с SEI о ВР), au_cpb_removal_delay_minus1 равно au_cpb_removal_delay_delta_minus1. Эти требования означают, что concatenation_flag равен 0, указания для пункта а и пункта b и допустимы, и присутствуют при предположении, что предыдущие условия удовлетворяются, и предыдущее изображение не имеет сообщения с SEI о ВР. В этом случае сообщение с SEI о ВР для текущего изображения содержит значение CPBRD пункта b (представленное с  элементом синтаксиса au_cpb_removal_delay_delta_minus1), а сообщение с SEI о РТ для текущего изображения содержит значение CPBRD пункта а (представленное с  элементом синтаксиса au_cpb_removal_delay_minus1). С другой стороны, когда предыдущее изображение имеет сообщение с SEI о ВР (а флаг все еще равен 0), оба элемента синтаксиса au_cpb_removal_delay_delta_minus1 и au_cpb_removal_delay_minus1 указывают на значение CPBRD пункта а.
Если concatenation_flag равен 1, вышеописанное требование к согласованности битового потока не обязательно должно выполняться для элементов синтаксиса au_cpb_removal_delay_delta_minus1 и au_cpb_removal_delay_minus1. Если равен 1, вычисление CPBRD изменяется и становится пригодным для конкатенации битового потока, а не связано непосредственно с предыдущим изображением, которое имеет сообщение с SEI о ВР. Если текущее изображение имеет сообщение с SEI о ВР, а concatenation_flag равен 1, элемент синтаксиса au_cpb_removal_delay_minus1 для текущего изображения (в сообщении с SEI о РТ для текущего изображения) игнорируется. Таким образом, если concatenation_flag равен 1, допустимым является лишь указание на пункт b, на что указывает элемент синтаксиса au_cpb_removal_delay_delta_minus1 (в сообщении с SEI о ВР для текущего изображения).
Вышеописанная интерпретация значений CPBRD позволит стыковать битовые потоки (в которых используются надлежащим образом разработанные структуры ссылок) попросту изменением значения concatenation_flag с 0 на 1 в сообщении с SEI о ВР для изображения RAP в точке конкатенации.
В этой схеме ввиду того, что указание для пункта b всегда допустимо (хотя в некоторых случаях требуется, чтобы оно равнялось значению CPBRD пункта а текущего изображения, а в других случаях требуется, чтобы оно равнялось разности между значениями CPBRD пункта а текущего и предыдущего изображений), спецификация информации о временном режиме HRD всегда может основываться на пункте b. Кроме того, если concatenation_flag равен 0, декодер может проверять, выполняется ли условие равенства или нет. Если оно не выполняется, это означает, что возникла какая-то проблема (например, предыдущее изображение было потеряно, либо предыдущее изображение на том же или более низком временном подуровне было потеряно). После обнаружения того, что данное изображение было потеряно, декодер может восстанавливать точную информацию о временном режиме CPBRD путем интерпретации данных CPBRD пункта а и исключения данных пункта b (поскольку вычисление надлежащего временного режима CPBRD по этим данным требует использования данных потерянного изображения). Декодер может также инициировать меры по маскирование потери  в случае обнаружения такой потери.
b
r,n
В таком двухзначном подходе, использующем флаг (например, concatenation_flag) и дельта-значение, номинальное время удаления для изображения n, которое имеет сообщение с SEI о ВР, может быть вычислено по номинальному времени удаления предыдущего изображения (блока доступа) n вместе с задержкой. Например, если блок n доступа является первым блоком доступа периода буферизации, который не инициализирует HRD, номинальное время t(n) удаления блока n доступа из СРВ задается следующим образом.
r,n
Если текущее изображение связано с сообщением с SEI о ВР с concatenation_flag, равным 1, номинальное время t(n) удаления определяется как:
r,n
r,n
b
c
af
b
r,n
b
c
t(n) = t(n) + t * (Max(au_cpb_removal_delay_delta_minus1(n) + 1), Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + t(n) - t(n)) + t))),
r,n
b
af
b
r,n
b
c
r,n
b
где t(n) - номинальное время удаления предыдущего изображения (в некоторых модификациях - предыдущего изображения с TemporalId, меньшим или равным величине TemporalId текущего изображения), а au_cpb_removal_delay_delta_minus1(n) - величина au_cpb_removal_delay_delta_minus1 в сообщении с SEI о ВР, связанном с блоком n доступа. Ограничение Ceil((InitCpbRemovalDelay[SchedSelIdx] + 90000 + t(n) - t(n)) + t) обеспечивает, чтобы задержка была, по меньшей мере, такой же длинной, как в случае, если бы декодирование начиналось в точке конкатенации (изображение n) без недостаточного заполнения буфера. Задержка, добавляемая к t(n), устанавливается в зависимости от наиболее длительной из значения CPBRD, сигнализируемого для изображения n, и задержки запуска, указываемой в ограничении.
В противном случае (текущее изображение не связано с сообщением с SEI о ВР с concatenation_flag, равным 1) номинальное время удаления определяется как:
r,n
r,n
b
c
t(n) = t(n) + t * (au_cpb_removal_delay_minus1(n) + 1),
r,n
b
где t(n) - номинальное время удаления первого блока доступа предыдущего периода буферизации, а au_cpb_removal_delay_minus1(n) - величина au_cpb_removal_delay_minus1 в сообщении с SEI о РТ, связанном с блоком n доступа.
Для двухзначного подхода с флагом соединения и дельта-значением влияние на сложность декодера и дополнительное количество данных синтаксиса является минимальным. Дополнительные элементы синтаксиса (au_cpb_removal_delay_delta_minus1 и соответствующий concatenation_flag) необходимы лишь для изображений, которые имеют сообщения с SEI о ВР, которые встречаются относительно редко. Операции конкатенации потенциально являются значительно упрощенными. При использовании такого подхода может оказаться возможным конкатенация между битовыми потоками или непрерывное соединение кодируемых по отдельности битовых потоков (в которых используются надлежащим образом разработанные структуры ссылок) попросту установкой значения concatenation_flag на 1 в сообщении с SEI о ВР для изображения RAP в точке конкатенации. В то же время, если concatenation_flag равен 0, заданное ограничение позволит декодеру проверить, удовлетворяется ли ограничение, в качестве способа обнаружения потери предыдущего изображения (или предыдущего изображения на том же или более низком подуровне).
Е. Условное использование альтернативных синтаксиса и семантики CPBRD
В некоторых разновидностях использование или неиспользование альтернативных синтаксиса и семантики CPBRD сигнализируется в битовом потоке. Таким образом, если количество дополнительных данных вызывает озабоченность, наличие дополнительных элементов синтаксиса может быть обусловлено флагом на более высоком уровне синтаксиса, при этом традиционная интерпретация (значения CPBRD относительно предыдущего изображения, имеющего сообщение с SEI о ВР) применяется в тех случаях, когда дополнительные элементы синтаксиса отсутствуют.
Например, кодер может устанавливать значение включения/выключения в наборе параметров последовательности (“SPS”) или в других местах в битовом потоке, чтобы указать, используются ли синтаксис и семантика CPBRD с поддержкой операций упрощенного конкатенации видеоданных. Если значение включения/выключения указывает, что поддержка упрощенного конкатенации видеоданных выключена, кодер использует традиционные синтаксис и семантику CPBRD, как и в предыдущем подходе. Если значение включения/выключения указывает, что поддержка упрощенного конкатенации видеоданных включена, кодер использует синтаксис и семантику CPBRD с поддержкой операций упрощенного конкатенации видеоданных (например, в соответствии с одним из новых подходов, описываемых в настоящем документе).
Соответствующий декодер принимает значения включения/выключения в активном SPS или в других местах в битовом потоке и проводит их синтаксический анализ, чтобы указать, используются ли синтаксис и семантика CPBRD с поддержкой операций упрощенного конкатенации видеоданных. Если значение включения/выключения указывает, что поддержка упрощенного конкатенации видеоданных выключена, декодер использует традиционные синтаксис и семантику CPBRD, как и в предыдущем подходе. Если значение включения/выключения указывает, что поддержка упрощенного конкатенации видеоданных включена, декодер использует синтаксис и семантику CPBRD с поддержкой операций упрощенного конкатенации видеоданных (например, в соответствии с одним из новых подходов, описываемых в настоящем документе).
Средство конкатенации видеоданных может учитывать флаг включения/выключения при принятии решения о том, как выполнять операции конкатенации. Если значение включения/выключения не установлено (выключено), средство конкатенации использует традиционную конкатенацию с корректировкой значений CPBRD, как и в предыдущем подходе. Если значение включения/выключения установлено (включено), средство конкатенации использует операции упрощенного соединения, как описывается в настоящем документе.
F. Альтернативы для блоков декодирования
Во многих из предыдущих примеров значения CPBRD устанавливаются или определяются для изображений. Такое изображение можно также называть блоком доступа, соответствующим первичному изображению.
В качестве альтернативы, значения CPBRD устанавливаются или определяются для блоков декодирования, когда блок декодирования является поднабором блока доступа для первичного изображения. Например, блок декодирования может являться фрагментом изображения. HRD может работать по блокам доступа или по блокам декодирования (например, для фрагментов или иных частей изображений). Как правило, для блока декодирования значение CPBRD относится к последнему блоку декодирования предыдущего изображения.
Описываемые в настоящем документе методы и средства могут применяться к блокам доступа или блокам декодирования. Термин «блок» может означать блок доступа или блок декодирования. Значение CPBRD для блока выражается относительно предыдущего изображения. Для блока доступа предыдущий блок доступа может являться последним блоком доступа, последним блоком доступа в том же временном подуровне или более низком временном подуровне, либо последним блоком доступа с сообщением с SEI о ВР в зависимости от интерпретации. Для блока декодирования рассматривается последний блок декодирования такого предыдущего блока доступа.
G. Методы изменения синтаксиса и семантики CPBRD
На Фиг. 12 изображен обобщенный метод (1200) установки значений CPBRD во время кодирования. Данный метод (1200) реализуется видеокодером, таким как описанный выше со ссылкой на Фиг. 3, или иным видеокодером.
Кодер устанавливает (1210) значение CPBRD для отдельно взятого блока видеопоследовательности. Например, рассматриваемый блок является блоком доступа для изображения, которое имеет сообщение с SEI о ВР и может являться изображением с произвольным доступом. Или рассматриваемый блок является блоком декодирования для части такого изображения. Значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР. В некоторых реализациях предыдущее изображение непосредственно предшествует рассматриваемому блоку (или изображению, содержащему рассматриваемый блок) в порядке декодирования. В качестве альтернативы, в числе изображений видеопоследовательности на том же временном подуровне в качестве рассматриваемого блока или на более низком подуровне предыдущее изображение непосредственно предшествует рассматриваемому блоку (или изображению, содержащему рассматриваемый блок) в порядке декодирования. Например, при рассмотрении временного разбиения на подуровни, если текущее изображение имеет TemporalId, равное 0, предыдущее изображение является предыдущим изображением с TemporalId, равным 0.
Кодер сигнализирует (1220) значение CPBRD для рассматриваемого блока. Например, значение CPBRD записывается в сообщение с SEI о ВР или сообщение с SEI о РТ, связанное с блоком доступа для кодированного изображения.
В некоторых разновидностях (например, двухзначных подходах) кодер потенциально устанавливает множество значений CPBRD для рассматриваемого блока в соответствии с различными допущениями. Например, помимо значения CPBRD, устанавливаемого (1210) в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР, кодер устанавливает еще одно значение CPBRD для рассматриваемого блока. Еще одно значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. Затем кодер сигнализирует еще одно значение CPBRD для рассматриваемого блока (например, в сообщении с SEI о РТ для рассматриваемого блока). Кодер может также сигнализировать (например, записывать в сообщение (сообщения) с SEI) одно или более указаний относительно того, является ли каждое из значений CPBRD, соответственно, присутствующим или отсутствующим. Либо кодер может сигнализировать (например, записывать в сообщение (сообщения) с SEI) одно или более указаний относительно того, является ли каждое из значений CPBRD, соответственно, допустимым или недопустимым.
В других разновидностях (например, однозначных подходах) кодер сигнализирует (например, записывает в сообщение (сообщения) с SEI) одно или более указаний относительно типа значения CPBRD для рассматриваемого блока. Например, указание относительно типа значения CPBRD сигнализируется в сообщении с SEI о ВР рассматриваемого блока или изображения, содержащего рассматриваемый блок. Указание относительно типа значения CPBRD указывает, как интерпретировать значение CPBRD для рассматриваемого блока, которое может сигнализироваться в сообщении с SEI о РТ. Например, кодер сигнализирует указание относительно типа значения CPBRD для рассматриваемого блока видеопоследовательности, а затем устанавливает значение CPBRD для рассматриваемого блока. Для первого типа значения CPBRD значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. Для второго типа значения CPBRD значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР. Затем кодер сигнализирует значение CPBRD для рассматриваемого блока.
В других разновидностях (например, двухзначных подходах с использованием флага и дельта-значения) кодер сигнализирует (например, записывает в сообщение (сообщения) с SEI) указание относительно типа значения CPBRD для рассматриваемого блока и сигнализирует значение CPBRD для рассматриваемого блока для представления дельта-значения. Например, указание относительно типа значения CPBRD и значение (дельта-значение) CPBRD сигнализируются в сообщении с SEI о ВР рассматриваемого блока или изображения, которое содержит рассматриваемый блок. В зависимости от типа значения CPBRD, значение CPBRD для текущего изображения может сигнализироваться в сообщении с SEI о РТ. Например, кодер сигнализирует указание относительно типа значения CPBRD для рассматриваемого блока видеопоследовательности и устанавливает дельта-значение в качестве значения CPBRD для рассматриваемого блока. Дельта-значение для рассматриваемого блока указывает на разность между значением CPBRD для рассматриваемого блока и значением CPBRD предыдущего изображения в порядке декодирования. Кодер сигнализирует дельта-значение в качестве значения CPBRD для рассматриваемого блока (например, в сообщении с SEI о ВР). Кодер также устанавливает еще одно значение CPBRD для рассматриваемого блока. Для первого типа значения CPBRD еще одно значение CPBRD указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. Для второго типа значения CPBRD еще одно значение CPBRD для рассматриваемого блока является недопустимым. Кодер сигнализирует еще одно значение CPBRD для рассматриваемого блока (например, в сообщении с SEI о РТ).
Кодер может повторять данный метод (1200) блок за блоком (например, изображение за изображением). Для упрощения на Фиг. 12 не показано, как метод (1200) действует в сочетании с другими процессами кодирования.
На Фиг. 13 приведен пример метода (1300) установки значений CPBRD во время кодирования в соответствии с однозначным подходом, когда значения CPBRD устанавливаются для изображений. Данный метод (1300) реализуется видеокодером, таким как описанный выше со ссылкой на Фиг. 3, или иным видеокодером.
Сначала кодер получает (1310) текущее изображение в видеопоследовательности. Кодер проверяет (1320), имеет ли текущее изображение сообщение с SEI о ВР. Если нет, кодер устанавливает (1360) CPBRD для текущего изображения в сообщении с SEI о ВР в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
С другой стороны, если текущее изображение имеет сообщение с SEI о ВР, кодер устанавливает (1330) значение флага соединения в сообщении с SEI о ВР для текущего изображения. В зависимости от значения флага (1340), кодер может устанавливать значение CPBRD для текущего изображения различными способами. Если флаг равен 1, кодер устанавливает (1350) значение CPBRD для текущего изображения в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР. В противном случае (флаг равен 0) кодер устанавливает (1360) CPBRD для текущего изображения в сообщении с SEI о РТ в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
Кодер проверяет (1370), выполнено ли это, и если нет, продолжает со следующим изображением в качестве текущего изображения. Для упрощения на Фиг. 13 не показано, как метод (1300) действует в сочетании с другими процессами кодирования.
На Фиг. 14 изображен обобщенный метод (1400) обработки значений CPBRD во время декодирования. Данный метод (1400) реализуется видеокодером, таким как описанный выше со ссылкой на Фиг. 4, или иным видеокодером.
Декодер принимает (1410) значение CPBRD для отдельно взятого блока видеопоследовательности. Например, рассматриваемый блок является блоком доступа для изображения, которое имеет сообщение с SEI о ВР и может являться изображением произвольного доступа. Или рассматриваемый блок является блоком декодирования для части такого изображения. Значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР. В некоторых реализациях предыдущее изображение непосредственно предшествует рассматриваемому блоку (или изображению, содержащему рассматриваемый блок) в порядке декодирования. В качестве альтернативы, в числе изображений видеопоследовательности на том же временном подуровне в качестве рассматриваемого блока или на более низком подуровне предыдущее изображение непосредственно предшествует рассматриваемому блоку (или изображению, содержащему рассматриваемый блок) в порядке декодирования. Например, при рассмотрении временного разбиения на подуровни, если текущее изображение имеет TemporalId, равное 0, предыдущее изображение является предыдущим изображением с TemporalId, равным 0.
Декодер проводит синтаксический анализ (1420) значения CPBRD для рассматриваемого блока. Например, синтаксический анализ значения CPBRD проводится по сообщению с SEI о ВР или сообщению с SEI о РТ, связанному с блоком доступа для кодированного изображения.
В некоторых разновидностях (например, двухзначных подходах) декодер потенциально осуществляет прием и синтаксический анализ множества значений CPBRD для рассматриваемого блока, которые должны интерпретироваться в соответствии с различными допущениями. Например, помимо значения CPBRD, устанавливаемого в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР, декодер осуществляет прием и синтаксический анализ еще одного значения CPBRD для рассматриваемого блока (например, по сообщению с SEI о РТ для рассматриваемого блока). Еще одно значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. Декодер может также осуществлять прием и синтаксический анализ одного или более указаний относительно того, является ли каждое из значений CPBRD, соответственно, присутствующим или отсутствующим. Либо декодер может осуществлять прием и синтаксический анализ одного или более указаний относительно того, является ли каждое из значений CPBRD, соответственно, допустимым или недопустимым.
В других разновидностях (например, однозначных подходах) декодер осуществляет прием и синтаксический анализ указания относительно типа значения CPBRD для рассматриваемого блока. Например, проводится синтаксический анализ указания относительно типа значения CPBRD по сообщению с SEI о ВР рассматриваемого блока или изображения, содержащего рассматриваемый блок. Указание относительно типа значения CPBRD указывает, как интерпретировать значение CPBRD для рассматриваемого блока, которое может подвергаться синтаксическому анализу в сообщении с SEI о РТ. Например, декодер осуществляет прием и синтаксический анализ указания относительно типа значения CPBRD для рассматриваемого блока видеопоследовательности, а затем осуществляет прием и синтаксический анализ значения CPBRD для рассматриваемого блока. Для первого типа значения CPBRD значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. Для второго типа значения CPBRD значение CPBRD для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР.
В других разновидностях (например, двухзначных подходах с использованием флага и дельта-значения) декодер осуществляет прием и синтаксический анализ указания относительно типа значения CPBRD для рассматриваемого блока и осуществляет прием и синтаксический анализ значения CPBRD для рассматриваемого блока, которое представляет дельта-значение. Например, проводится синтаксический анализ указания относительно типа значения CPBRD и значения (дельта-значения) CPBRD в сообщении с SEI о ВР рассматриваемого блока или изображения, которое содержит рассматриваемый блок. В зависимости от типа значения CPBRD, может проводиться синтаксический анализ значения CPBRD для текущего изображения по сообщению с SEI о РТ. Например, декодер осуществляет прием и синтаксический анализ указания относительно типа значения CPBRD для рассматриваемого блока видеопоследовательности и осуществляет прием и синтаксический анализ дельта-значение в качестве значения CPBRD для рассматриваемого блока (например, по сообщению с SEI о ВР). Дельта-значение для рассматриваемого блока указывает на разность между значением CPBRD для рассматриваемого блока и значением CPBRD предыдущего изображения в порядке декодирования. Декодер также осуществляет прием и синтаксический анализ еще одного значения CPBRD для рассматриваемого блока (например, по сообщению с SEI о РТ). Еще одно значение CPBRD для рассматриваемого блока, если оно допустимо, указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
После синтаксического анализа значения CPBRD для рассматриваемого блока декодер может использовать значение CPBRD. Например, на основе, по меньшей мере, частично значения CPBRD для рассматриваемого блока декодер может вычислять номинальное время удаления из СРВ для рассматриваемого блока.
Декодер может повторять данный метод (1400) блок за блоком (например, изображение за изображением). Для упрощения на Фиг. 14 не показано, как метод (1400) действует в сочетании с другими процессами кодирования.
На Фиг. 15 приведен пример метода (1500) определения значений CPBRD во время декодирования в соответствии с однозначным подходом, когда значения CPBRD устанавливаются для изображений. Данный метод (1500) реализуется видеодекодером, таким как описанный выше со ссылкой на Фиг. 4, или иным видеодекодером.
Сначала декодер получает (1510) текущее изображение в видеопоследовательности. Декодер проверяет (1520), имеет ли текущее изображение сообщение с SEI о ВР. Если нет, декодер интерпретирует (1360) CPBRD для текущего изображения в сообщении с SEI о РТ как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
С другой стороны, если текущее изображение имеет сообщение с SEI о ВР, декодер получает (1530) значение флага соединения в сообщении с SEI о ВР для текущего изображения. В зависимости от значения флага (1540), декодер может интерпретировать значение CPBRD для текущего изображения различными способами. Если флаг равен 1, декодер интерпретирует (1550) значение CPBRD для текущего изображения в сообщении с SEI о РТ как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР. В противном случае (флаг равен 0) декодер интерпретирует (1560) CPBRD для текущего изображения в сообщении с SEI о РТ как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
Декодер проверяет (1570), выполнено ли это, и если нет, продолжает со следующим изображением в качестве текущего изображения. Для упрощения на Фиг. 15 не показано, как метод (1500) действует в сочетании с другими процессами декодирования.
На Фиг. 16 изображен обобщенный метод (1600) конкатенации битовых потоков. Данный метод (1600) реализуется средством конкатенации видеоданных.
Средство конкатенации принимает (1610) первый битовый поток для первой видеопоследовательности и, кроме того, принимает (1620) второй битовый поток для второй видеопоследовательности. Значение CPBRD для рассматриваемого блока второй видеопоследовательности указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, независимо от того, имеет ли предыдущее изображение сообщение с SEI о ВР.
Средство конкатенации сращивает (1630), по меньшей мере, часть второй видеопоследовательности с первой видеопоследовательностью. В ходе конкатенации средство конкатенации соединяет вторую видеопоследовательность, начиная от рассматриваемого блока или изображения, которое содержит рассматриваемый блок, и до первой видеопоследовательности. Например, средство конкатенации соединяет сообщение с SEI о ВР рассматриваемого блока или изображения, которое содержит рассматриваемый блок (причем сообщение с SEI о ВР содержит указание на тип значения CPBRD для рассматриваемого блока и - в некоторых модификациях - первое значение CPBRD для рассматриваемого блока) и сообщение с SEI о РТ (причем сообщение с SEI о РТ содержит указание на тип значения CPBRD для рассматриваемого блока и - в некоторых модификациях - второе значение CPBRD для рассматриваемого блока).
В некоторых реализациях второе значение CPBRD (например, в сообщение с SEI о РТ) для рассматриваемого блока указывает на значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР. В этом случае в ходе конкатенации средство конкатенации может отбрасывать другое, второе значение CPBRD для рассматриваемого блока или помечать другое, второе значение CPBRD для рассматриваемого блока как недопустимое.
На Фиг. 17 приведен пример метода (1700) установки значений CPBRD во время кодирования в соответствии с двухзначным подходом с использованием флага и дельта-значения, когда значения CPBRD устанавливаются для изображений. Данный метод (1700) реализуется видеокодером, таким как описанный выше со ссылкой на Фиг. 3, или иным видеокодером.
Сначала кодер получает (1710) текущее изображение в видеопоследовательности. Кодер проверяет (1720), имеет ли текущее изображение сообщение с SEI о ВР. Если нет, кодер устанавливает (1760) значение CPBRD для текущего изображения в сообщении с SEI о РТ в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
С другой стороны, если текущее изображение имеет сообщение с SEI о ВР, кодер устанавливает (1730) значение флага соединения в сообщении с SEI о ВР для текущего изображения. В зависимости от значения флага (1740), кодер может устанавливать значение CPBRD для текущего изображения различными способами.
Если флаг равен 1, кодер устанавливает (1750) значение CPBRD для текущего изображения в сообщении с SEI о РТ равным любой величине, поскольку значение CPBRD для текущего изображения в сообщении с SEI о РТ будет игнорироваться. Значение CPBRD (дельта-значение) в сообщении с SEI о РТ будет интерпретироваться как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования.
В противном случае (флаг равен 0) кодер проверяет (1742), имеет ли предыдущее изображение в порядке декодирования сообщение с SEI о ВР. Если это так, кодер устанавливает (1744) значение CPBRD в сообщении с SEI о ВР текущего изображения таким образом, что значение CPBRD текущего изображения в его сообщении с SEI о РТ равно значению CPBRD в сообщении с SEI о ВР текущего изображения плюс 1. Если это не так (предыдущее изображение не имеет сообщения с SEI о ВР), кодер устанавливает (1746) значение CPBRD в сообщении с SEI о ВР текущего изображения таким образом, что значение CPBRD текущего изображения в его сообщении с SEI о РТ равно значению CPBRD предыдущего изображения в его сообщении с SEI о РТ плюс значению CPBRD (дельта-значению) в сообщении с SEI о ВР текущего изображения плюс 1. Кодер также устанавливает (1746) значение CPBRD для текущего изображения в сообщении с SEI о РТ в качестве значения приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
Кодер проверяет (1770), выполнено ли это, и если нет, продолжает со следующим изображением в качестве текущего изображения. Для упрощения на Фиг. 17 не показано, как метод (1700) действует в сочетании с другими процессами кодирования.
На Фиг. 18 приведен пример метода (1800) определения значений CPBRD во время декодирования в соответствии с двухзначным подходом с использованием флага и дельта-значения, когда значения CPBRD устанавливаются для изображений. Данный метод (1800) реализуется видеодекодером, таким как описанный выше со ссылкой на Фиг. 4, или иным видеодекодером.
Сначала декодер получает (1810) текущее изображение в видеопоследовательности. Декодер проверяет (1820), имеет ли текущее изображение сообщение с SEI о ВР. Если нет, декодер интерпретирует (1860) значение CPBRD для текущего изображения в сообщении с SEI о РТ как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
С другой стороны, если текущее изображение имеет сообщение с SEI о ВР, декодер получает (1830) значение флага соединения в сообщении с SEI о ВР для текущего изображения. В зависимости от значения флага (1840), декодер может интерпретировать значение CPBRD для текущего изображения различными способами или даже игнорировать значение CPBRD для текущего изображения.
Если флаг равен 1, декодер игнорирует (1850) значение CPBRD для текущего изображения в сообщении с SEI о РТ. Значение CPBRD (дельта-значение) в сообщении с SEI о ВР для текущего изображения интерпретируется как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования.
В противном случае (флаг равен 0) декодер проверяет (1842), имеет ли предыдущее изображение сообщение с SEI о ВР. Если это так, декодер может подтверждать (1844), что значение CPBRD текущего изображения в его сообщении с SEI о РТ равно значению CPBRD в сообщении с SEI о ВР текущего изображения плюс 1. Если это не так (предыдущее изображение не имеет сообщения с SEI о ВР), декодер может подтверждать (1846), что значение CPBRD текущего изображения в его сообщении с SEI о РТ равно значению CPBRD предыдущего изображения в его сообщении с SEI о РТ плюс значению CPBRD (дельта-значению) в сообщении с SEI о ВР текущего изображения плюс 1. Декодер также интерпретирует (1860) значение CPBRD для текущего изображения в сообщении с SEI о РТ как значение приращения относительно номинального времени удаления СРВ предыдущего изображения в порядке декодирования, которое имеет сообщение с SEI о ВР.
Декодер проверяет (1870), выполнено ли это, и если нет, продолжает со следующим изображением в качестве текущего изображения. Для упрощения на Фиг. 18 не показано, как метод (1800) действует в сочетании с другими процессами кодирования.
Н. Разновидности и альтернативы
Подробное описание содержит множество примеров синтаксиса и семантики для сообщений с SEI. В некоторых случаях эти примеры в целом соответствуют форме сообщений с SEI, используемой в стандарте H.264/AVC и/или стандарте HEVC. В более общем смысле термин «сообщение с SEI» или «сообщение с VUI» означает любой набор элементов синтаксиса, связанных с кодированным видеоданными, который передает, по меньшей мере, некоторую информацию, эквивалентную информации, передаваемой в структуре (структурах) синтаксиса примера сообщения с SEI или VUI, описываемого в настоящем документе, независимо от того, сигнализируются ли такие элементы синтаксиса с использованием синтаксиса SEI или VUI, задаваемого в упомянутом стандарте H.264/AVC или стандарте HEVC, сигнализируются в другом синтаксисе в кодированном видеопотоке или сигнализируются какими-либо иными средствами.
Принимая во внимание множество возможных вариантов осуществления, к которым могут быть применены принципы описываемого изобретения, следует признать, что иллюстрированные варианты осуществления являются лишь предпочтительными примерами изобретения и не должны рассматриваться как ограничивающие объем изобретения. Напротив, объем изобретения определяется нижеследующей формулой изобретения. Следовательно, в качестве нашего изобретения мы заявляем все, что находится в пределах объема и сущности указанной формулы изобретения.