СОКРАЩЕНИЕ ЗАДЕРЖКИ ПРИ КОДИРОВАНИИ И ДЕКОДИРОВАНИИ ВИДЕО
REDUCING DELAYS IN VIDEO ENCODING AND DECODING

УРОВЕНЬ ТЕХНИКИ
Проектировщики применяют сжатие (называемое также исходным кодированием или исходной кодировкой) для снижения битовой скорости (битрейта) цифрового видео. Сжатие уменьшает стоимость хранения и передачи видеоинформации посредством преобразования информации в форму со сниженной битовой скоростью. Распаковка (называемая также декодированием) реконструирует версию первоначальной информации из сжатой формы. «Кодек» является кодирующей/декодирующей системой.
За последние два десятка лет приняты различные стандарты видеокодеков, в том числе стандарты 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 Visual (ISO/IEC 14496-2) и SMPTE 421M. В последнее время в состоянии разработки находится стандарт HEVC (высокоэффективное видеокодирование). Стандарт на видеокодек обычно определяет параметры для синтаксиса кодированного видеопотока с детализацией параметров в двоичном потоке, когда при кодировании и декодировании используют конкретные возможности. Во многих случаях стандарт на видеокодек обеспечивает также сведения об операциях декодирования, которые декодер должен выполнять для получения точных результатов при декодировании.
Основной целью сжатия является обеспечение высокой характеристики скорость-искажение. Поэтому для конкретной битовой скорости кодер стремится обеспечить наивысшее качество видео. Или для конкретного уровня качество/точность соответствия первоначальному видео кодер стремится обеспечить кодированное видео с минимальной битовой скоростью. На практике, в зависимости от сценария применения, на решения, принимаемые в течение кодирования и декодирования, влияют также такие соображения, как время кодирования, сложность кодирования, ресурсы кодирования, время декодирования, сложность декодирования, ресурсы декодирования, суммарное запаздывание и/или гладкость воспроизведения.
Для примера, целесообразно рассмотреть такие сценарии применения, как воспроизведение видео из запоминающего устройства, воспроизведение видео из кодированных данных, передаваемых в потоковом режиме по сетевому соединению, и перекодировка видео (из одной битовой скорости в другую битовую скорость или из одного стандарта в другой стандарт). На стороне кодера упомянутые применения могут допускать автономное кодирование, которое совсем не критично ко времени. Поэтому кодер может увеличивать время кодирования и увеличивать ресурсы, используемые во время кодирования, для нахождения наиболее эффективного метода сжатия видео и, тем самым, повышения характеристики скорость-искажение. Если на стороне декодера также допустима небольшая величина запаздывания, то кодер может дополнительно повысить характеристику скорость-искажение, например, путем использования взаимных зависимостей изображений от изображений, находящихся дальше к началу последовательности.
С другой стороны, целесообразно рассмотреть такие сценарии применения, как телеконференция с использованием настольных компьютеров, видеонаблюдение, видеотелефония и другие сценарии связи в режиме реального времени. Приведенные применения критичны ко времени. Малая задержка между записью входных изображений и воспроизведением выходных изображений является основным фактором характеристик. Когда средства кодирования/декодирования, адаптированные для связи не в режиме реального времени, применяются в сценариях связи в режиме реального времени, суммарная задержка часто недопустимо велика. Запаздывания, которые упомянутые средства вносят в течение кодирования и декодирования, могут повысить характеристики при обычном воспроизведении видео, но нарушают связь в режиме реального времени.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
В сущности, подробное описание представляет методики и средства для сокращения задержки при кодировании и декодировании видео. Эти методики и средства могут сокращать задержку для ускорения ответной реакции в процессе связи в режиме реального времени. Например, предложенные методики и средства сокращают суммарную задержку посредством ограничения задержки в результате переупорядочивания видеокадров и посредством указания ограничения на задержку переупорядочивания кадров с помощью, по меньшей мере, одного синтаксического элемента, который сопровождает кодированные данные для видеокадров.
В соответствии с одним аспектом методик и средств, описанных в настоящей заявке, средство, например видеокодер, средство связи в режиме реального времени с видеокодером или другое средство, устанавливает, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, ограничение на переупорядочивание кадров, соответствующее межкадровым зависимостям между несколькими кадрами видеопоследовательности). Данное средство выдает синтаксический(ие) элемент(ы), что помогает упростить и ускорить определение, когда реконструированные кадры готовы для вывода с точки зрения порядка вывода кадров.
В соответствии с другим аспектом методик и средств, описанных в настоящей заявке, средство, например, видеодекодер, средство связи в режиме реального времени с видеодекодером или другое средство принимает и посредством анализа выявляет, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, ограничение на переупорядочивание кадров). Средство принимает также кодированные данные для многих кадров видеопоследовательности. По меньшей мере, некоторые из кодированных данных декодируются для реконструкции одного из кадров. Средство может определять ограничение на задержку по синтаксическому(им) элементу(ам), затем использовать ограничение на задержку для определения того, когда реконструированный кадр готов для вывода (с точки зрения порядка вывода). Средство выводит реконструированный кадр.
Вышеприведенные и другие цели, признаки и преимущества изобретения станут более понятными из нижеприведенного подробного описания, которое дано со ссылкой на прилагаемые фигуры.
ПОДРОБНОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
Фигура 1 - схема примерной компьютерной системы, в которой могут быть реализованы некоторые описанные варианты осуществления.
Фигуры 2a и 2b - схемы примерных сетевых сред, в которых могут быть реализованы некоторые описанные варианты осуществления.
Фигура 3 - схема примерной кодирующей системы, в связи с которой могут быть реализованы некоторые описанные варианты осуществления.
Фигура 4 - схема примерной декодирующей системы, в связи с которой могут быть реализованы некоторые описанные варианты осуществления.
Фигуры 5a-5e - схемы, показывающие порядок кодирования и порядок вывода для кадров в нескольких примерных сериях.
Фигура 6 - блок-схема последовательности операций способа, представляющая примерную методику установки и вывода, по меньшей мере, одного синтаксического элемента, который указывает ограничение на задержку.
Фигура 7 - блок-схема последовательности операций способа, представляющая примерную методику декодирования с сокращением задержки.
ПОДРОБНОЕ ОПИСАНИЕ
Подробное описание предлагает методику и средства для сокращения задержки при кодировании и декодировании видео. Эти методики и средства могут способствовать сокращению задержки для ускорения ответной реакции в процессе связи в режиме реального времени.
В сценариях кодирования/декодирования видео неизбежно некоторое запаздывание между моментом времени, когда входной видеокадр принимается, и моментом времени, когда кадр воспроизводится. Кадр кодируется кодером, подается в декодер и декодируется декодером, и некоторая величина задержки обусловлена практическими ограничениями ресурсов кодирования, ресурсов декодирования и/или пропускной способности сети. Другую задержку можно, тем не менее, предотвратить. Например, задержка может быть внесена кодером и декодером для повышения характеристики скорость-искажение (например, при использовании межкадровых зависимостей от изображений, находящихся дальше к началу последовательности). Упомянутую задержку можно сократить, однако при этом возможны потери с точки зрения характеристики скорость-искажение, загрузки процессора или гладкости воспроизведения.
При применении методик и средств, описанных в настоящей заявке, задержка сокращается посредством ограничения задержки (следовательно, ограничения временной протяженности межкадровых зависимостей) и указания ограничения задержки декодеру. Например, ограничение на задержку является ограничением на задержку переупорядочивания кадров. В альтернативном варианте, ограничение на задержку является ограничением, выраженным в виде секунд, миллисекунд или другой величины измерения времени. Затем декодер может определять ограничение на задержку и использовать ограничение при определении кадров, которые готовы для вывода. Таким образом, можно сократить запаздывание при проведении удаленной телеконференции с использованием настольных компьютеров, видеотелефонии, видеонаблюдении, передаче видео web-камерой и в других областях применения связи в режиме реального времени.
Некоторые из инноваций, предлагаемых в настоящей заявке, поясняются со ссылкой на синтаксические элементы и операции, характерные для стандарта H.264 и/или HEVC. Упомянутые инновации могут быть также реализованы для других стандартов или форматов.
В общем, возможны различные альтернативы примеров, описанных в настоящей заявке. Некоторые методики, описанные со ссылкой на логические блок-схемы последовательностей операций, можно изменять путем изменения порядка следования этапов, показанных на блок-схемах последовательностей операций способов, посредством разделения, повторения или пропуска некоторых этапов и т.п. Различные аспекты сокращения задержки при кодировании и декодировании видео можно использовать в комбинации или по отдельности. Различные варианты осуществления используют, по меньшей мере, один(одно) из описанных методик и средств. Некоторые из методик и средств, описанных в настоящей заявке, предназначены для решения, по меньшей мере, одной из проблем, упомянутых в разделе, посвященном уровню техники. Обычно данная(ое) методика/средство не решают все упомянутые проблемы.
I. Примерные вычислительные системы
На фигуре 1 изображен обобщенный пример подходящей компьютерной системы (100), в которой можно реализовать несколько из описанных методов и средств. Компьютерная система (100) не предполагает никакого ограничения области использования или функций, так как методы и средства можно реализовать в отличающихся универсальных или специализированных компьютерных системах.
Как показано на фигуре 1, компьютерная система (100) содержит, по меньшей мере, один процессор (110, 115) и память (120, 125). На фигуре 1 приведенная базовая конфигурация (130) обведена штриховой линией. Процессоры (110, 115) исполняют компьютерно-исполняемые команды. Процессор может быть универсальным центральным процессором (ЦП), процессором в специализированной интегральной схеме (ASIC) или процессором любого другого типа. В мультипроцессорной системе, несколько процессоров исполняют компьютерно-исполняемые команды для повышения производительности обработки данных. Например, на фигуре 1 показан центральный процессор (110), а также графический процессор или сопроцессор (115). Физическая память (120, 125) может быть энергозависимой памятью (например, регистрами, кэш-памятью, оперативной памятью (RAM)), энергонезависимой памятью (например, постоянной памятью (ROM), электрически стираемой программируемой постоянной памятью (EEPROM), флэш-памятью и т.п.) или некоторой комбинацией упомянутых двух видов памяти, доступной для процессора(ов). Память (120, 125) хранит программное обеспечение (180), реализующее, по меньшей мере, одну из инноваций для сокращения задержки при кодировании и декодировании видео, в форме компьютерно-исполняемых команд, подходящих для исполнения процессором(ами).
Компьютерная система может иметь дополнительные функциональные возможности. Например, компьютерная система (100) содержит запоминающее устройство (140), по меньшей мере, одно устройство (150) ввода, по меньшей мере, одно устройство (160) вывода и, по меньшей мере, одно соединение (170) связи. Механизм межкомпонентных соединений (не показанный), например шина, контроллер или сеть, соединяют между собой компоненты компьютерной системы (100). Обычно программное обеспечение операционной системы (не показанное) обеспечивает операционную среду для исполнения другого программного обеспечения в компьютерной системе (100) и координирует действия компонентов компьютерной системы (100).
Физическое запоминающее устройство (140) может быть съемным или несъемным и содержит магнитные диски, магнитные ленты или кассеты, постоянную память на компакт дисках (CD-ROM), цифровые видеодиски (DVD) или любой другой носитель, который можно использовать для хранения информации долговременным способом и к которому можно обращаться в компьютерной системе (100). Запоминающее устройство (140) хранит команды для программного обеспечения (180), реализующего, по меньшей мере, одну инновацию для сокращения задержки при кодировании и декодировании видео.
Устройство(а) (150) ввода может быть сенсорным устройством ввода, например клавиатурой, мышью, пером или трекболом, устройством речевого ввода, сканирующим устройством или другим устройством, которое обеспечивает ввод в компьютерную систему (100). При видеокодировании устройство(а) (150) ввода может быть камерой, видеокартой, платой телевизионного тюнера или подобным устройством, которое принимает входное видео в аналоговой или цифровой форме, или памятью CD-ROM, или перезаписываемым компакт-диском (CD-RW), который передает отсчеты видеоданных в компьютерную систему (100). Устройство(а) (160) вывода может быть дисплеем, принтером, акустическим устройством, устройством записи компакт-диска или другим устройством, которое обеспечивает вывод из компьютерной системы (100).
Соединение(ния) (170) связи дают возможность связи по среде передачи данных с другой компьютерной системой. Среда передачи данных передает такую информацию, как компьютерно-исполняемые команды, входные или выходные аудио- или видеоданные или другие данные в виде модулированного сигнала данных. Модулированный сигнал данных является сигналом, который имеет, по меньшей мере, одну из своих характеристик, установленную или изменяемую таким образом, чтобы кодировать информацию в сигнале. Например, и без ограничения, среды передачи данных могут использовать электрическую, оптическую, радиочастотную (РЧ) или другую несущую.
Методики и средства могут быть описаны в общем контексте компьютерно-считываемых носителей. Компьютерно-считываемые носители являются любыми существующими физическими носителями, к которым можно получать доступ в компьютерной среде. Например, и без ограничения, при использовании компьютерной системы (100), компьютерно-считываемые носители содержат память (120, 125), запоминающее устройство (140) и комбинации из любых упомянутых устройств.
Методы и средства могут быть описаны в общем контексте компьютерно-исполняемых команд, например команд, содержащихся в программных модулях, исполняемых в компьютерной системе в целевом реальном или виртуальном процессоре. В общем, программные модули содержат подпрограммы, программы, библиотеки, объекты, классы, компоненты, структуры данных и т.п., которые выполняют конкретные задачи или реализуют конкретные абстрактные типы данных. Функции программных модулей можно объединять или разделять между программными модулями, как требуется в различных вариантах осуществления. Компьютерно-исполняемые команды для программных модулей могут исполняться в локальной или распределенной компьютерной системе.
Термины «система» и «устройство» применяются в настоящей заявке с возможностью взаимной замены. Если контекст не указывает прямо на иное, ни один термин не подразумевает никакого ограничения типа компьютерной системы или компьютерного устройства. В общем, компьютерная система или компьютерное устройство могут быть локальными или распределенными и могут содержать/включать в себя любую комбинацию специализированного аппаратного обеспечения и/или универсального аппаратного обеспечения с программным обеспечением, реализующим функции, описанные в настоящей заявке.
Для удобства представления, в подробном описании применяются термины типа терминов «определять» и «использовать» для описания операций в компьютерной системе. Упомянутые термины являются высокоуровневыми абстракциями операций, выполняемых компьютерами, и не должны смешиваться с действиями, выполняемыми человеком. Фактические операции компьютера, соответствующие упомянутым терминам изменяются в зависимости от осуществления.
II. Примерные сетевые среды
На фигурах 2a и 2b изображены примерные сетевые среды (201, 202), которые содержат видеокодеры (220) и видеодекодеры (270). Кодеры (220) и декодеры (270) соединены по сети (250), с использованием соответствующего протокола связи. Сеть (250) может содержать сеть Internet или другую компьютерную сеть.
В сетевой среде (201), показанной на фигуре 2a, каждое средство (210) связи в режиме реального времени («RTC») содержит как кодер (220), так и декодер (270) для двунаправленной связи. Данный кодер (220) может формировать выходные данные, соответствующие стандарту SMPTE 421M, стандарту ISO-IEC 14496-10 (известному также как стандарт H.264 или AVC (усовершенствованное видеосжатие), стандарту HEVC другому стандарту или специализированному формату, при этом соответствующий декодер (270) принимает кодированные данные из кодера (220). Двунаправленная связь может быть частью видеоконференции, видеотелефонного вызова или другого сценария двухсторонней связи. Хотя сетевая среда (201), показанная на фигуре 2a, содержит два средства (210) связи в режиме реального времени, сетевая среда (201) может содержать, по меньшей мере, три средства (210) связи в режиме реального времени, которые участвуют в связи между несколькими сторонами.
Средство (210) связи в режиме реального времени управляет кодированием, выполняемым кодером (220). На фигуре 3 представлена примерная кодирующая система (300), которая может быть включена в состав средства (210) связи в режиме реального времени. В альтернативном варианте, средство (210) связи в режиме реального времени использует другую кодирующую систему. Средство (210) связи в режиме реального времени управляет также декодированием, выполняемым декодером (270). На фигуре 4 показана примерная декодирующая система (400), которая может быть включена в состав средства (210) связи в режиме реального времени. В альтернативном варианте, средство (210) связи в режиме реального времени использует другую декодирующую систему.
В сетевой среде (202), показанной на фигуре 2b, кодирующее средство (212) содержит кодер (220), который кодирует видео для доставки в несколько средств (214) воспроизведения, которые содержат декодеры (270). Для системы видеонаблюдения, системы контроля с web-камерами, презентации удаленной телеконференции с использованием настольных компьютеров или в другом сценарии, в котором видео кодируется и передается из одного места в, по меньшей мере, одно другое место, можно обеспечивать однонаправленную связь. Хотя сетевая среда (202), показанная на фигуре 2b, содержит два средства (214) воспроизведения, сетевая среда (202) может содержать больше или меньше средств (214) воспроизведения. В общем, средство (214) воспроизведения обменивается информацией с кодирующим средством (212), чтобы определять поток видео для получения средством (214) воспроизведения. Средство (214) воспроизведения принимает поток, буферизует принятые кодированные данные в течение подходящего периода и начинает декодирование и воспроизведение.
На фигуре 3 показана примерная кодирующая система (300), которая может быть включена в состав кодирующего средства (212). В альтернативном варианте, кодирующее средство (212) использует другую кодирующую систему. Кодирующее средство (212) может также содержать логику контроллера на стороне сервера для управления соединениями с, по меньшей мере, одним средством (214) воспроизведения. На фигуре 4 показана примерная декодирующая система (400), которую можно включить в состав средства (214) воспроизведения. В альтернативном варианте, средство (214) воспроизведения использует другую декодирующую систему. Средство (214) воспроизведения может также содержать логику контроллера на стороне клиента для управления соединениями с кодирующим средством (212).
В некоторых случаях использование синтаксического элемента для указания задержки (например, задержки переупорядочивания кадров) характерно для конкретного стандарта или формата. Например, кодированные данные могут содержать, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку в виде части синтаксиса элементарного кодированного видеопотока, заданного в соответствии со стандартом или форматом, или в виде заданных метаданных мультимедиа, относящихся к кодированным данным. В упомянутых случаях средство (210) связи в режиме реального времени, кодирующее средство (212) и/или средство (214) воспроизведения с сокращенной задержкой может зависеть от кодека в том, что решения, которые они составляют, могут зависеть от синтаксиса двоичного потока для конкретного стандарта или формата.
В других случаях использование синтаксического элемента для указания ограничения на задержку (например, задержку переупорядочивания кадров) не зависит от конкретного стандарта или формата. Например, о синтаксическом(их) элементе(ах), который(ые) указывает(ют) ограничение на задержку, может сообщаться как о составной части синтаксиса потока передачи мультимедиа, файла хранения мультимедиа или, в общем, мультиплексирующего протокола или транспортного протокола системы передачи мультимедийных данных. Или синтаксический(ие) элемент(ы), который(ые) указывает(ют) задержку, могут быть согласованы между средствами (210) связи в режиме реального времени, кодирующими средствами (212) и/или средствами (214) воспроизведения в соответствии с протоколом согласования свойств мультимедиа. В упомянутых случаях средство (210) связи в режиме реального времени, кодирующее средство (212) и средство (214) воспроизведения с сокращенной задержкой могут не зависеть от кодека в том, что упомянутые средства могут работать с любыми существующими кодером и декодером видео, в предположении некоторого уровня управления межкадровыми зависимостями, устанавливаемыми в процессе кодирования.
III. Примерные кодирующие системы
На фигуре 3 приведена блок-схема примерной кодирующей системы (300), в связи с которой могут быть реализованы некоторые описанные варианты осуществления. Кодирующая система (300) может быть универсальным кодирующим средством, способным работать в любом из нескольких режимов кодирования, например режиме кодирования с малой задержкой для связи в режиме реального времени, режиме перекодировки и нормальном режиме кодирования для воспроизведения мультимедиа из файла или потока, или упомянутая система может быть специализированным кодирующим средством, адаптированным для одного упомянутого режима кодирования. Кодирующая система (300) может быть выполнена в виде модуля операционной системы, в виде составной части библиотеки приложений или в виде автономного приложения. В общем, кодирующая система (300) принимает последовательность исходных видеокадров (311) из источника (310) видео и создает кодированные данные для вывода в канал (390). Кодированные данные, выводимые в канал, могут содержать, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, задержку переупорядочивания кадров) для поддержки декодирования с сокращенной задержкой.
Источник (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) для управления памятью. Если текущий кадр является не первым кадром, который был кодирован, то при выполнении процесса его кодирования кодер (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 или другим форматом.
Кодированные кадры (341) и управляющие сигналы (342) для управления памятью подвергаются обработке эмулятором (350) процесса декодирования. Эмулятор (350) процесса декодирования реализует некоторые функции декодера, например задачи декодирования для реконструкции опорных кадров, которые используются кодером (340) при оценке параметров и компенсации движения. Эмулятор (350) процесса декодирования использует управляющие сигналы (342) для управления памятью для определения, нуждается ли данный кодированный кадр (341) в реконструкции и сохранении для использования в качестве опорного кадра при межкадровом предсказании последующих кадров, подлежащих кодированию. Если управляющие сигналы (342) указывают, что кодированный кадр (341) нуждается в сохранении, то эмулятор (350) процесса декодирования моделирует процесс декодирования, который будет проведен декодером, который получает кодированный кадр (341) и формирует соответствующий декодированный кадр (351). При этом, когда кодер (340) использовал декодированный(ые) кадр(ы) (369), которые были сохранены в области (360) памяти декодированных кадров, эмулятор (350) процесса декодирования также использует декодированный(ые) кадр(ы) (369) из области (360) памяти в качестве части процесса декодирования.
Область (360) памяти временного хранения декодированных кадров содержит несколько областей (321, 322, …, 32n) памяти кадровых буферов. Эмулятор (350) процесса декодирования использует управляющие сигналы (342) для управления памятью, чтобы управлять содержимым области (360) памяти для идентификации любых кадровых буферов (361, 362 и т.п.) с кадрами, которые больше не нужны кодеру (340) для использования в качестве опорных кадров. После моделирования процесса декодирования эмулятор (350) процесса декодирования сохраняет недавно декодированный кадр (351) в кадровом буфере (361, 362 и т.п.), который был идентифицирован упомянутым образом.
Кодированные кадры (341) и управляющие сигналы (342) для управления памятью буферизуются также во временной области (370) кодированных данных. Кодированные данные, которые агрегируются в области (370) кодированных данных, могут содержать, в виде составной части синтаксиса элементарного кодированного видеопотока, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку. Или кодированные данные, которые агрегируются в области (370) кодированных данных, могут содержать синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку, в виде составной части метаданных мультимедиа, относящихся к кодированным видеоданным (например, в качестве, по меньшей мере, одного параметра в, по меньшей мере, одном сообщении о дополнительной расширенной информации («SEI») или сообщении об информации применимости видео («VUI»)).
Агрегированные данные (371) из временной области (370) кодированных данных обрабатываются канальным кодером (380). Канальный кодер (380) может пакетировать агрегированные данные для передачи в виде потока мультимедиа, при этом канальный кодер (380) может добавлять, в виде составной части синтаксиса потока передачи мультимедиа, синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку. Или канальный кодер (380) может организовать агрегированные данные для хранения в виде файла, при этом канальный кодер (380) может добавлять, в виде составной части синтаксиса файла хранения мультимедиа, синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку. Или, в обобщенном случае, канальный кодер (380) может реализовать, по меньшей мере, один из мультиплексирующего протокола или транспортного протокола системы передачи мультимедийных данных, при этом канальный кодер (380) может добавлять, в виде составной части синтаксиса протокола(ов), синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку. Канальный кодер (380) обеспечивает вывод в канал (390), который представляет собой запоминающее устройство, соединение связи или другой канал для вывода.
IV. Примерные декодирующие системы
На фигуре 4 показана блок-схема примерной декодирующей системы (400), в связи с которой могут быть реализованы некоторые описанные варианты осуществления. Декодирующая система (400) может быть универсальным декодирующим средством, способным работать в любом из нескольких режимов декодирования, например режиме декодирования с малой задержкой для связи в режиме реального времени и нормальном режиме декодирования для воспроизведения мультимедиа из файла или потока, или упомянутая система может быть специализированным декодирующим средством, адаптированным для одного упомянутого режима декодирования. Декодирующая система (400) может быть выполнена в виде модуля операционной системы, в виде составной части библиотеки приложений или в виде автономного приложения. В общем, декодирующая система (400) принимает кодированные данные из канала (410) и формирует реконструированные кадры в качестве выходных данных для приемника (490) выходных данных. Кодированные данные могут содержать, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, задержку переупорядочивания кадров) для поддержки декодирования с сокращенной задержкой.
Декодирующая система (400) содержит канал (410), который может представлять собой запоминающее устройство, соединение связи или другой канал для кодированных данных в качестве входных данных. Канал (410) формирует кодированные данные, которые кодированы в канале. Канальный декодер (420) может обрабатывать кодированные данные. Например, канальный декодер (420) распаковывает данные, которые были агрегированы для передачи в виде потока мультимедиа, при этом канальный декодер (420) может посредством анализа выявлять в качестве составной части синтаксиса потока передачи мультимедиа, синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку. Или канальный декодер (420) разделяет кодированные видеоданные, которые были агрегированы для хранения в виде файла, при этом канальный декодер (420) может выявлять посредством анализа, в качестве составной части синтаксиса файла хранения мультимедиа, синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку. Или, в общем, канальный декодер (420) может реализовать, по меньшей мере, один демультиплексирующий протокол или транспортный протокол системы передачи мультимедийных данных, при этом канальный декодер (420) может выявлять посредством анализа, в качестве составной части синтаксиса протокола(ов), синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку.
Кодированные данные (421), которые выводятся из канального декодера (420) сохраняются во временной области (430) кодированных данных, пока не получено достаточное количество упомянутых данных. Кодированные данные (421) содержат кодированные кадры (431) и управляющие сигналы (432) для управления памятью. Кодированные данные (421) в области (430) кодированных данных могут содержать, в качестве части синтаксиса элементарного кодированного видеопотока, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку. Или кодированные данные (421) в области (430) кодированных данных могут содержать синтаксический(ие) элемент(ы), который(ые) указывает(ют) ограничение на задержку, в виде составной части метаданных мультимедиа, относящихся к кодированным видеоданным (например, в качестве, по меньшей мере, одного параметра в, по меньшей мере, одном сообщении SEI (о дополнительной расширенной информации) или сообщении VUI (об информации применимости видео). В общем, область (430) кодированных данных временно сохраняет кодированные данные (421), пока упомянутые кодированные данные (421) не используются декодером (450). Тогда кодированные данные для кодированного кадра (431) и управляющие сигналы (432) для управления памятью передаются их области (430) кодированных данных в декодер (450). По мере того как декодирование продолжается, в область (430) кодированных данных вводятся новые кодированные данные и кодированные данные, дольше всех остающиеся в области (430) кодированных данных, передаются в декодер (450).
Декодер (450) периодически декодирует кодированный кадр (431) для формирования соответствующего декодированного кадра (451). По мере необходимости, при выполнении процесса декодирования, декодер (450) может использовать, по меньшей мере, один ранее декодированный кадр (469) в качестве опорного кадра для межкадрового предсказания. Декодер (450) считывает упомянутые ранее декодированные кадры (469) из области (460) памяти временного хранения декодированных кадров. В общем, декодер (450) содержит несколько декодирующих модулей, которые выполняют задачи декодирования, например статистическое декодирование, обратное квантование, обратные преобразования частоты и компенсацию движения. Точные операции, выполняемые декодером (450), могут изменяться в зависимости от формата сжатия.
Область (460) памяти временного хранения декодированных кадров содержит несколько областей (461, 462,..., 46n) памяти кадровых буферов. Область (460) памяти декодированных кадров является примером буфера декодированных изображений. Декодер (450) использует управляющие сигналы (432) для управления памятью, чтобы идентифицировать кадровый буфер (461, 462 и т.п.), в котором декодер может сохранять декодированный кадр (451). Декодер (450) сохраняет декодированные кадры (451) в упомянутом кадровом буфере.
Модуль (480) выходного упорядочивания использует управляющие сигналы (432) для управления памятью, чтобы идентифицировать, когда следующий кадр, подлежащий формированию в порядке вывода, доступен в области (460) памяти декодированных кадров. Для сокращения задержки кодирующей-декодирующей системы модуль (480) выходного упорядочивания использует синтаксические элементы, которые указывают ограничения на задержку, для ускорения идентификации кадров, подлежащих формированию в порядке вывода. Когда следующий кадр (481), подлежащий формированию в порядке вывода, доступен в области (460) памяти декодированных кадров, упомянутый кадр считывается модулем (480) выходного упорядочивания и выводится в приемник (490) выходных данных (например, дисплей). В общем, порядок, в котором кадры выводятся модулем (480) выходного упорядочивания из области (460) памяти декодированных кадров, может отличаться от порядка, в котором кадры декодированы декодером (450).
V. Синтаксические элементы, которые поддерживают кодирование и декодирование с сокращенной задержкой
В большинстве систем видеокодеков порядок кодирования (называемый также порядком декодирования или порядком двоичного потока) является порядком, в котором видеокадры представлены в виде кодированных данных в двоичном потоке и, следовательно, обрабатываются в процессе декодирования. Порядок кодирования может отличаться от порядка, в котором кадры фиксируются камерой перед кодированием, и отличаться от порядка, в котором декодированные кадры отображаются, сохраняются или иначе выводятся после декодирования (порядка вывода или порядка отображения). Переупорядочивание кадров относительно порядка вывода дает преимущества (в основном, с точки зрения возможности сжатия), но увеличивает сквозную задержку процессов кодирования и декодирования.
Методики и средства, описанные в настоящей заявке, сокращают задержку, обусловленную переупорядочиванием видеокадров, посредством обеспечения информации об ограничениях на задержку переупорядочивания для декодирующих систем, поддерживают также сокращение задержки декодирующими системами. Упомянутое сокращение задержки полезно для достижения многих целей. Например, сокращение задержки можно применить для сокращения временного запаздывания, которое имеет место в интерактивной видеосвязи с использованием системы видеоконференцсвязи, чтобы ускорить и сделать естественнее диалоговый поток и интерактивность связи между удаленными участниками.
A. Подходы к синхронизации вывода и упорядочиванию вывода
В соответствии со стандартом H.264 декодер может использовать два подхода к определению, когда декодированный кадр готов к выводу. Декодер может использовать данные синхронизации в форме временных меток декодирования и временных меток вывода (например, указываемых в сообщениях SEI (дополнительной расширенной информации) о синхронизации изображений). Или декодер может использовать пределы объема буферизации, указываемые различными синтаксическими элементами для определения, когда декодированный кадр готов к выводу.
Данные синхронизации могут относиться к каждому декодированному кадру. Декодирование может использовать данные синхронизации для определения, когда можно выводить декодированный кадр. Однако на практике упомянутые данные синхронизации могут быть недоступны для декодера. Кроме того, даже когда данные синхронизации имеются в наличии, некоторые декодеры фактически не используют упомянутые данные (например, потому, что декодер выполнен с возможностью работы независимо от того, существуют ли данные синхронизации).
Пределы объема буферизации обозначаются несколькими синтаксическими элементами в соответствии со стандартом H.264 (и черновыми версиями стандарта HEVC), в том числе синтаксическим элементом max_dec_frame_buffering, синтаксическим элементом num_reorder_frames, взаимосвязанными данными упорядочивания (называемыми информацией о «порядковом номере изображения») и другой управляющей информацией для управления памятью, указанной в двоичном потоке. Синтаксический элемент max_dec_frame_buffering (или производная переменная, задаваемая как MaxDpbFrames) задает требуемый размер буфера декодированных изображений («DPB») в единицах кадровых буферов. По существу, синтаксический элемент max_dec_frame_buffering устанавливает объем памяти верхнего уровня, используемый для кодированной видеопоследовательности, чтобы предоставлять декодеру возможность вывода изображений в правильном порядке. Синтаксический элемент num_reorder_frames (или max_num_reorder_frames) указывает максимальное число кадров (или дополняющих пар полей, или непарных полей), которые могут предшествовать любому кадру (или дополняющей паре полей, или непарному полю) в порядке кодирования и следовать за ним в порядке вывода. Иначе говоря, num_reorder_frames задает ограничение на объем памяти, необходимый для переупорядочивания изображений. Синтаксический элемент max_num_ref-frames задает максимальное число кратковременных и долговременных опорных кадров (или дополняющих опорных пар полей, или непарных опорных полей), которые могут быть использованы процессом декодирования для межкадрового предсказания любого изображения в последовательности. Синтаксический элемент max_num_ref_frames определяет также размер скользящего окна для маркировки декодированных опорных изображений. Подобно num_reorder_frames, синтаксический элемент max_num_ref_frames задает ограничение на необходимый объем памяти.
Декодер использует синтаксические элементы max_dec_frame_buffering (или MaxDpbFrames) и num_reorder_frames для определения состояния, когда превышен предел объема буферизации. Такое происходит, например, когда новый декодированный кадр требуется сохранить в DPB (буфере декодированных изображений), но в буфере DPB больше не остается пространства. В приведенной ситуации декодер использует информацию о порядковом номере изображения, чтобы идентифицировать среди изображений, которые уже декодированы, изображение, которое является наиболее ранним в порядке вывода. Затем изображение, которое является наиболее ранним в порядке вывода, выводится. Приведенную обработку данных иногда называют «выталкиванием» потому, что изображение «выталкивается» из буфера DPB при поступлении нового изображения, которое требуется сохранить.
Информации, указываемой синтаксическими элементами max_dec_frame_buffering (или MaxDpbFrames) и num_reorder_frames, достаточно для определения объема памяти, необходимой в декодере. Однако при применении для управления процессом «выталкивания» для вывода изображений использование упомянутой информации может вводить чрезмерную задержку. Как определено в стандарте H.264, синтаксические элементы max_dec_frame_buffering и num_reorder_frames не устанавливают предела для величины переупорядочивания, который можно применить к любому конкретному изображению, и, следовательно, не устанавливают предела сквозной задержки. Независимо от значений упомянутых синтаксических элементов, конкретное изображение может храниться в буфере DPB в течение произвольно длительного времени до того, как оно выводится, что соответствует значительной задержке, вносимой предварительной буферизацией исходных изображений кодером.
B. Синтаксические элементы, которые указывают ограничения на задержку переупорядочивания
Методики и средства, описанные в настоящей заявке, сокращают задержку в системе видеосвязи. Кодирующее средство, средство связи в режиме реального времени или другое средство устанавливает предел протяженности переупорядочивания, который можно применить к любому кадру в кодированной видеопоследовательности. Например, лимит устанавливается в виде числа кадров, которое может предшествовать любому данному кадру в кодированной видеопоследовательности в порядке вывода и следовать за ним в порядке кодирования. Предел ограничивает задержку переупорядочивания, допустимую для любого конкретного кадра в последовательности. Другими словами, предел ограничивает временную протяженность переупорядочивания (в пересчете на кадры) между порядком кодирования и порядком вывода, которую можно применить к любому конкретному кадру. Ограничение протяженности переупорядочивания помогает сократить сквозное запаздывание. Установление упомянутого предела может быть также полезно в протоколах согласования систем режима реального времени или спецификациях приложений для сценариев применения, в которых важно сократить задержку.
По меньшей мере, один синтаксический элемент указывает ограничение на задержку переупорядочивания кадров. Указание ограничения на задержку переупорядочивания кадров облегчает согласование на системном уровне при интерактивной связи в режиме реального времени или в других сценариях применения. Упомянутое указание обеспечивает способ непосредственной установки ограничений на задержку переупорядочивания кадров и характеризует свойства потока или сеанса мультимедиа.
Декодер видео может использовать указанное ограничение на задержку переупорядочивания кадров, чтобы создавать возможность вывода с сокращенной задержкой декодированных видеокадров. В частности, в сравнении с процессами «выталкивания» кадров указание ограничения на задержку переупорядочивания кадров позволяет декодеру проще и быстрее идентифицировать кадры в буфере DPB, которые готовы для вывода. Например, декодер может определять состояние задержки кадра в буфере DPB посредством вычисления разности между порядком кодирования для кадра и порядком вывода. Посредством сравнения состояния задержки кадра с ограничением на задержку переупорядочивания кадров декодер может определять, когда было достигнуто ограничение на задержку переупорядочивания кадров. Декодер может немедленно вывести любой кадр, который достиг упомянутого предела. Данная возможность может придать декодеру способность быстрее идентифицировать кадры, которые готовы для вывода, в сравнении с процессами «выталкивания», которые используют множество разнообразных синтаксических элементов и структур отслеживания. Таким образом, декодер может быстро (и раньше) определять, когда можно выводить декодированный кадр. Чем быстрее (и раньше) декодер может идентифицировать, когда можно выводить кадры, тем быстрее (и раньше) декодер может выдавать видео на дисплей или последующие этапы обработки.
Следовательно, посредством применения ограничения на задержку переупорядочивания кадров декодер может начинать вывод кадров из области памяти декодированных кадров до того, как область памяти декодированных кадров становится целиком заполненной, но продолжает обеспечивать согласованное декодирование (т.е. такое декодирование всех кадров, чтобы кадры точно по битам совпадали с кадрами, декодированными с использованием другой, обычной схемы). Приведенное решение значительно сокращает запаздывание, когда запаздывание (в кадрах), указанное синтаксическим элементом задержки, намного меньше, чем размер (в кадрах) области памяти декодированных кадров.
<mrow><msubsup><mi>F</mi><mi>j</mi><mi>k</mi></msubsup></mrow>
На фигурах 5a-5e показаны серии (501-505) кадров с разными межкадровыми зависимостями. Серии характеризуются разными значениями для (1) ограничения на объем памяти, необходимый для переупорядочивания изображений (то есть число кадровых буферов, используемых для хранения опорных кадров с целью переупорядочивания, например, как указано синтаксическим элементом num_reorder_frames, и (2) ограничения на задержку переупорядочивания кадров, например, как указано переменной MaxLatency Frames. На фигурах 5a-5e, для данного кадра
, подстрочный знак j указывает позицию кадра в порядке вывода и надстрочный знак k указывает позицию кадра в порядке кодирования. Кадры показаны в порядке вывода, а именно значение подстрочного знака порядка вывода возрастает слева направо. Стрелки показывают межкадровые зависимости для компенсации движения, в соответствии с которыми предшествующие кадры в порядке кодирования используются для предсказания последующих кадров в порядке кодирования. Для простоты, на фигурах 5a-5e показаны межкадровые зависимости на уровне кадров (а не на уровне макроблоков, блоков и т.п., на котором опорные кадры могут изменяться), и на фигурах 5a-5e показано, максимум, два кадра в качестве опорных кадров для данного кадра. На практике в некоторых вариантах осуществления разные макроблоки, блоки и т.п. в данном кадре могут использовать разные опорные кадры, и для данного кадра возможно использование, по меньшей мере, трех опорных кадров.
8
0
8
0
0
8
1
8
0
0
0
0
1
1
8
1
0
1
0
0
1
2
1
0
0
0
0
2
2
1
На фигуре 5a серия (501) содержит девять кадров. Последний кадр F  в порядке вывода использует первый кадр F  в качестве опорного кадра. Другие кадры в серии (501) используют как последний кадр F , так и первый кадр F  в качестве опорных кадров. Вышесказанное означает, что декодируются сначала кадр F , затем кадр F , затем кадр F  и т.п. В серии (501), показанной на фигуре 5a, значение num_reorder_frames равно 1. В любой момент в процессе обработки декодирующей системой, из кадров, показанных на фигуре 5a, в области памяти декодированных данных хранится только один кадр (F ) с целью переупорядочивания. (Первый кадр F  также используется как опорный кадр и сохраняется, но сохраняется не с целью переупорядочивания. Поскольку позиция порядка вывода для первого кадра F  меньше, чем позиция порядка вывода промежуточных кадров, то первый кадр F  на считается в целях num_reorder_frames.) Несмотря на небольшое значение для num_reorder_frames, серия (501) характеризуется относительно большой задержкой, так как значение переменной MaxLatencyFrames равно нулю 7. После кодирования первого кадра F , кодер ожидает, пока не буферизует еще восемь исходных кадров до кодирования следующего кадра F  в порядке вывода, так как следующий кадр F  зависит от последнего кадра F  в серии (501). Значение переменной MaxLatencyFrames является фактически максимально допустимой разностью между значением подстрочного знака и значением надстрочного знака для любого конкретного кодированного кадра.
На фигуре 5b серия (502) содержит девять кадров, как в серии (501) на фигуре 5a, но межкадровые зависимости отличаются. Временное переупорядочивание кадров происходит в течение коротких протяженностей. В результате серия (502) характеризуется намного меньшей задержкой, то есть значение MaxLatencyFrames равно 1. Значение num_reorder_frames по-прежнему равно 1.
На фигуре 5c серия (503) содержит десять кадров. Самая длинная межкадровая зависимость короче (по временной протяженности), чем самая длинная межкадровая зависимость на фигуре 5a, но длиннее, чем самая длинная межкадровая зависимость на фигуре 5b. Серия (503) имеет такое же небольшое значение 1 для num_reorder_frames, и данная серия имеет относительно небольшое значение 2 для переменной MaxLatencyFrames. Поэтому серия (503) допускает меньшую сквозную задержку, чем серия (501) на фигуре 5a, хотя и не такую короткую, как допустимая задержка серии (502) на фигуре 5b.
0
8
4
0
8
8
0
1
2
0
1
1
На фигуре 5d серия (504) содержит кадры, организованные во временной иерархии с временными уровнями в соответствии с межкадровыми зависимостями. Самый низкий уровень разрешения по времени содержит первый кадр F  и последний кадр F . Следующий уровень разрешения по времени добавляет кадр F , который зависит от первого кадра F  и последнего кадра F . Самый высокий уровень разрешения по времени добавляет остальные кадры. Серия (504), показанная на фигуре 5d, имеет относительно небольшое значение 2 для num_reorder_frames, но относительно большое значение 7 для MaxLatencyFrames, по меньшей мере, для самого высокого уровня разрешения по времени, вследствие разности между порядком кодирования и порядком вывода для последнего кадра F . Если декодируется только промежуточный уровень разрешения по времени или самый низкий уровень разрешения по времени, то ограничение на запаздывание переупорядочивания кадров можно сократить до 1 (для промежуточного уровня) или 0 (для самого низкого уровня). Для поддержки декодирования с сокращенной задержкой при различных разрешениях по времени синтаксические элементы могут указывать ограничения на задержку переупорядочивания кадров для разных уровней во временной иерархии.
0
4
8
2
0
4
6
4
8
4
8
0
1
5
2
0
1
6
1
5
1
5
На фигуре 5e серия (505) содержит кадры, организованные во временной иерархии с тремя уровнями по времени в соответствии с разными межкадровыми зависимостями. Самый низкий уровень разрешения по времени содержит первый кадр F , средний кадр F  и последний кадр F . Следующий уровень разрешения по времени добавляет кадры F  (который зависит от первого кадра F  и среднего кадра F ) и F  (который зависит от среднего кадра F  и последнего кадра F ). Самый высокий уровень разрешения по времени добавляет остальные кадры. В сравнении с серией (504) на фигуре 5d серия (505) на фигуре 5e по-прежнему имеет относительно небольшое значение 2 для num_reorder_frames, но относительно меньшее значение 3 для MaxLatencyFrames, по меньшей мере, для самого высокого уровня разрешения по времени, вследствие разности между порядком кодирования и порядком вывода для среднего кадра F  и последнего кадра F . Если декодируется только промежуточный уровень разрешения по времени или самый низкий уровень разрешения по времени, то ограничение на запаздывание переупорядочивания кадров можно сократить до 1 (для промежуточного уровня) или 0 (для самого низкого уровня).
В примерах, показанных на фигурах 5a-5e, если значение MaxLatencyFrames известно, то декодер может идентифицировать некоторые кадры как готовые для немедленного вывода при получении предыдущего кадра в порядке вывода. Для данного кадра значение позиции кадра в порядке вывода за вычетом значения позиции кадра в порядке кодирования может быть равно значению MaxLatencyFrames. В данном случае данный кадр готов для вывода, как только получен кадр, предшествующий данному кадру в порядке вывода. (Напротив, упомянутые кадры невозможно идентифицировать как готовые для вывода, с использованием только num_reorder_frames, пока не получены дополнительные кадры или не достигнут конец последовательности.) В частности, декодер может использовать значение MaxLatencyFrames, чтобы допускать более ранний вывод следующих кадров:
8
1
В серии (501) на фигуре 5a, кадр F .
4
6
8
3
5
7
В серии (502) на фигуре 5b, кадры F , F  и F .
3
6
9
1
4
7
В серии (503) на фигуре 5c, кадры F , F  и F .
8
1
В серии (504) на фигуре 5d, кадр F .
4
8
1
5
В серии (505) на фигуре 5e, кадры F  и F .
Кроме того, объявление или согласование значения MaxLatencyFrames на системном уровне может обеспечивать сводное указание характеристик задержки двоичного потока или сеанса таким способом, который невозможен при измерении объема запоминающего устройства для переупорядочивания и указании упомянутого объема с использованием num_reorder_frames.
C. Примерные варианты осуществления
Синтаксические элементы, которые указывают ограничение на задержку переупорядочивания кадров, могут быть указаны различными способами, в зависимости от варианта осуществления. Синтаксические элементы могут быть указаны в виде составной части набора параметров последовательности («SPS»), набора параметров изображения («PPS») или другого элемента двоичного потока, указаны в виде составной части сообщений SEI (о дополнительной расширенной информации), сообщений VUI (об информации применимости видео) или других метаданных или указаны некоторым другим способом. В любом из вариантов осуществления синтаксический элемент, указывающий значение ограничения, может быть закодирован с использованием беззнакового экспоненциального кода Голомба, статистического кода какой-то другой формы или кода постоянной длины и после этого указан. Декодер выполняет соответствующее декодирование после получения синтаксического элемента.
В первом варианте осуществления указывается флаг max_latency_limitation_flag. Если флаг имеет первое двоичное значение (например, 0), то никакого ограничения на задержку переупорядочивания кадров не налагается. В данном случае значение синтаксического элемента max_latency_frames не указано или не учитывается. В противном случае (флаг имеет второе двоичное значение, например 1), значение синтаксического элемента max_latency_frames указывается для указания ограничения на задержку переупорядочивания кадров. Например, в данном случае значение, указанное для синтаксического элемента max_latency_frames, может быть любым неотрицательным целым значением.
32
Во втором варианте осуществления указывается синтаксический элемент max_latency_frames_plus1 для указания ограничения на задержку переупорядочивания кадров. Если max_latency_frames_plus1 имеет первое значение (например, 0), то никакого ограничения на задержку переупорядочивания кадров не налагается. При других значениях (например, ненулевых значениях) значение ограничения на задержку переупорядочивания кадров устанавливается равным max_latency_frames_plus1 - 1. Например, значение max_latency_frames_plus1 находится в диапазоне от 0 до 2-2 включительно.
Аналогично, в третьем варианте осуществления указывается синтаксический элемент max_latency_frames для указания ограничения на задержку переупорядочивания кадров. Если max_latency_frames имеет первое значение (например, максимальное значение), то никакого ограничения на задержку переупорядочивания кадров не налагается. Для других значений (например, значений меньше, чем максимальное значение), значение ограничения на задержку переупорядочивания кадров устанавливается равным max_latency_frames.
32
В четвертом варианте осуществления ограничение на задержку переупорядочивания кадров указывается относительно максимального размера памяти кадров. Например, ограничение задержки указывается как увеличение относительно синтаксического элемента num_reorder_frames. Обычно ограничение на задержку переупорядочивания кадров (в пересчете на кадры) больше чем или равно num_reorder_frames. Для экономии битов при указании ограничения задержки разность между ограничением задержки и num_reorder_frames кодируется (например, с использованием беззнакового экспоненциального кода Голомба, статистического кода какой-то другой формы) и после этого указывается. Синтаксический элемент max_latency_increase_plus1 указывается для указания ограничения на задержку переупорядочивания кадров. Если max_latency_increase_plus1 имеет первое значение (например, 0), то никакого ограничения на задержку переупорядочивания кадров не налагается. При других значениях (например, ненулевых значениях) значение ограничения на задержку переупорядочивания кадров устанавливается равным num_reorder_frames + max_latency_increase_plus1 - 1. Например, значение max_latency_increase_plus1 находится в диапазоне от 0 до 2-2 включительно.
В альтернативном варианте, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку переупорядочивания кадров, указывается другим способом.
D. Другие способы указания ограничений на задержку
Во многих из предыдущих примеров ограничение задержки является ограничением на задержку переупорядочивания кадров, которое выражается в виде числа кадров. В общем, ограничение на задержку является ограничением на запаздывание, которое может быть выражено в виде числа кадров или выражено в виде секунд, миллисекунд или другой величины измерения времени. Например, ограничение на задержку может быть выражено в виде абсолютной величины измерения времени, например, как 1 секунда или 0,5 секунд. Кодер может преобразовывать упомянутую меру времени в число кадров (с учетом частоты кадров видео), затем кодировать видео так, чтобы межкадровые зависимости между несколькими кадрами видеопоследовательности соответствовали числу кадров. Или, независимо от переупорядочивания кадров и межкадровых зависимостей, кодер может использовать меру времени для ограничения протяженности, до которой используют запаздывание, чтобы сглаживать кратковременные флуктуации скорости передачи кодированного видео, сложности кодирования, пропускной способности сети и т.п. Декодер может использовать величину измерения времени для определения, когда кадр может быть выведен из буфера декодированных изображений.
Ограничение на задержку можно согласовать между передающей стороной и приемной стороной таким образом, чтобы сбалансировать ответную реакцию (отсутствие запаздывания) со способностью сглаживать кратковременные флуктуации скорости передачи кодированного видео, способностью сглаживать кратковременные флуктуации сложности кодирования, способностью сглаживать кратковременные флуктуации пропускной способности сети и/или других факторов, которые извлекают пользу от увеличения запаздывания. При упомянутом согласовании, возможно, полезно установить и характеризовать ограничение на задержку таким способом, который не зависит от частоты кадров. В таком случае ограничение можно применять в процессе кодирования и декодирования, с учетом частоты кадров видео. Или ограничение можно применять в процессе кодирования и декодирования, независимо от частоты кадров видео.
E. Обобщенные методики установки и вывода синтаксических элементов
На фигуре 6 представлена примерная методика (600) установки и вывода синтаксических элементов, которые поддерживают декодирование с сокращенной задержкой. Например, средство связи в режиме реального времени или кодирующее средство, описанное со ссылкой на фигуры 2a и 2b, выполняет методику (600). В альтернативном варианте, другое средство выполняет методику (600).
Сначала средство устанавливает (610), по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, задержку переупорядочивания кадров, задержку в пересчете на величину измерения времени), соответствующую межкадровым зависимостям между несколькими кадрами видеопоследовательности. Когда средство содержит видеокодер, то такое же средство может также получать кадры, кодировать кадры для формирования кодированных данных (с использованием межкадровых зависимостей, которые соответствуют ограничению на задержку переупорядочивания кадров) и выводить кодированные данные для записи в память или для передачи.
Обычно ограничение на задержку переупорядочивания кадров является задержкой переупорядочивания, допустимой для любого кадра в видеопоследовательности. Однако ограничение может быть выражено различными способами и иметь различные другие смысловые значения. Например, ограничение может быть выражено в виде максимального числа кадров, которые предшествуют данному кадру в порядке вывода, но следуют за данным кадром в порядке кодирования. Или ограничение может быть выражено в виде максимальной разности между позициями в порядке кодирования и порядке вывода для любого кадра в видеопоследовательности. Или, для отдельного кадра, ограничение может быть выражено в виде задержки переупорядочивания, относящейся к данному конкретному кадру в видеопоследовательности. Или, для группы кадров, ограничение может быть выражено в виде задержки переупорядочивания, относящейся к группе кадров в видеопоследовательности. Или ограничение может быть выражено некоторым другим способом.
Затем средство выводит (620) синтаксический(ие) элемент(ы). Их вывод поддерживает определение состояния, когда реконструированные кадры готовы к выводу, с учетом порядка вывода нескольких кадров. Синтаксический(ие) элемент(ы) могут быть выведены в виде составной части набора параметров последовательности или набора параметров изображения в элементарном кодированном видеопотоке, в виде составной части синтаксиса для файла хранения мультимедиа или потока передачи мультимедиа, который содержит также кодированные данные для кадров, в виде составной части протокола согласования свойств мультимедиа (например, в процессе обмена значениями параметров потока или сеанса при согласовании на системном уровне), в виде составной части информации о системе передачи мультимедийных данных, мультиплексированной с кодированными данными для кадров, или в виде составной части метаданных мультимедиа, относящихся к кодированным данным для кадров (например, в сообщениях SEI (о дополнительной расширенной информации) или сообщениях VUI (об информации применимости видео)). Для указания требований к объему памяти могут быть выведены разные синтаксические элементы. Например, синтаксический элемент размера буфера (например, max_dec_frame_buffering) может указывать максимальный размер буфера DPB, и синтаксический элемент памяти кадров (например, num_reorder_frames) может указывать максимальный размер памяти кадров для переупорядочивания.
Значение ограничения на задержку может быть представлено различными способами, описанными в разделе V.C. Например, средство выдает флаг, который указывает на присутствие или отсутствие синтаксического(их) элемента(ов). Если флаг указывает, что синтаксический(ие) элемент(ы) отсутствует(ют), то ограничение на задержку не определено или имеет значение по умолчанию. В ином случае синтаксический(ие) элемент(ы) поддерживают и указывают ограничение на задержку. Или одно значение синтаксического(их) элемента(ов) указывает, что ограничение на задержку не определено или имеет значение по умолчанию, а другие возможные значения синтаксического(их) элемента(ов) указывают целое число для ограничения на задержку. Или в случаях, когда ограничение на задержку является ограничением на задержку переупорядочивания кадров, то данное значение синтаксического(их) элемента(ов) указывает целое число для ограничения на задержку переупорядочивания кадров относительно максимального размера памяти кадров для переупорядочивания, который обозначается другим синтаксическим элементом, например num_reorder_frames. В альтернативном варианте, ограничение на задержку представляется другим способом.
В некоторых вариантах осуществления кадры видеопоследовательности организованы в соответствии с временной иерархией. В данном случае разные синтаксические элементы могут указывать разные ограничения на задержки переупорядочивания кадров для разных временных уровней временной иерархии.
F. Обобщенные методики приема и использования синтаксических элементов
На фигуре 7 представлена примерная методика (700) приема и использования синтаксических элементов, которые поддерживают декодирование с сокращенной задержкой. Например, средство связи в режиме реального времени или средство воспроизведения, описанное со ссылкой на фигуры 2a и 2b, выполняет методику (700). В альтернативном варианте, другое средство выполняет методику (700).
Сначала средство принимает и посредством анализа (710) выявляет, по меньшей мере, один синтаксический элемент, который указывает ограничение на задержку (например, задержку переупорядочивания кадров, задержку в пересчете на величину измерения времени). Например, анализ содержит считывание, по меньшей мере, одного синтаксического элемента, который указывает ограничение на задержку, из двоичного потока. Средство также принимает (720) кодированные данные для нескольких кадров видеопоследовательности. Средство может выявлять посредством анализа синтаксический(ие) элемент(ы) и по синтаксическому(им) элементу(ам) определять ограничение на задержку. Обычно ограничение на задержку переупорядочивания кадров является задержкой переупорядочивания, допустимой для любого кадра в видеопоследовательности. Однако ограничение может быть выражено различными способами и иметь различные другие смысловые значения, как поясняется в предыдущем разделе. Синтаксический(ие) элемент(ы) могут быть указаны в виде составной части набора параметров последовательности или набора параметров изображения в элементарном кодированном видеопотоке, в виде составной части синтаксиса для файла хранения мультимедиа или потока передачи мультимедиа, в виде составной части протокола согласования свойств мультимедиа, в виде составной части информации о системе передачи мультимедийных данных, мультиплексированной с кодированными данными, или в виде составной части метаданных мультимедиа, относящихся к кодированным данным. Средство может принимать и выявлять посредством анализа разные синтаксические элементы, которые указывают требования к объему памяти, например, такой синтаксический элемент размера буфера, как max_dec_frame_buffering, и такой синтаксический элемент памяти кадров, как num_reorder_frames.
Значение ограничения на задержку может быть представлено различными способами, описанными в разделе V.C. Например, средство принимает флаг, который указывает на присутствие или отсутствие синтаксического(их) элемента(ов). Если флаг указывает, что синтаксический(ие) элемент(ы) отсутствует(ют), то ограничение на задержку не определено или имеет значение по умолчанию. В ином случае синтаксический(ие) элемент(ы) поддерживают и указывают ограничение на задержку. Или одно значение синтаксического(их) элемента(ов) указывает, что ограничение на задержку не определено или имеет значение по умолчанию, а другие возможные значения синтаксического(их) элемента(ов) указывают целое число для ограничения на задержку. Или в случаях, когда ограничение на задержку является ограничением на задержку переупорядочивания кадров, то данное значение синтаксического(их) элемента(ов) указывает целое число для ограничения на задержку переупорядочивания кадров относительно максимального размера памяти кадров для переупорядочивания, который обозначается другим синтаксическим элементом, например num_reorder_frames. В альтернативном варианте, ограничение на задержку указывается другим способом.
Как показано на фигуре 7, средство декодирует (730), по меньшей мере, некоторые из кодированных данных для реконструкции одного из кадров. Средство выводит (740) реконструированный кадр. При этом средство может использовать ограничение на задержку для определения состояния, когда кадр готов для вывода, например, с учетом порядка вывода кадров видеопоследовательности.
В некоторых вариантах осуществления кадры видеопоследовательности организованы в соответствии с временной иерархией. В данном случае разные синтаксические элементы могут указывать разные ограничения на задержки переупорядочивания кадров для разных временных уровней временной иерархии. Средство может выбирать одно из разных ограничений на задержки переупорядочивания кадров в зависимости от разрешения по времени вывода.
С учетом возможности многих вариантов осуществления, к которым применимы принципы раскрытого изобретения, следует понимать, что варианты осуществления, приведенные для наглядности, являются всего лишь предпочтительными примерами изобретения и не подлежат истолкованию в смысле ограничения объема изобретения. То есть объем настоящего изобретения определяется нижеприведенной формулой изобретения. Следовательно, заявленное изобретение включает в себя все, что не выходит за пределы объема охраны и сущности настоящей формулы изобретения.