Сигнализация информации состояния для буфера декодированных картинок и списков опорных картинок
Иллюстрации
Показать всеИзобретение относится к технологиям кодирования/декодирования видеоданных. Техническим результатом является повышение эффективности кодирования/декодирования видео за счет принятия решений о том, какие опорные картинки больше не используются для ссылок. Предложен способ кодирования видео. Способ содержит этап, на котором осуществляют определение информации состояния, которая идентифицирует, какие картинки из последовательности видео доступны для использования в качестве опорных картинок для текущей картинки. Далее, устанавливают синтаксические элементы, которые представляют упомянутую информацию состояния, включая установку идентифицирующей информации для долгосрочной опорной картинки ("LTRP"), причем идентифицирующая информация для LTRP является значением младших значащих битов отсчета по порядку картинки ("LSB в РОС") для LTRP для текущей картинки. Осуществляют выведение синтаксических элементов в качестве части потока битов для дальнейшего использования при кодировании. 4 н. и 6 з.п. ф-лы, 11 ил.
Реферат
УРОВЕНЬ ТЕХНИКИ
[001] Инженеры используют сжатие (также называемое кодированием источника), чтобы уменьшить частоту следования битов цифрового видео. Сжатие уменьшает стоимость хранения и передачи видеоинформации посредством преобразования информации в форму с более низкой частотой следования битов. Декомпрессия (также называемая декодированием) восстанавливает версию первоначальной информации из сжатой формы. "Кодек" является системой кодера/декодера.
[002] За прошлые два десятилетия были приняты различные стандарты кодеков видео, включая стандарты H.261, H.262 (MPEG-2 или ISO/IEC 13818-2), H.263 и H.264 (AVC или ISO/IEC 14496-10) и стандарты MPEG-1 (ISO/IEC 11172-2), Визуальный MPEG-4 (ISO/IEC 14496-2) и SMPTE 421M. В последнее время в разработке находится стандарт HEVC. Стандарт кодека видео обычно определяет варианты для синтаксиса кодированного потока битов видео, детализацию параметров в потоке битов, когда конкретные признаки используются при кодировании и декодировании. Во многих случаях стандарт кодека видео также обеспечивает детали об операциях декодирования, которые декодер должен выполнить, чтобы достигнуть правильных результатов при декодировании.
[003] Основная цель сжатия состоит в том, чтобы обеспечить хорошую эффективность «скорость передачи - искажение». Так, для конкретной частоты следования битов кодер пытается обеспечить наивысшее качество видео. Или, для конкретного уровня качества/соответствия первоначальному видео, кодер пытается обеспечить самую низкую частоту следования битов кодированного видео. На практике в зависимости от сценария использования учет параметров, таких как время кодирования, сложность кодирования, ресурсы кодирования, время декодирования, сложность декодирования, ресурсы декодирования, общая задержка, способность восстановления потерь и/или гладкость при воспроизведении также влияет на решения, принятые во время кодирования и декодирования.
[004] Как правило, кодер или декодер видео буферизуют ранее декодированные картинки, которые кодер или декодер видео могут использовать при кодировании или декодировании других картинок. Такие восстановленные и буферизованные картинки часто называют опорными картинками. Некоторые стандарты кодека видео описывают сложные правила для управления и обновления того, какие опорные картинки буферизованы и какие опорные картинки больше не используются для ссылок (на них). Это может позволить кодеру улучшить эффективность сжатия, принимая хорошие решения о том, какие опорные картинки использовать, но процессы управления и обновления опорных картинок могут быть сложными для кодера и декодера. Кроме того, декодер использует различную информацию в потоке битов закодированных видеоданных, чтобы отследить и обновить состояние своего буфера опорных картинок и списки опорных картинок. Потеря информации из потока битов (например, из-за потери пакета или повреждения) может неблагоприятно влиять на декодирование в течение существенного промежутка времени, если внутреннее состояние декодера для его буфера опорных картинок и/или списков опорных картинок отклоняется от ожидаемого состояния, и декодер больше не использует соответствующие опорные картинки.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[005] В целом настоящее подробное описание представляет усовершенствования (новшества) для сигнализации состояния буфера декодированных картинок ("DPB") и списков опорных картинок. Упомянутые усовершенствования могут уменьшить скорость передачи в битах, ассоциированную с сигнализацией информации состояния для управления DPB и списком опорных картинок ("RPL"), и улучшить управление DPB и/или управление RPL в различных других отношениях, все еще обеспечивая надежность в отношении информации состояния, влияющей на потери.
[006] Вместо того чтобы полагаться на внутреннее состояние декодера, чтобы управлять и обновлять DPB и списки RPL, информация состояния о DPB и списках RPL сигнализируется явно. Это позволяет декодеру определять, какие картинки ожидаются доступными для ссылки в DPB из сигнализированной информации состояния, которая идентифицирует, какие картинки в настоящее время доступны для ссылки. Такая информация состояния может упоминаться как информация списка описания буфера ("BDL"), которая обычно ссылается на любую форму информации, которая явно указывает состояние DPB и/или списков RPL.
[007] Новшества, описанные в настоящем описании, включают в себя, но не ограничены ими, следующее.
- Использование флага будущей опорной ссылки для каждой опорной картинки в информации BDL, где флаг будущей опорной ссылки указывает, используется ли опорная картинка только для декодирования текущей картинки (ассоциированной с информацией BDL) или, вместо этого, используется для декодирования по меньшей мере одной последующей картинки в кодированном порядке. Использование этого флага может позволить хранение дополнительной опорной картинки в DPB.
- Использование флага решения вкл/выкл (включения/выключения) для использования флага будущей опорной ссылки. Например, флаг решения вкл/выкл может быть сигнализирован в качестве части набора параметра последовательности ("SPS") и указывать присутствие/отсутствие флагов будущей опорной ссылки в информации BDL. Это может позволить кодеру решать, использовать ли флаги будущей опорной ссылки в информации BDL.
- В информации BDL для картинки, ассоциированной с более высоким временным уровнем, обеспечение информации маркирования опорной картинки, чтобы отметить одну или более картинок в более низком временном уровне как неиспользуемых для ссылки. В то время как такое поведение может быть необычным на практике, в некоторых сценариях оно может быть полезным, чтобы обеспечить такие опции для управления опорными картинками для картинок в более высоком временном уровне. И, когда более поздняя информация BDL испытывает недостаток в информации статуса опорных картинок, ранее удаленных с информацией BDL для картинки в более высоком временном уровне, декодер может логически вывести удаление таких опорных картинок.
- Использование флага обозначения картинки более высокого уровня для каждой картинки более высокого временного уровня в информации BDL, где флаг обозначения картинки более высокого уровня обозначает картинку как относящуюся к более высокому временному уровню для целей информации BDL. Во многих сценариях картинки более высокого временного уровня имеют небольшое или никакого использования в качестве опорных картинок, и процесс управления и обновления DPB может быть упрощен для таких картинок. Когда информация BDL используется вообще для картинок более высокого временного уровня, простой флаг для каждой картинки в информации BDL может быть достаточным, чтобы обозначать картинку как ассоциированную с более высоким временным уровнем, где действия по управлению и обновлению DPB подразумеваются.
- Использование флага решения вкл/выкл для включения информации статуса о картинках более высоких временных уровней в информацию BDL. Например, флаг решения вкл/выкл может быть сигнализирован в качестве части SPS и указывать присутствие/отсутствие информации статуса о картинках более высоких временных уровней в информации BDL.
- Информация BDL может быть сигнализирована на уровне адаптивного набора параметров слайса (вырезки) ("APS"). Единственный набор информации BDL ассоциирован с APS.
- Упрощение сигнализации информации статуса для долгосрочной опорной картинки ("LTRP") в информации BDL. Картинки LTRP обеспечивают полезный конструктивный элемент для кодирования и декодирования видео, но учет управления и обновления картинок LTRP в информации BDL представляет проблемы. В частности, для LTRP, которая остается в DPB в течение длительного времени, сигнализация идентифицирующей информации для этой LTRP может потреблять большое количество битов и создать особые случаи для их разрешения при синтаксическом разборе и декодировании потока битов. Различные версии упрощенного синтаксиса для картинок LTRP в информации BDL предложены в настоящем описании, которые уменьшают скорость передачи в битах для информации статуса LTRP и упрощают управление DPB. Например, флаг LTRP для картинки в информации BDL помечает картинку как являющуюся LTRP для целей управления DPB.
- Использование решения вкл/выкл для флага для включения информации статуса о картинках LTRP в информацию BDL. Например, флаг решения вкл/выкл может быть сигнализирован в качестве части SPS и указывать присутствие/отсутствие информации статуса о картинках LTRP в информации BDL, что упрощает сигнализацию информации BDL, когда кодер решил не использовать картинки LTRP.
- Сокращение количества битов, используемых для идентификации картинок LTRP в информации BDL. Во многих сценариях использования количество опорных картинок (и картинок LTRP) является малым, и малое количество битов достаточно, чтобы идентифицировать картинки LTRP. Кодер может увеличить число битов, используемых для идентификации картинок LTRP для других сценариев использования.
- Организация информации BDL в порядке, использованном для конструирования RPL. Это упрощает синтаксис в целях конструирования RPL.
- Сигнализация, разрешены ли промежутки в значениях отсчета последовательности картинок ("POC"). Например, флаг в SPS указывает, разрешены ли промежутки в значениях POC. Если промежутки не разрешены, декодер может распознать потери картинок, когда он определяет, что значения POC отсутствуют, и декодер может принять решения о картинках, готовых для вывода, на основании значений POC.
- Синтаксические элементы в информации BDL могут быть закодированы, используя усеченное экспоненциальное кодирование Голомба (Exp-Golomb) (то есть te(v)) вместо беззнакового экспоненциального кодирования Голомба. Это является более эффективным для синтаксических элементов с малым количеством возможных значений.
[008] Согласно одному аспекту новшеств, описанных здесь, вычислительная система определяет информацию состояния, которая идентифицирует, какие картинки доступны для использования в качестве опорных картинок. Вычислительная система устанавливает синтаксические элементы, которые представляют информацию состояния. В частности, при этом вычислительная система устанавливает идентифицирующую информацию для LTRP, где идентифицирующая информация является значением наименьших значащих битов в POC ("LSB в POC") для LTRB. Вычислительная система затем выводит эти синтаксические элементы в качестве части потока битов.
[009] Согласно другому аспекту новшеств, описанных здесь, вычислительная система принимает по меньшей мере часть потока битов. Из этого потока битов вычислительная система синтаксически выделяет синтаксические элементы, которые представляют информацию состояния, идентифицирующую, какие картинки доступны для использования в качестве опорных картинок. В частности, синтаксические элементы включают в себя идентифицирующую информацию для LTRP, причем идентифицирующая информация является значением LSB в POC для упомянутой LTRB. Вычислительная система использует эту идентифицирующую информацию во время декодирования.
[010] Предшествующие и другие задачи, признаки и преимущества изобретения станут более очевидными из нижеследующего подробного описания, которое приводится со ссылками на сопроводительные чертежи.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[011] Фиг. 1 является примерной диаграммой вычислительной системы, в которой могут быть реализованы некоторые описанные варианты осуществления.
[012] Фиг. 2a и 2b являются диаграммами примерной сетевой среды, в которой могут быть реализованы некоторые описанные варианты осуществления.
[013] Фиг. 3 является диаграммой примерного кодера, совместно с которым могут быть реализованы некоторые описанные варианты осуществления.
[014] Фиг. 4a является последовательностью операций обобщенного способа для вывода синтаксического элемента, как описано здесь, и Фиг. 4b является последовательностью операций примерного способа для сигнализации идентифицирующей информации для картинок LTRP в потоке битов.
[015] Фиг. 5 является диаграммой примерного декодера, совместно с которым могут быть реализованы некоторые описанные варианты осуществления.
[016] Фиг. 6a является последовательностью операций обобщенного способа для синтаксического разбора синтаксического элемента, как описано здесь, и Фиг. 6b является последовательностью операций примерного способа для синтаксического разбора идентифицирующей информации для LTRP из потока битов.
[017] Фиг. 7a является листингом на псевдокоде для выведения переменной PicOrderCntMsb, и Фиг. 7b является листингом на псевдокоде для выведения переменной PicOrderCntVal.
ПОДРОБНОЕ ОПИСАНИЕ
[018] Подробное описание представляет усовершенствования (новшества) для сигнализации состояния DPB и списки RPL. Усовершенствования могут помочь уменьшить скорость передачи в битах, ассоциированную с информацией BDL, и/или упростить процесс управления DPB или конструирование RPL, все еще поддерживая восстановление потерь.
[019] Некоторые из новшеств, описанных здесь, проиллюстрированы в отношении синтаксических элементов и операций, специфичных для стандарта H.264 и/или HEVC. Такие новшества могут также быть реализованы для других стандартов или форматов.
[020] Более широко, возможны различные альтернативы примерам, описанным здесь. Некоторые способы, описанные со ссылками на диаграммы последовательности операций, могут быть изменены посредством изменения порядка этапов, показанных в этих последовательностях операций, посредством разделения, повторения или пропуска некоторых этапов и т.д. Различные аспекты сигнализации состояния DPB и списков RPL могут использоваться в комбинации или отдельно. Различные варианты осуществления используют одно или более из описанных новшеств. Некоторые из новшеств, описанных здесь, направлены на решение одной или более проблем, отмеченных в разделе Уровень техники. Как правило, заданный способ/инструмент не решает все такие проблемы.
I. ПРИМЕРНЫЕ ВЫЧИСЛИТЕЛЬНЫЕ СИСТЕМЫ
[021] Фиг. 1 иллюстрирует обобщенный пример подходящей вычислительной системы (100), в которой могут быть реализованы несколько из описанных новшеств. Вычислительная система (100) не предназначена, чтобы предложить какое-либо ограничение относительно области использования или функциональных возможностей, поскольку новшества могут быть реализованы в разнообразных вычислительных системах специального назначения или общего назначения.
[022] Со ссылками на фиг. 1 вычислительная система (100) включает в себя один или более блоков (110, 115) обработки и памяти (120, 125). На фиг. 1 эта наиболее базовая конфигурация (130) включена в пределы пунктирной линии. Блоки (110, 115) обработки выполняют выполняемые компьютером инструкции. Блок обработки может быть центральным процессором общего назначения (ЦП, CPU), процессором в специализированной интегральной схеме (ASIC) или любым другим типом процессора. В системе множественной обработки множественные блоки обработки выполняют выполняемые компьютером инструкции, чтобы увеличить мощность обработки. Например, Фиг. 1 показывает центральный процессор (110), так же как графический блок обработки или блок (115) совместной обработки. Материальная память (120, 125) может быть энергозависимой памятью (например, регистры, кэш, RAM), энергонезависимой памятью (например, ROM, EEPROM, флэш-память, и т.д.) или некоторой комбинацией этих двух, доступной для блока(ов) обработки. Память (120, 125) хранит программное обеспечение (180), реализующее одно или более новшеств для сигнализации информации BDL, в форме выполняемых компьютером инструкций, подходящих для выполнения блоком(ами) обработки.
[023] Вычислительная система может иметь дополнительные особенности. Например, вычислительная система (100) включает в себя запоминающее устройство (140), одно или более устройств (150) ввода, одно или более устройств (160) вывода и одно или более соединений (170) связи. Механизм взаимосвязи (не показан), такой как шина, контроллер или сеть, связывает компоненты вычислительной системы (100). Как правило, программное обеспечение операционной системы (не показано) обеспечивает операционную среду для другого программного обеспечения, выполняющегося в вычислительной системе (100), и координирует действия компонентов вычислительной системы (100).
[024] Материальное запоминающее устройство (140) может быть сменным или несменным, и включает в себя магнитные диски, магнитные ленты или кассеты, CD-ROM, DVD или любой другой носитель, который может быть использован для хранения информации, к которой можно получить доступ в вычислительной системе (100). Запоминающее устройство (140) хранит инструкции для программного обеспечения (180), реализующего одно или более новшеств для сигнализации информации BDL.
[025] Устройство(а) (150) ввода может быть устройством ввода касанием, таким как клавиатура, мышь, ручка или трекбол, голосовое устройство ввода, устройство сканирования или другое устройство, которое обеспечивает ввод в вычислительную систему (100). Для кодирования видео устройство(а) (150) ввода может быть компонентом захвата видео, таким как камера, видеокарта, карта ТВ-блока настройки или подобное устройство, которое принимает ввод видео в аналоговой или цифровой форме, компонент захвата видео, такой как модуль захвата экрана, который захватывает генерируемые компьютером экранные изображения в качестве видео или подобный компонент, который захватывает генерируемый компьютером контент изображения, или CD-ROM, или CD-RW, который считывает видео выборки в вычислительную систему (100). Устройство(а) (160) вывода может быть дисплеем, принтером, громкоговорителем, блоком записи на CD или другим устройством, которое обеспечивает вывод из вычислительной системы (100).
[026] Соединение(я) (170) связи обеспечивают связь по коммуникационному носителю к другому вычислительному объекту. Коммуникационный носитель передает информацию, такую как выполняемые компьютером инструкции, ввод или вывод аудио, или видео, или другие данные в модулированном сигнале данных. Модулированный сигнал данных является сигналом, который имеет одну или более из его характеристик, установленную или измененную таким образом, чтобы кодировать информацию в сигнале. Посредством примера, а не ограничения, коммуникационные носители могут использовать электрический, оптический, РЧ или другой носитель.
[027] Новшества могут быть описаны в общем контексте считываемого компьютером носителя. Считываемый компьютером носитель - это любой доступный материальный носитель, к которому можно получить доступ в пределах вычислительной среды. Посредством примера, а не ограничения, с вычислительной системой (100), считываемый компьютером носитель включает в себя память (120, 125), запоминающее устройство (140) и комбинацию любого из вышеупомянутых.
[028] Новшества могут быть описаны в общем контексте выполняемых компьютером инструкций, таких как включенные в программные модули, выполняемые в вычислительной системе на целевом реальном или виртуальном процессоре. Обычно программные модули включают в себя подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.д. которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функциональные возможности программных модулей могут быть объединены или разделены между программными модулями, как желательно в различных вариантах осуществления. Выполняемые компьютером инструкции для программных модулей могут быть выполнены в локальной или распределенной вычислительной системе.
[029] Термины "система" и "устройство" использованы взаимозаменяемо в настоящем описании. Если контекст явно не указывает иначе, никакой термин не подразумевает ограничения на тип вычислительной системы или вычислительного устройства. Обычно вычислительная система или вычислительное устройство могут быть локальными или распределенными и могут включать в себя любую комбинацию аппаратного обеспечения специального назначения и/или аппаратного обеспечения общего назначения с программным обеспечением, реализующим функциональные возможности, описанные в настоящем описании.
[030] Для целей представления подробное описание использует термины подобные "определять" и "использовать", чтобы описать компьютерные операции в вычислительной системе. Эти термины являются абстракциями высокого уровня для операций, выполняемых компьютером, и не должны быть перепутаны с действиями, совершенными человеком. Фактические компьютерные операции, соответствующие этим терминам, изменяются в зависимости от реализации.
II. ПРИМЕРНЫЕ СЕТЕВЫЕ СРЕДЫ
[031] Фиг. 2a и 2b показывают примерные сетевые среды (201, 202), которые включают в себя видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) связаны по сети (250), используя соответствующий протокол связи. Сеть (250) может включать в себя Интернет или другую компьютерную сеть.
[032] В сетевой среде (201), показанной на фиг. 2a, каждый инструмент (210) связи в реальном времени ("RTC") включает в себя как кодер (220), так и декодер (270) для двунаправленной связи. Заданный кодер (220) может сформировать вывод, совместимый со стандартом SMPTE 421M, стандартом ISO/IEC 14496-10 (также известным как H.264 или AVC), стандартом HEVC, другим стандартом или составляющим собственность форматом, с соответствующим декодером (270), принимающим кодированные данные от кодера (220). Двунаправленная связь может быть частью видеоконференции, видеотелефонного звонка или другого сценария двухсторонней связи. Хотя сетевая среда (201) на фиг. 2a включает в себя два инструмента (210) связи в реальном времени, сетевая среда (201) может вместо этого включать в себя три или более инструмента (210) связи в реальном времени, которые участвуют в многосторонней связи.
[033] Инструмент (210) связи в реальном времени управляет кодированием посредством кодера (220). Фиг. 3 показывает примерную систему (300) кодера, которая может быть включена в инструмент (210) связи в реальном времени. Альтернативно, инструмент (210) связи в реальном времени использует другую систему кодера. Инструмент (210) связи в реальном времени также управляет декодированием посредством декодера (270). Фиг. 5 показывает примерную систему (500) декодера, который может быть включен в инструмент (210) связи в реальном времени. Альтернативно, инструмент (210) связи в реальном времени использует другую систему декодера.
[034] В сетевой среде (202), показанной на фиг. 2b, инструмент (212) кодирования включает в себя кодер (220), который кодирует видео для доставки на множественные инструменты (214) воспроизведения, которые включают в себя декодеры (270). Однонаправленная связь может быть предоставлена для системы видеонаблюдения, системы мониторинга web-камеры, удаленного настольного представления конференц-связи или другого сценария, в котором видео кодируется и посылается от одного местоположения к одному или более другим местоположениям. Хотя сетевая среда (202) на фиг. 2b включает в себя два инструмента (214) воспроизведения, сетевая среда (202) может включать в себя больше или меньше инструментов (214) воспроизведения. Обычно инструмент (214) воспроизведения связывается с инструментом (212) кодирования, чтобы определить поток видео для инструмента (214) воспроизведения для приема. Инструмент (214) воспроизведения принимает поток, буферизует принятые кодированные данные в течение соответствующего периода и начинает декодирование и воспроизведение.
[035] Фиг. 3 показывает примерную систему (300) кодера, которая может быть включена в инструмент (212) кодирования. Альтернативно, инструмент (212) кодирования использует другую систему кодера. Инструмент (212) кодирования может также включать в себя логику контроллера стороны сервера для управления соединениями с одним или более инструментами (214) воспроизведения и/или инструментами передачи сетевого видео. Фиг. 5 показывает примерную систему (500) декодера, которая может быть включена в инструмент (214) воспроизведения. Альтернативно, инструмент (214) воспроизведения использует другую систему декодера. Инструмент (214) воспроизведения может также включать в себя логику контроллера стороны клиента для управления соединениями с инструментом (212) кодирования.
III. ПРИМЕРНЫЕ СИСТЕМЫ КОДЕРА
[036] Фиг. 3 является блок-схемой примерной системы (300) кодера, в соединении с которым могут быть реализованы некоторые описанные варианты осуществления. Система (300) кодера может быть инструментом кодирования общего назначения, способным к работе в любом из множественных режимов кодирования, таких как режим кодирования с малой задержкой для связи в реальном времени, режим транскодирования и режим регулярного кодирования для воспроизведения медиа из файла или потока, или это может быть инструмент кодирования специального назначения, приспособленный к одному такому режиму кодирования. Система (300) кодера может быть реализована как модуль операционной системы, в качестве части библиотеки приложений или как автономное приложение. В целом система (300) кодера принимает последовательность исходных кадров (311) видео из источника (310) видео и формирует кодированные данные в качестве вывода в канал (390). Закодированный вывод данных на канал может включать в себя один или более синтаксических элементов, которые описаны в разделе V.
[037] Источник (310) видео может быть камерой, картой тюнера, запоминающими носителями или другим источником цифрового видео. Источник (310) видео формирует последовательность видеокадров со скоростью передачи кадров, например, 30 кадров в секунду. Как используется здесь, термин "кадр" в целом относится к исходным, закодированным или восстановленным данным изображения. Для видео с прогрессивной разверткой кадр является кадром с прогрессивной разверткой видео. Для видео с чересстрочной разверткой в примерных вариантах осуществления видеокадр с чересстрочной разверткой деперемежается до кодирования. Альтернативно, два комплементарных видеополя с чересстрочной разверткой кодируются как видеокадр или отдельные поля с чересстрочной разверткой. Помимо указания видео кадра с прогрессивной разверткой, термин "кадр" может указывать единственное непарное поле видео, пару комплементарных видеополей, плоскость объекта видео, которая представляет видеообъект в заданный момент или область интереса в большем изображении. Плоскость объекта или область видео могут быть частью большего изображения, которое включает в себя множественные объекты или области сцены.
[038] Поступающий исходный кадр (311) сохраняется в запоминающей области (320) временной памяти исходных кадров, которая включает в себя множественные запоминающие области (321, 322,..., 32n) буфера кадров. Буфер (321, 322, и т.д.) кадров хранит один исходный кадр в запоминающей области (320) исходных кадров. После того как один или более исходных кадров (311) были сохранены в буферах (321, 322, и т.д.) кадров, селектор (330) кадров периодически выбирает отдельный исходный кадр из запоминающей области (320) исходных кадров. Порядок, в котором кадры выбираются селектором (330) кадров для ввода в кодер (340), может отличаться от порядка, в котором кадры сформированы видеоисточником (310), например, кадр может быть опережающим, чтобы облегчить обратное во времени предсказание. Перед кодером (340) система (300) кодера может включать в себя препроцессор (не показан), который выполняет предварительную обработку (например, фильтрацию) выбранного кадра (331) перед кодированием.
[039] Кодер (340) кодирует выбранный кадр (331), чтобы сформировать закодированный кадр (341) и также формирует сигналы управления администрированием памяти (342). Если текущий кадр не является первым кадром, который был закодирован при выполнении процесса его кодирования, кодер (340) может использовать один или более ранее закодированных/декодированных кадров (369), которые были сохранены в запоминающей области (360) временной памяти декодированных кадров. Такие сохраненные декодированные кадры (369) используются в качестве опорных кадров для межкадрового предсказания содержимого текущего исходного кадра (331). Обычно кодер (340) включает в себя множественные модули кодирования, которые выполняют задачи кодирования, такие как оценка движения и компенсация, преобразование частот, квантование и энтропийное кодирование. Точные операции, выполняемые кодером (340), могут изменяться в зависимости от формата сжатия. Формат закодированных данных вывода может быть форматом Windows Media Video, форматом VC-1, форматом MPEG-x (например, MPEG-1, MPEG-2 или MPEG-4), форматом H.26x (например, H.261, H.262, H.263, H.264), форматом HEVC или другим форматом.
[040] Кодированные кадры (341) и информация BDL (342) обрабатываются эмулятором (350) процесса декодирования. Эмулятор (350) процесса декодирования реализует некоторые из функциональных возможностей декодера, например, задачи декодирования для восстановления опорных кадров, которые используются кодером (340) при оценке и компенсации движения. Эмулятор (350) процесса декодирования использует информацию BDL (342), чтобы определить, должен ли заданный кодированный кадр (341) быть восстановлен и сохранен для использования в качестве опорного кадра при межкадровом предсказании последующих кадров, которые должны быть закодированы. Если информация BDL (342) указывает, что закодированный кадр (341) должен быть сохранен, эмулятор (350) процесса декодирования моделирует процесс декодирования, который мог бы быть проведен декодером, который принимает закодированный кадр (341) и формирует соответствующий декодированный кадр (351). При этом, когда кодер (340) использовал декодированный кадр(ы) (369), которые были сохранены в запоминающей области (360) декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный кадр(ы) (369) из запоминающей области (360) в качестве части процесса декодирования.
[041] Запоминающая область (360) временной памяти декодированных кадров включает в себя множественные запоминающие области (361, 362,..., 36n) буфера кадров. Эмулятор (350) процесса декодирования использует информацию BDL (342), чтобы управлять содержимым запоминающей области (360), чтобы идентифицировать любые (361, 362, и т.д.) буферы кадров с кадрами, которые больше не являются необходимыми кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет недавно декодированный кадр (351) в буфере (361, 362, и т.д.) кадров, который был идентифицирован этим способом.
[042] Кодированные кадры (341) и информация BDL (342) также буферизуются в закодированной области (370) временных кодированных данных. Кодированные данные, которые агрегированы в области (370) кодированных данных, могут содержать, в качестве части синтаксиса элементарного кодированного потока битов видео, один или более синтаксических элементов, которые описаны в разделе V. Альтернативно, кодированные данные, которые агрегированы в области (370) кодированных данных, могут включать в себя синтаксический элемент(ы), такие как описаны в разделе V в качестве части метаданных медиа, относящихся к данным кодированного видео (например, в качестве одного или более параметров в одном или более сообщениях информации дополнительного расширения ("SEI") или сообщениях информации удобства и простоты использования видео ("VUI")).
[043] Агрегированные данные (371) из закодированной области (370) временных кодированных данных обрабатываются кодером (380) канала. Кодер (380) канала может пакетизировать агрегированные данные для передачи в качестве потока медиа, в этом случае кодер (380) канала может в некоторых случаях добавить, в качестве части синтаксиса потока передачи медиа, синтаксический элемент(ы), такие как описаны в разделе V. Или кодер (380) канала может организовать агрегированные данные для хранения в качестве файла, в этом случае кодер (380) канала может в некоторых случаях добавить, в качестве части синтаксиса файла хранения медиа, синтаксический элемент(ы), такие как описаны в разделе V. Или, более широко, кодер (380) канала может реализовать один или более протоколов мультиплексирования системы медиа или транспортных протоколов, этом случае кодер (380) канала может в некоторых случаях добавить, в качестве части синтаксиса протокола(ов), синтаксический элемент(ы), такие как описаны в разделе V. Кодер (380) канала обеспечивает выходной сигнал на канал (390), который представляет запоминающее устройство, соединение связей или другой канал для вывода.
[044] Фиг. 4a показывает примерный способ (400) для установки и вывода одного или более синтаксических элементов, которые описаны в разделе V. Например, инструмент связи в реальном времени или инструмент кодирования, описанный со ссылками на фиг. 2a и 2b, выполняет способ (400). Альтернативно, другой инструмент выполняет способ (400). В качестве начала инструмент (410) устанавливает один или более синтаксических элементов, которые описаны в разделе V. Инструмент затем выводит (420) эти один или более синтаксических элементов.
[045] Фиг. 4b показывает конкретный пример (401) способа (400), сосредотачиваясь на сигнализации идентифицирующей информации для долгосрочных опорных картинок ("картинок LTRP"). Например, инструмент связи в реальном времени или инструмент кодирования, описанный со ссылками на фиг. 2a и 2b, выполняют способ (401). Альтернативно, другой инструмент выполняет способ (401).
[046] В качестве начала инструмент определяет (405) информацию состояния, которая идентифицирует, какие картинки доступны для использования в качестве опорных картинок (то есть в настоящее время доступны для видеокодера для использования в качестве опорных картинок; ожидаются быть доступными для видеодекодера для использования в качестве опорных картинок в этот момент при декодировании). Инструмент затем устанавливает (411) синтаксические элементы, которые представляют информацию состояния. В частности, инструмент устанавливает идентифицирующую информацию для LTRP. Идентифицирующая информация для LTRP является значением наименьших значащих битов отсчета по порядку картинки ("LSB в POC") для этой LTRB. Картинки, доступные для использования в качестве опорных картинок, могут также включать в себя краткосрочную опорную картинку ("STRP"). В этом случае инструмент может снова использовать значение LSB в POC для LTRB в качестве значения LSB в POC для этой STRB, но отметить LTRB в качестве используемой для долгосрочной ссылки, чтобы различать LTRP и STRP.
[047] Синтаксические элементы, которые сигнализируются в потоке битов, могут включать в себя другие и/или дополнительные синтаксические элементы. Например, инструмент определяет, включать ли информацию статуса о картинках LTRP в поток битов для картинок последовательности, и выводит, в качестве части набора параметра последовательности, флаг, который указывает, присутствует ли информация статуса о картинках LTRP в потоке битов для картинок последовательности. Или инструмент устанавливает количество битов для LSB в POC, чтобы использовать для значений LSB POC для картинок LTRB, затем выводит синтаксический элемент, который указывает количество битов для LSB POC (например, синтаксический элемент, который представляет логарифм по основанию 2 точки свертывания для LSB в POC относительно постоянного значения, такой как синтаксический элемент log2_max_pic_order_cnt_lsb_minus4). Или инструмент использует и сигнализирует другие синтаксические элементы, описанные в разделе V.
[048] Инструмент затем выводит (421) синтаксические элементы в качестве части потока битов. Например, инструмент сигнализирует синтаксические элементы в элементарном кодированном потоке битов видео для текущей картинки. Альтернативно, синтаксические элементы сигнализируются на некотором другом уровне синтаксиса потока битов.
IV. ПРИМЕРНЫЕ СИСТЕМЫ ДЕКОДЕРА
[049] Фиг. 5 является блок-схемой примерной системы (500) декодера в соединении с которой могут быть реализованы некоторые описанные варианты осуществления. Система (500) декодера может быть инструментом декодирования общего назначения, способным работать в любом из множественных режимов декодирования, таких как режим декодирования с низким временем ожидания для связи в реальном времени и режим регулярного декодирования для воспроизведения медиа из файла или потока, или он может быть инструментом декодирования специального назначения, приспособленным к одному такому режиму декодирования. Система (500) декодера может быть реализована как модуль операционной системы, в качестве части библиотеки приложений