ПЕРЕДАЧА МЕЖСЛОЙНОГО ПРЕДСКАЗАНИЯ В БИТОВОМ ПОТОКЕ ВИДЕО
TRANSMISSION OF INTERLAYER PREDICTION IN VIDEO BIT STREAM

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННУЮ ЗАЯВКУ
[1] Данная заявка испрашивает приоритет предварительной заявки на патент США№62/903,652, поданной 20 сентября 2019 г., и заявки на патент США №17/019,713, поданной 14 сентября 2020 г., которые полностью включены в настоящий документ.
УРОВЕНЬ ТЕХНИКИ
1. Область техники, к которой относится изобретение
[2] Раскрытый объект изобретения относится к кодированию и декодированию видео, а более конкретно, к передаче межслойного предсказания в битовом потоке видео.
2. Описание уровня техники
[3] Кодирование и декодирование видео с использованием межкадрового предсказания с компенсацией движения известно уже несколько десятилетий. Несжатое цифровое видео может состоять из серии изображений, причем каждое изображение имеет пространственный размер, например, 1920×1080 отсчетов яркости и связанных отсчетов цветности. Серия изображений может иметь фиксированную или переменную частоту изображений (неофициально также известную как частота кадров), например, 60 изображений в секунду или 60 Гц. Несжатое видео имеет значительные требования к битрейту. Например, для видео 1080р60 4:2:0 с частотой 8 бит на отсчет (разрешение отсчета яркости 1920×1080 при частоте кадров 60 Гц) требуется полоса пропускания, близкая к 1,5 Гбит/с. Час такого видео требует более 600 ГБ дискового пространства.
[4] Одной из целей кодирования и декодирования видео может быть уменьшение избыточности входного видеосигнала посредством сжатия. Сжатие может помочь снизить вышеупомянутые требования к полосе пропускания или пространству для хранения, в некоторых случаях на два порядка или более. Могут использоваться как сжатие без потерь, так и сжатие с потерями, а также их комбинация. Сжатие без потерь относится к методам, при которых точная копия исходного сигнала может быть восстановлена из сжатого исходного сигнала. При использовании сжатия с потерями восстановленный сигнал может не быть идентичным исходному сигналу, но искажение между исходным и восстановленным сигналами достаточно мало, чтобы сделать восстановленный сигнал полезным для предполагаемого приложения. В случае видео широко применяется сжатие с потерями. Допустимая степень искажения зависит от приложения; например, пользователи определенных потребительских приложений потоковой передачи могут допускать более высокие искажения, чем пользователи приложений распределения телевидения. Достижимая степень сжатия может отражать следующее: более высокое разрешаемое/допустимое искажение может привести к более высокой степени сжатия.
[5] Видеокодер и видеодекодер могут использовать методы из нескольких широких категорий, включая, например, компенсацию движения, преобразование, квантование и энтропийное кодирование, некоторые из которых будут представлены ниже.
[6] Исторически видеокодеры и видеодекодеры имели тенденцию работать с заданным размером изображения, который в большинстве случаев был определен и оставался постоянным для кодированной видеопоследовательности (CVS), группы изображений (GOP) или аналогичного временного кадра с несколькими изображениями. Например, известно, что в MPEG-2 конструкция системы изменяет горизонтальное разрешение (и, следовательно, размер изображения) в зависимости от таких факторов, как активность сцены, но только для I-изображений, следовательно, обычно для GOP. Передискретизация опорных изображений для использования различных разрешений в CVS известна, например, из Рекомендаций МСЭ-Т Н.263, Приложение Р. Однако здесь размер изображения не изменяется, только опорные изображения подвергаются передискретизации, в результате чего потенциально могут использоваться только части холста изображения (в случае понижающей дискретизации) или только части захватываемой сцены (в случае повышающей дискретизации). Кроме того, Приложение Q Н.263 разрешает передискретизацию отдельного макроблока с коэффициентом два (в каждом измерении), в сторону повышения или понижения. Опять же, размер изображения остается прежним. Размер макроблока фиксирован в Н.263, и поэтому его не нужно передавать.
[7] Изменение размера изображения в предсказанных изображениях стало более распространенным явлением в современном кодировании видео. Например, VP9 позволяет выполнять передискретизацию опорного изображения (RPR) и изменять разрешение для всего изображения. Аналогичным образом, некоторые предложения, сделанные в отношении VVC (включая, например, Hendry, et. al., «Оп adaptive resolution change (ARC) for VVC», документ JVT JVET-M0135-v1, 9-19 января 2019 г., полностью включенный в настоящий документ) позволяют выполнять передискретизацию целых опорных изображений с другим, более высоким или более низким, разрешением. В этом документе предлагается кодировать различные кандидаты разрешения в наборе параметров последовательности и ссылаться на них с помощью элементов синтаксиса для каждого изображения в наборе параметров изображения.
РАСКРЫТИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ
[8] Для решения одной или нескольких различных технических проблем в этом раскрытии описаны новые синтаксисы и их использование, предназначенные для передачи масштабирования в битовом потоке видео. Таким образом, может быть достигнута повышенная эффективность (де)кодирования.
[9] Согласно представленным вариантам осуществления, с помощью передискретизации опорного изображения (RPR) или адаптивного изменения разрешения (ARC) дополнительная нагрузка для поддержки масштабируемости может быть достигнута посредством модификации синтаксиса высокого уровня (HLS). В технических аспектах межслойное предсказание используется в масштабируемой системе для повышения эффективности кодирования слоев улучшения. Помимо пространственных и временных предсказаний с компенсацией движения, которые доступны в однослойном кодеке, межслойное предсказание использует передискретизированные видеоданные восстановленного опорного изображения из опорного слоя для предсказания текущего слоя улучшения. Затем процесс передискретизации для межслойного предсказания выполняется на уровне блоков путем модификации существующего процесса интерполяции для компенсации движения. Это означает, что для поддержки масштабируемости не требуется дополнительного процесса передискретизации. В данном раскрытии описаны элементы синтаксиса высокого уровня для поддержки пространственной/качественной масштабируемости с использованием RPR.
[10] Включены способ и устройство, содержащие память, конфигурированную для хранения компьютерного программного кода, и процессор или процессоры, конфигурированные для доступа к компьютерному программному коду и работы в соответствии с инструкциями компьютерного программного кода. Код компьютерной программы включает в себя парсинговый код, конфигурированный для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного набора параметров видео (VPS), содержащего по меньшей мере один элемент синтаксиса, указывающий, является ли по меньшей мере один слой в масштабируемом битовом потоке одним из зависимого слоя масштабируемого битового потока и независимого слоя масштабируемого битового потока, определяющий код, конфигурированный для побуждения по меньшей мере одного процессора определять количество зависимых слоев, включая зависимый слой, масштабируемого битового потока на основе множества флагов, включенных в VPS, первый декодирующий код, конфигурированный для побуждения по меньшей мере одного процессора декодировать изображение в зависимом слое путем парсинга и интерпретации списка межслойных опорных изображений (ILRP), второй декодирующий код, конфигурированный для побуждения по меньшей мере одного процессора декодировать изображение в независимом слое без парсинга и интерпретации списка ILRP.
[11] Согласно вариантам осуществления, второй декодирующий код дополнительно конфигурирован для побуждения по меньшей мере одного процессора декодировать изображение в независимом слое путем парсинга и интерпретации списка опорных изображений, который не включает в себя какое-либо декодированное изображение другого слоя.
[12] Согласно вариантам осуществления, список межслойных опорных изображений включает в себя декодированное изображение другого слоя.
[13] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли другой элемент синтаксиса максимальное количество слоев.
[14] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, является ли другой слой в масштабируемом битовом потоке опорным слоем для по меньшей мере одного слоя.
[15] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли флаг другой слой в качестве опорного слоя для по меньшей мере одного слоя, путем задания индекса другого слоя и индекса по меньшей мере одного слоя, причем парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS другой элемент синтаксиса, указывающий значение, меньшее, чем определенное количество зависимых слоев.
[16] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, указывает ли флаг другой слой как не являющийся опорным слоем для по меньшей мере одного слоя, путем задания индекса другого слоя и индекса по меньшей мере одного слоя, причем парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS другой элемент синтаксиса, указывающий значение, меньшее, чем определенное количество зависимых слоев.
[17] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, путем интерпретации списка ILRP.
[18] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS путем определения, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, без интерпретации списка ILRP.
[19] Согласно вариантам осуществления, парсинговый код дополнительно конфигурирован для побуждения по меньшей мере одного процессора выполнять парсинг по меньшей мере одного VPS и дополнительно содержит определение, содержит ли VPS флаг, указывающий, нужно ли декодировать множество слоев, включая по меньшей мере один слой, путем интерпретации списка ILRP.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[20] Дополнительные признаки, сущность и различные преимущества раскрытого объекта изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых изображено следующее.
[21] На фиг. 1 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантом осуществления.
[22] На фиг. 2 показана схематическая иллюстрация упрощенной блок-схемы системы связи в соответствии с вариантами осуществления.
[23] На фиг. 3 показана схематическая иллюстрация упрощенной блок-схемы декодера в соответствии с вариантами осуществления.
[24] На фиг. 4 показана схематическая иллюстрация упрощенной блок-схемы кодера в соответствии с вариантами осуществления.
[25] На фиг. 5А показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с предшествующим уровнем техники.
[26] На фиг. 5В показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с предшествующим уровнем техники.
[27] На фиг. 5С показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с вариантами осуществления.
[28] На фиг. 5D показана схематическая иллюстрация вариантов передачи параметров ARC/RPR в соответствии с вариантами осуществления.
[29] На фиг. 5Е показана схематическая иллюстрация вариантов для передачи параметров ARC/RPR в соответствии с вариантами осуществления.
[30] На фиг. 6 показана схематическая иллюстрация передачи разрешений изображения в соответствии с вариантами осуществления.
[31] На фиг. 7 показана схематическая иллюстрация передачи размера изображения и окна соответствия в SPS в соответствии с вариантами осуществления.
[32] На фиг. 8 показана схематическая иллюстрация передачи наличия межслойного предсказания в SPS в соответствии с вариантами осуществления.
[33] На фиг. 9 показана схематическая иллюстрация передачи индекса межслойного предсказания в заголовке слайса в соответствии с вариантами осуществления.
[34] На фиг. 10 показана схематическая иллюстрация компьютерной системы в соответствии с вариантами осуществления.
ОСУЩЕСТВЛЕНИЕ ИЗОБРЕТЕНИЯ
[35] Предлагаемые признаки, обсуждаемые ниже, могут быть использованы по отдельности или скомбинированы в любом порядке. Кроме того, варианты осуществления могут быть реализованы схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на невременном машиночитаемом носителе.
[36] На фиг. 1 проиллюстрирована упрощенная блок-схема системы (100) связи согласно варианту осуществления настоящего раскрытия. Система (100) может включать в себя по меньшей мере два терминала (110 и 120), соединенных между собой через сеть (150). Для однонаправленной передачи данных первый терминал (110) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (120) через сеть (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в приложениях обслуживания мультимедиа и т.п.
[37] На фиг. 1 показана вторая пара терминалов (130, 140), обеспечивающая поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференц-связи. Для двунаправленной передачи данных каждый терминал (130, 140) может кодировать видеоданные, захваченные в локальном местоположении, для передачи другому терминалу через сеть (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, переданные другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[38] На фиг. 1 терминалы (110, 120, 130, 140) могут быть изображены как серверы, персональные компьютеры и смартфоны, но принципы настоящего раскрытия не могут быть ограничены этим. Варианты осуществления настоящего раскрытия находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференц-связи. Сеть (150) представляет собой любое количество сетей, которые передают кодированные видеоданные между терминалами (110, 120, 130, 140), включая, например, сети проводной и/или беспроводной связи. Сеть (150) связи может обмениваться данными в каналах с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают в себя телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего раскрытия, если это не объясняется в данном документе ниже.
[39] На фиг. 2 проиллюстрировано, в качестве примера применения для раскрытого объекта изобретения, размещение видеокодера и видеодекодера в потоковой среде. Раскрытый объект изобретения может быть в равной степени применим к другим приложениям с поддержкой видео, включая, например, видеоконференц-связь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая CD, DVD, карту памяти и т.п., и так далее.
[40] Система потоковой передачи может включать в себя подсистему (213) захвата, которая может включать в себя источник (201) видео, например цифровую камеру, создающую, например, поток (202) отсчетов несжатого видео. Данный поток (202) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может быть обработан кодером (203), подключенным к камере (201). Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию для включения или реализации аспектов раскрытого объекта изобретения, как более подробно описано ниже. Кодированный битовый поток (204) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может храниться на сервере (205) потоковой передачи для будущего использования. Один или более клиентов (206, 208) потоковой передачи могут получить доступ к серверу (205) потоковой передачи для извлечения копий (207, 209) кодированного битового потока (204) видео. Клиент (206) может включать в себя видеодекодер (210), который декодирует входящую копию кодированного битового потока (207) видео и создает исходящий поток (211) отсчетов видео, который может отображаться на дисплее (212) или другом устройстве визуализации (не изображено). В некоторых потоковых системах битовые потоки (204, 207, 209) видео могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию МСЭ-Т Н.265. В стадии разработки находится стандарт кодирования видео, неофициально известный как универсальное кодирование видео или VVC. Раскрытый объект может использоваться в контексте VVC.
[41] Фиг. 3 может быть функциональной блок-схемой видеодекодера (210) согласно варианту осуществления настоящего раскрытия.
[42] Приемник (310) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы видеодекодером (210); в том же или другом варианте осуществления - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может быть принята из канала (312), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут быть отправлены их соответствующим использующим объектам (не изображены). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с дрожанием в сети между приемником (310) и энтропийным декодером/парсером (320) (далее «парсер») может быть подключена буферная память (315). Когда приемник (310) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемостью или из изосинхронной сети, буферная память (315) может не понадобиться или может быть небольшой. Для использования в пакетных сетях наилучшего качества, таких как Интернет, может потребоваться буфер (315), который может быть сравнительно большим и может быть предпочтительно адаптивного размера.
[43] Видеодекодер (210) может включать в себя парсер (320) для восстановления символов (321) из энтропийно кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (210), и потенциально информацию для управления устройством визуализации, таким как дисплей (212), который не является неотъемлемой частью декодера, но может быть подключен к нему, как это было показано на фиг. 2. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров информации дополнительного улучшения (сообщения SEI) или информации о пригодности видео (VUI) (не изображены). Парсер (320) может выполнять парсинг/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео и может следовать принципам, хорошо известным специалистам в уровне техники, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с контекстной чувствительностью или без нее и так далее. Парсер (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, тайлы, слайсы, макроблоки, единицы кодирования (CU), блоки, единицы преобразования (TU), единицы предсказания (PU) и так далее. Энтропийный декодер/парсер также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и так далее.
[44] Парсер (320) может выполнять операцию энтропийного декодирования/парсинга видеопоследовательности, принятой из буфера (315), чтобы создавать символы (321).
[45] Восстановление символов (321) может включать в себя множество различных модулей в зависимости от типа кодированного видеоизображения или его частей (таких как: внешнее и внутреннее изображение, внешний и внутренний блок) и других факторов. Какие модули задействованы и как, можно контролировать с помощью управляющей информации подгруппы, парсинг которой был выполнен из кодированной видеопоследовательности с помощью парсера (320). Поток такой управляющей информации подгруппы между парсером (320) и множеством модулей ниже не показан для ясности.
[46] Помимо уже упомянутых функциональных блоков, декодер 210 может быть концептуально подразделен на ряд функциональных модулей, как описано ниже. В практическом осуществлении, работающем в условиях коммерческих ограничений, многие из этих модулей тесно взаимодействуют друг с другом и могут быть по меньшей мере частично интегрированы друг в друга. Однако для целей описания раскрытого объекта изобретения уместно концептуальное подразделение на функциональные модули, приведенные ниже.
[47] Первым модулем является модуль (351) масштабирования/обратного преобразования. Модуль (351) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и так далее, в виде символа(ов) (321) от парсера (320). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (355).
[48] В некоторых случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интракодированием; то есть к блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена модулем (352) внутрикадрового предсказания. В некоторых случаях модуль (352) внутрикадрового предсказания генерирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (358). Агрегатор (355), в некоторых случаях, добавляет для каждого отсчета информацию предсказания, сгенерированную модулем (352) интрапредсказания, к информации выходных отсчетов, предоставляемой модулем (351) масштабирования/обратного преобразования.
[49] В других случаях выходные отсчеты модуля (351) масштабирования/обратного преобразования могут относиться к блоку с интеркодированием и потенциально с компенсацией движения. В таком случае модуль (353) предсказания с компенсацией движения может обращаться к памяти (357) опорных изображений, чтобы извлекать отсчеты, используемые для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (321), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (355) к выходу модуля масштабирования/обратного преобразования (в данном случае они называются остаточными отсчетами или остаточным сигналом), чтобы генерировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда модуль предсказания с компенсацией движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными модулю предсказания с компенсацией движения в форме символов (321), которые могут иметь, например, компоненты X, Y и опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения суботсчетов, механизмы предсказания вектора движения и так далее.
[50] Выходные отсчеты агрегатора (355) могут подвергаться различным методам петлевой фильтрации в модуле (356) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в битовый поток кодированного видео и предоставляются модулю (356) петлевой фильтрации как символы (321) из парсера (320), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также реагировать на ранее восстановленные и отфильтрованные посредством петлевой фильтрации значения отсчетов.
[51] Выходной сигнал модуля (356) петлевого фильтра может быть потоком отсчетов, который может быть выведен на устройство (212) визуализации, а также сохранен в памяти (357) опорных изображений для использования в будущем межкадровом предсказании.
[52] Определенные кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, парсером (320)), текущее опорное изображение (358) может стать частью буфера (357) опорных изображений, и свежая память текущих изображений может быть перераспределена перед началом восстановления следующего кодированного изображения.
[53] Видеодекодер 320 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть записана в стандарте, таком как Рекомендация МСЭ-Т Н.265. Кодированная видеопоследовательность может соответствовать синтаксису, заданному используемой технологией или стандартом сжатия видео, в том смысле, что она соответствует синтаксису технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в их документе профилей. Также для соответствия может быть необходимым, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту дискретизации восстановления (измеряемую, например, в мегаотсчетах в секунду), максимальный размер опорного изображения и так далее. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD) и метаданных для управления буфером HRD, передаваемых в кодированной видеопоследовательности.
[54] В варианте осуществления приемник (310) может принимать дополнительные (избыточные) данные с кодированным видео. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(ей). Дополнительные данные могут использоваться видеодекодером (320) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных слоев или слоев улучшения отношения сигнал/шум (SNR), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и так далее.
[55] Фиг. 4 может быть функциональной блок-схемой видеокодера (203) согласно варианту осуществления настоящего раскрытия.
[56] Кодер (203) может принимать отсчеты видео от источника (201) видео (который не является частью кодера), который может захватывать видеоизображение(я) для кодирования кодером (203).
[57] Источник (201) видео может предоставить исходную видеопоследовательность для кодирования кодером (203) в форме цифрового потока отсчетов видео, который может иметь любую подходящую битовую глубину (например: 8 бит, 10 бит, 12 бит, …), любое цветовое пространство (например, ВТ.601 Y CrCB, RGB, …) и любую подходящую структуру отсчетов (например, Y CrCb 4:2:0, Y CrCb 4:4:4). В системе обслуживания мультимедиа источник (201) видео может быть запоминающим устройством, хранящим предварительно подготовленное видео. В системе видеоконференц-связи источник (203) видео может быть камерой, которая захватывает информацию о локальном изображении в виде видеопоследовательности. Видеоданные могут быть предоставлены как множество отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, в котором каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалист в данной области техники может легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[58] Согласно варианту осуществления видеокодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени или с любыми другими временными ограничениями, как того требует приложение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (450). Контроллер управляет другими функциональными модулями, как описано ниже, и функционально связан с этими модулями. Связь не изображена для ясности. Параметры, устанавливаемые контроллером, могут включать в себя параметры, относящиеся к управлению скоростью (пропуск изображения, квантователь, значение лямбда методов оптимизации скорость-искажение, …), размеру изображения, макету группы изображений (GOP), максимальному диапазону поиска вектора движения и так далее. Специалист в данной области техники может легко определить другие функции контроллера (450), поскольку они могут относиться к видеокодеру (203), оптимизированному для определенной конструкции системы.
[59] Некоторые видеокодеры работают в том, что специалист в данной области легко распознает как «петля кодирования». В качестве упрощенного описания петля кодирования может состоять из кодирующей части кодера (430) (далее «кодер источника») (ответственной за создание символов на основе входного изображения, которое должно быть кодировано, и опорного изображения(й)), и (локального) декодера (433), встроенного в кодер (203), который восстанавливает символы для создания данных отсчетов, которые (удаленный) декодер также может создать (поскольку любое сжатие между символами и кодированным битовым потоком видео не имеет потерь в технологиях сжатия видео, рассматриваемых в раскрытом объекте). Этот восстановленный поток отсчетов вводится в память (434) опорных изображений. Поскольку декодирование потока символов приводит к результатам с точностью до бита, независимо от местоположения декодера (локально или удаленно), содержимое буфера опорных изображений также является точным до бита между локальным кодером и удаленным кодером. Другими словами, часть предсказания кодера «видит» в качестве отсчетов опорного изображения точно такие же значения отсчетов, которые декодер «видел» бы при использовании предсказания во время декодирования. Этот фундаментальный принцип синхронности опорного изображения (и результирующего дрейфа, если синхронность не может поддерживаться, например, из-за ошибок канала) хорошо известен специалисту в данной области техники.
[60] Работа «локального» декодера (433) может быть такой же, как у «удаленного» декодера (210), который уже был подробно описан выше со ссылкой на фиг. 3. Кратко ссылаясь также на фиг. 3, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и парсером (320) может осуществляться без потерь, части энтропийного декодирования декодера (210), включая канал (312), приемник (310), буфер (315) и парсер (320), не могут быть полностью реализованы в локальном декодере (433).
[61] На этом этапе можно сделать наблюдение, что любая технология декодирования, кроме парсингового/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать по существу в идентичной функциональной форме в соответствующем кодере. По этой причине раскрытый объект изобретения фокусируется на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[62] В качестве части своей работы кодер (430) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее кодированных кадров из видеопоследовательности, которые были обозначены как «опорные кадры». Таким образом, механизм (432) кодирования кодирует различия между блоками пикселей входного кадра и блоками пикселей опорного кадра(ов), которые могут быть выбраны в качестве эталона(ов) предсказания для входного кадра.
[63] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (430) источника. Операции механизма (432) кодирования могут быть предпочтительно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, в качестве восстановленных опорных кадров, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[64] Предиктор (435) может выполнять поиски с предсказанием для механизма (432) кодирования. То есть, для нового изображения, которое должно быть кодировано, предиктор (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве кандидатов блоков опорных пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и так далее, которые могут служить подходящим эталоном предсказания для новых изображений. Предиктор (435) может работать на основе блока отсчетов "блок-за-пикселем", чтобы найти соответствующие эталоны предсказания. В некоторых случаях, как определено результатами поиска, полученными предиктором (435), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (434) опорных изображений.
[65] Контроллер (450) может управлять операциями кодирования видеокодера (430), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[66] Выходные сигналы всех вышеупомянутых функциональных модулей могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер переводит символы, сгенерированные различными функциональными модулями, в кодированную видеопоследовательность путем сжатия без потерь символов согласно технологиям, известным специалистам в данной области техники, как, например, кодирование Хаффмана, кодирование переменной длины, арифметическое кодирование и так далее.
[67] Передатчик (440) может буферизовать кодированную видеопоследовательность(и), созданную энтропийным кодером (445), чтобы подготовить ее к передаче через канал (460) связи, который может быть аппаратным/программным соединением с запоминающим устройством, которое будет хранить кодированные видеоданные. Передатчик (440) может обеспечивать слияние кодированных видеоданных из видеокодера (430) с другими данными, подлежащими передаче, например, кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[68] Контроллер (450) может управлять работой кодера (203). Во время кодирования контроллер (450) может назначить каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на методы кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть отнесены к одному из следующих типов кадров.
[69] Внутреннее изображение (I-изображение) может быть таким, которое можно кодировать и декодировать без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки допускают различные типы внутренних изображений, включая, например, изображения с независимым обновлением декодера. Специалисту в области техники известны эти варианты I-изображений и их соответствующие применения и особенности.
[70] Изображение с предсказанием (Р-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[71] Изображение с двунаправленным предсказанием (В-изображение) может быть таким, которое может быть кодировано и декодировано с использованием интрапредсказания или интерпредсказания с использованием не более двух векторов движения и опорных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения с множественным предсказанием могут использовать более двух опорных изображений и связанных метаданных для восстановления одного блока.
[72] Исходные изображения обычно могут быть пространственно разделены на множество блоков отсчетов (например, блоки из 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и закодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки из I-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или интрапредсказание). Пиксельные блоки Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированных опорных изображения.
[73] Видеокодер (203) может выполнять операции кодирования в соответствии с заранее определенной технологией или стандартом кодирования видео, такой как Рекомендация МСЭ-Т Н.265. В своей работе видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом кодирования видео.
[74] В варианте осуществления передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать в себя такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные слои/слои улучшения SNR, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения информации дополнительного улучшения (SEI), фрагменты набора параметров информации о пригодности видео (VUI) и так далее.
[75] Перед более подробным описанием определенных аспектов раскрытого объекта изобретения необходимо ввести несколько терминов, на которые будет делаться ссылка в оставшейся части этого описания.
[76] Суб-изображение далее относится, в некоторых случаях, к прямоугольной компоновке отсчетов, блоков, макроблоков, единиц кодирования или подобных объектов, которые семантически сгруппированы и которые могут быть независимо кодированы с измененным разрешением. Одно или более суб-изображений могут использоваться для изображения. Одно или более кодированных суб-изображений могут образовывать кодированное изображение. Одно или более суб-изображений могут быть собраны в изображение, и одно или более суб-изображений могут быть извлечены из изображения. В определенных средах одно или более кодированных суб-изображений могут быть собраны в сжатой области без перекодирования до уровня отсчетов в кодированное изображение, и в тех же или некоторых других случаях одно или более кодированных суб-изображений могут быть извлечены из кодированного изображения в сжатой области.
[77] В дальнейшем передискретизация опорного изображения (RPR) или адаптивное изменение разрешения (ARC) относится к механизмам, которые позволяют изменять разрешение изображения или суб-изображения в кодированной видеопоследовательности, например, посредством передискретизации опорного изображения. В дальнейшем параметры RPR/ARC относятся к управляющей информации, необходимой для выполнения адаптивного изменения разрешения, которая может включать в себя, например, параметры фильтра, коэффициенты масштабирования, разрешения выходных и/или опорных изображений, различные флаги управления и так далее.
[78] Приведенное выше описание сосредоточено на кодировании и декодировании одного семантически независимого кодированного видеоизображения. Перед описанием последствий кодирования/декодирования множества суб-изображений с независимыми параметрами RPR/ARC и их подразумеваемой дополнительной сложности должны быть описаны варианты передачи параметров RPR/ARC.
[79] На фиг. 5 показано несколько новых вариантов передачи параметров RPR/ARC. Как отмечено для каждого из вариантов, они имеют определенные преимущества и определенные недостатки с точки зрения эффективности кодирования, сложности и архитектуры. Стандарт или технология кодирования видео могут выбрать один или более из этих вариантов или вариантов, известных из предшествующего уровня техники, для передачи параметров RPR/ARC. Варианты могут не быть взаимоисключающими и, возможно, могут быть взаимозаменяемыми в зависимости от потребностей приложения, используемых стандартов или выбора кодера.
[80] Классы параметров RPR/ARC могут включать в себя:
- коэффициенты повышающей/понижающей дискретизации, отдельные или объединенные в измерениях X и Y,
- коэффициенты повышающей/понижающей дискретизации с добавлением временного измерения, указывающие на увеличение/уменьшение размера с постоянной скоростью для заданного количества изображений,
- любой из двух вышеупомянутых вариантов может включать в себя кодирование одного или более предположительно коротких элементов синтаксиса, которые могут указывать на таблицу, содержащую коэффициент(ы),
- разрешение в измерениях X или Y, в единицах отсчетов, блоках, макроблоках, CU или любой другой подходящей степени детализации, входного изображения, выходного изображения, опорного изображения, кодированного изображения, скомбинированного или отдельного (если имеется более одного разрешения (такое как, например, одно для входного изображения, одно для опорного изображения), тогда в некоторых случаях один набор значений может быть выведен из другого набора значений. Это может быть передано, например, с помощью флагов. Более подробный пример см. ниже,
- координаты «деформации», подобные тем, которые используются в Приложении Р Н.263, опять же с подходящей степенью детализации, как описано выше. (Приложение Р Н.263 определяет один эффективный способ кодирования таких координат деформации, но, возможно, также разрабатываются другие, потенциально более эффективные способы. Например, согласно вариантам осуществления, реверсивное кодирование Хаффмана с переменной длиной координат деформации согласно Приложению Р заменяется двоичным кодированием подходящей длины, где длина двоичного кодового слова может быть, например, получена из максимального размера изображения, возможно, умноженного на определенный коэффициент и смещенного на определенное значение, чтобы учесть «деформацию» за пределами границ максимального размера изображения), и/или
- параметры фильтра с повышающей или понижающей дискретизацией (в простейшем случае может быть только один фильтр для повышающей и/или понижающей дискретизации. Однако в некоторых случаях может быть предпочтительным обеспечить большую гибкость в конструкции фильтра, и для этого может потребоваться передача параметров фильтра. Такие параметры могут быть выбраны с помощью индекса в списке возможных конструкций фильтров, фильтр может быть полностью определен (например, с помощью списка коэффициентов фильтра с использованием подходящих методов энтропийного кодирования), фильтр может быть неявно выбран с помощью соответствующих соотношений повышающей/понижающей дискретизации, которые, в свою очередь, передаются в соответствии с любым из механизмов, упомянутых выше, и так далее).
[81] Ниже описание предполагает кодирование конечного набора коэффициентов повышающей/понижающей дискретизации (тот же коэффициент, который должен использоваться в измерениях X и Y), указанных с помощью кодового слова. Это кодовое слово может быть преимущественно закодировано с переменной длиной, например, с использованием экспоненциального кода Голомба, общего для определенных элементов синтаксиса в спецификациях кодирования видео, таких как Н.264 и Н.265. Одно подходящее сопоставление значений с коэффициентами повышающей/понижающей дискретизации может, например, соответствовать следующей таблице 1.
[82] Многие аналогичные сопоставления могут быть разработаны в соответствии с потребностями приложения и возможностями механизмов повышения и понижения дискретизации, доступных в технологии или стандарте сжатия видео. Таблица может быть расширена до большего количества значений. Значения также могут быть представлены механизмами энтропийного кодирования, отличными от Экспоненциальных кодов Голомба, например, с использованием двоичного кодирования. Это может иметь определенные преимущества, когда коэффициенты передискретизации представляли интерес за пределами самих механизмов обработки видео (прежде всего кодера и декодера), например, посредством MANE. Следует отметить, что для (предположительно) наиболее распространенного случая, когда изменение разрешения не требуется, может быть выбран экспоненциальный код Голомба, который является коротким; в таблице выше только один бит. Это может иметь преимущество в эффективности кодирования по сравнению с использованием двоичных кодов для наиболее распространенного случая.
[83] Количество записей в таблице, а также их семантика могут быть полностью или частично настраиваемыми. Например, основная структура таблицы может быть передана в «высоком» наборе параметров, таком как последовательность или набор параметров декодера. В качестве альтернативы или в дополнение, одна или более таких таблиц могут быть определены в технологии или стандарте кодирования видео и могут быть выбраны, например, с помощью декодера или набора параметров последовательности.
[84] Далее описано, как коэффициент повышающей/понижающей дискретизации (информация ARC), кодированный, как описано выше, может быть включен в технологию кодирования видео или стандартный синтаксис. Подобные соображения могут применяться к одному или нескольким кодовым словам, управляющим фильтрами повышающей/понижающей дискретизации. Ниже приведено обсуждение, когда для фильтра или других структур данных требуются сравнительно большие объемы данных.
[85] Как показано в примере на фиг. 5А, иллюстрация (500А) показывает, что Приложение Р Н.263 включает в себя информацию (502) ARC в форме четырех координат деформации в заголовке изображения (501), в частности, в расширении заголовка Н.263 PLUSPTYPE (503). Это может быть разумным выбором структуры, когда а) имеется доступный заголовок изображения и б) ожидаются частые изменения информации ARC. Однако служебные данные при использовании передачи в стиле Н.263 могут быть довольно высокими, и коэффициенты масштабирования могут не относиться к границам изображения, поскольку заголовок изображения может иметь временный характер. Кроме того, как показано в примере на фиг. 5В, иллюстрация (500В) показывает, что JVET-M0135 включает в себя информацию (504) PPS, опорную информацию (505) ARC, информацию (507) SPS и информацию (506) таблицы целевого разрешения.
[86] Согласно примерным вариантам осуществления, фиг. 5С иллюстрирует пример (500С), в котором показана информация (508) заголовка группы тайлов и информация (509) ARC; фиг. 5В иллюстрирует пример (500D), в котором показана информация (514) заголовка группы тайлов, опорная информация (513) ARC, информация (516) SPS и информация (515) ARC, а фиг. 5Е иллюстрирует пример (500Е) в котором показана информация (511) набора(ов) параметров адаптации (APS) и информация (512) ARC.
[87] На фиг. 6 показан пример (600) таблицы, в которой используется адаптивное разрешение, в этом примере кодировано выходное разрешение в единицах отсчетов (613). Номер позиции 613 относится как к output_pic_width_in_luma_samples, так и к output_pic_height_in_luma_samples, которые вместе могут определять разрешение выходного изображения. В другом месте технологии или стандарта кодирования видео могут быть определены определенные ограничения для любого значения. Например, определение уровня может ограничивать количество общих выходных отсчетов, которые могут быть произведением значений этих двух элементов синтаксиса. Также, определенные технологии или стандарты кодирования видео, или внешние технологии или стандарты, такие как, например, системные стандарты, могут ограничивать диапазон нумерации (например, одно или оба измерения должны делиться на степень 2) или соотношение ширины и высоты (например, ширина и высота должны быть в таком соотношении, как 4:3 или 16:9). Такие ограничения могут быть введены для облегчения аппаратных реализаций или по другим причинам, как будет понятно специалисту в данной области техники с учетом настоящего раскрытия.
[88] В некоторых приложениях может быть целесообразно, чтобы кодер инструктировал декодер использовать определенный размер опорного изображения вместо того, чтобы неявно предполагать, что этот размер является размером выходного изображения. В этом примере элемент синтаксиса reference_pic_size_present_flag (614) передает условное присутствие размеров (615) опорного изображения (опять же, цифра относится как к ширине, так и к высоте).
[89] Некоторые технологии или стандарты кодирования видео, например VP9, поддерживают пространственную масштабируемость путем реализации определенных форм передискретизации опорного изображения (передаваемую совершенно иначе, чем в раскрытом объекте изобретения) в сочетании с временной масштабируемостью, чтобы обеспечить пространственную масштабируемость. В частности, некоторые опорные изображения могут подвергаться повышающей дискретизации с использованием технологий ARC-стиля до более высокого разрешения для формирования основы слоя пространственного улучшения. Эти изображения с повышенной дискретизацией можно улучшить, используя нормальные механизмы предсказания с высоким разрешением, чтобы добавить деталей.
[90] Раскрытый объект изобретения может использоваться и используется в такой среде согласно вариантам осуществления. В некоторых случаях, в том же или другом варианте осуществления, значение в заголовке единицы NAL, например поле временного идентификатора, может использоваться для указания не только временного, но и пространственного слоя. Это дает определенные преимущества для определенных конфигураций систем; например, существующая Selected Forwarding Units (SFU), созданная и оптимизированная для выбранных временных слоев, пересылаемых на основе значения временного идентификатора заголовка единицы NAL, может использоваться без модификации для масштабируемых сред. Для того чтобы сделать это возможным, может существовать требование для сопоставления между размером кодированного изображения и временным слоем, указываемым полем временного идентификатора в заголовке единицы NAL.
[91] В вариантах осуществления информация о межслойной зависимости может передаваться в VPS (или сообщениях DPS, SPS или SEI). Информация о межслойной зависимости может использоваться для идентификации того, какой слой используется в качестве опорного слоя для декодирования текущего слоя. Декодированное изображение picA в прямом зависимом слое с nuh_layer_id, равным m, может использоваться в качестве опорного изображения для изображения picB с nuh_layer_id, равным n, когда n больше m, и два изображения picA и picB принадлежат одной и той же единице доступа.
[92] В тех же или других вариантах осуществления список межслойных опорных изображений (ILRP) может явно передаваться с помощью списка опорных изображений межслойного предсказания (IPRP) в заголовке слайса (или в наборе параметров). И списки ILRP, и списки IPRP могут использоваться для построения списков опорных изображений прямого и обратного предсказания.
[93] В тех же или других вариантах осуществления элементы синтаксиса в VPS (или другом наборе параметров) могут указывать, является ли каждый слой зависимым или независимым. Ссылаясь на пример (700) с фиг. 7, элемент синтаксиса vps_max_layers_minus1 (703) плюс 1 может указывать максимальное количество слоев, разрешенных в одном или нескольких, потенциально всех, CVS, относящихся к VPS (701). vps_all_independent_layers_flag (704), равное 1, может указывать, что все слои в CVS кодируются независимо, то есть без использования межслойного предсказания. vps_all_independent_layers_flag (704), равное 0, может указывать, что один или более слоев в CVS могут использовать межслойное предсказание. При отсутствии, значение vps_all_independent_layers_flag может быть выведено равным 1. Когда vps_all_independent_layers_flag равно 1, значение vps_independent_layer_flag [i] (706) может быть выведено равным 1. Когда vps_all_independent_layers_flag равно 0, значение vps_independent_layer_flag [0] предполагается равным 1.
[94] Ссылаясь на фиг. 7, vps_independent_layer_flag [i] (706), равное 1, может указывать, что слой с индексом i не использует межслойное предсказание. vps_independent_layer_flag [i], равное 0, может указывать, что слой с индексом i может использовать межслойное предсказание, a vps_layer_dependency_flag [i] присутствует в VPS. vps_direct_dependency_flag [i] [j] (707), равное 0, может указывать, что слой с индексом j не является прямым опорным слоем для слоя с индексом i. vps_direct_dependency_flag [i] [j], равное 1, может указывать, что слой с индексом j является прямым опорным слоем для слоя с индексом i. Когда vps_direct_dependency_flag [i] [j] не присутствует для i и j в диапазоне от 0 до vps_max_layers_minus1 включительно, оно может быть выведено равным 0.
[95] Переменная DirectDependentLayerIdx [i] [j], указывающая j-й прямой зависимый слой i-го слоя, и переменная NumDependentLayers [i], указывающая количество зависимых слоев i-го уровня, выводятся следующим образом:
[96] В том же или другом варианте осуществления, со ссылкой на фиг. 7, когда vps_max_layers_minus1 больше нуля и значение vps_all_independent_layers_flag равно нулю, могут передаваться vps_output_layers_mode и vps_output_layer_flags [i]. vps_output_layers_mode (708), равное 0, может указывать, что выводится только самый высокий слой. vps_output_layer_mode, равное 1, указывает, что все слои могут быть выведены. vps_output_layer_mode, равное 2, может указывать, что выводимые слои являются слоями с vps_output_layer_flag [i] (709) равным 1. Значение vps_output_layers_mode должно находиться в диапазоне от 0 до 2 включительно. Значение 3 vps_output_layer_mode может быть зарезервировано для будущего использования. При отсутствии, значение vps_output_layers_mode может быть выведено равным 1. vps_output_layer_flag [i], равное 1, может указывать, что выводится i-й слой. vps_output_layer_flag [i], равное 0, может указывать, что i-й слой не выводится. Список OutputLayerFlag [i], для которого значение 1 может указывать, что i-й слой выводится, а значение 0 указывает, что i-й слой не выводится, выводится следующим образом:
[97] В том же или другом варианте вывод текущего изображения может быть определен следующим образом:
- Если PictureOutputFlag равен 1, a DpbOutputTime [n] равен CpbRemovalTime [n], выводится текущее изображение.
- В противном случае, если PictureOutputFlag равен 0, текущее изображение не выводится, но будет сохранено в DPB, как указано в пункте.
- В противном случае (PictureOutputFlag равен 1, a DpbOutputTime [n] больше, чем CpbRemovalTime [n]), текущее изображение выводится позже и будет сохранено в DPB (как указано в пункте) и выводится в момент времени DpbOutputTime [n] если не указано, что оно не выводится путем декодирования или вывода no_output_of_prior_pics_flag, равного 1, в момент времени, предшествующий DpbOutputTime [n].
При выводе изображение обрезается с использованием соответствующего окна обрезки, указанного в PPS для изображения.
[98] В том же или другом варианте осуществления PictureOutputFlag может быть установлен следующим образом:
- Если выполняется одно из следующих условий, PictureOutputFlag устанавливается равным 0:
- текущее изображение является изображением RASL, а значение NoIncorrectPicOutputFlag связанного изображения IRAP равно 1.
- gdr_enabled_flag равно 1, а текущее изображение является изображением GDR с NoIncorrectPicOutputFlag, равным 1.
- gdr_enabled_flag равно 1, текущее изображение связано с изображением GDR с NoIncorrectPicOutputFlag, равным 1, и PicOrderCntVal текущего изображения меньше RpPicOrderCntVal связанного изображения GDR.
- vps_output_layer_mode равно 0 или 2, a OutputLayerFlag [GeneralLayerIdx [nuh_layer_id]] равно 0.
- В противном случае PictureOutputFlag устанавливается равным pic_output_flag.
[99] В том же или другом варианте осуществления, в качестве альтернативы, PictureOutputFlag может быть установлен следующим образом.
- Если выполняется одно из следующих условий, PictureOutputFlag устанавливается равным 0:
- текущее изображение является изображением RASL, а значение NoIncorrectPicOutputFlag связанного изображения IRAP равно 1.
- gdr_enabled_flag равно 1, а текущее изображение является изображением GDR с NoIncorrectPicOutputFlag, равным 1.
- gdr_enabled_flag равно 1, текущее изображение связано с изображением GDR с NoIncorrectPicOutputFlag, равным 1, и PicOrderCntVal текущего изображения меньше RpPicOrderCntVal связанного изображения GDR.
- vps_output_layer_mode равно 0, а текущая единица доступа содержит изображение, у которого PictureOutputFlag равно 1, nuh_layer_id nuhLid больше, чем у текущего изображения, и принадлежит выходному слою (т.е. OutputLayerFlag [GeneralLayerIdx [nuhLid]] равен 1).
- vps_output_layer_mode равно 2, a OutputLayerFlag [GeneralLayerldx [nuh_layer_id]] равно 0.
- В противном случае PictureOutputFlag устанавливается равным pic_output_flag.
[100] В том же или другом варианте осуществления флаг в VPS (или другом наборе параметров) может указывать, передаются или нет списки ILRP для текущего слайса (или изображения). Например, ссылаясь на пример (800) с фиг. 8, inter_layer_ref_pics_present_fiag, равный 0, может указывать, что никакой ILRP не используется для интерпредсказания любого кодированного изображения в CVS. inter_layer_ref_pics_flag, равный 1, может указывать, что ILRP могут использоваться для интерпредсказания одного или более кодированных изображений в CVS.
[101] В тех же или других вариантах осуществления список межслойных опорных изображений (ILRP) для изображения в k-м слое может передаваться или нет, когда k-й слой является зависимым слоем. Тем не менее, список ILRP для изображения в k-м слое не должен передаваться, и никакой ILRP не должен включаться в список опорных изображений, когда k-й слой является независимым слоем.
[102] значение inter_layer_ref_pics_present_flag может быть установлено равным 0, когда sps_video_parameter_set_id равно 0, когда nuh_layer_id равно 0, или когда vps_independent_layer_flag [GeneralLayerIdx [nuh_layer_id]] равно 1.
[103] В том же или других вариантах осуществления со ссылкой на пример (900) с фиг. 9, набор элементов синтаксиса, которые явно указывают список ILRP, может быть передан в SPS, PPS, APS или заголовок слайса. Список ILRP может использоваться для создания списка опорных изображений текущего изображения.
[104] В том же или других вариантах осуществления список ILRP может использоваться для идентификации активного или неактивного опорного изображения в буфере декодированных изображений (DPB). Активное опорное изображение может использоваться как опорное изображение для декодирования текущего изображения, в то время как неактивное опорное изображение может не использоваться для декодирования текущего изображения, но может использоваться для декодирования последующего изображения в порядке декодирования.
[105] В том же или другом варианте осуществления список ILRP может использоваться для идентификации того, какое опорное изображение может быть сохранено в DPB или может быть выведено и удалено из DPB. Эта информация может использоваться для работы декодера на основе модели и параметров гипотетического эталонного декодера (HRD).
[106] В том же или другом варианте осуществления элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] может передаваться в VPS, SPS, PPS, APS или заголовке слайса. Элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] указывает индекс, для списка напрямую зависимых слоев, ILRP i-й записи в структуре синтаксиса ref_pic_list_struct (listIdx, rplsIdx) для списка напрямую зависимых слоев. Значение ilrp_idc [listIdx] [rplsIdx] [i] должно быть в диапазоне от 0 до GeneralLayerIdx [nuh_layer_id] - 1 включительно.
[107] В том же варианте осуществления элемент синтаксиса ilrp_idc [listIdx] [rplsIdx] [i] может быть индексом, указывающим изображение ILRP среди напрямую зависимых слоев, которые идентифицируются с помощью vps_direct_dependency_flag [i] [j], передаваемого в VPS. В этом случае значение ilrp_idc [listIdx] [rplsIdx] [i] должно быть в диапазоне от 0 до NumDependentLayers [GeneralLayerldx [nuh_layer_id]] - 1 включительно.
[108] В том же варианте осуществления, когда nuh_layer_id текущего уровня равен k, может быть эффективной по битам передача индекса, указывающего ILRP среди напрямую зависимых уровней, по сравнению с передачей индекса, указывающего ILRP среди всех уровней с nuh_layer_id меньше, чем k.
[109] В том же или другом варианте осуществления, по-прежнему ссылаясь на фиг. 9, списки опорных изображений RefPicList [0] и RefPicList [1] могут быть построены следующим образом:
[110] Методы для передачи параметров адаптивного разрешения, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых инструкций и физически сохранены на одном или более машиночитаемых носителях. Например, на фиг. 10 показана компьютерная система (1000), подходящая для реализации определенных вариантов осуществления раскрытого объекта изобретения.
[111] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или компьютерного языка, который может быть объектом сборки, компиляции, связывания или подобных механизмов для создания кода, содержащего инструкции, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и и т.п., центральными процессорами компьютера (ЦП), графическими процессорами (ГП) и т.п.
[112] Инструкции могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[113] Компоненты, показанные на фиг. 10 для компьютерной системы (1000), являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего варианты осуществления настоящего раскрытия. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, проиллюстрированных в примерном варианте осуществления компьютерной системы (1000).
[114] Компьютерная система (1000) может включать в себя определенные устройства ввода с человеко-машинным интерфейсом. Такое устройство ввода с человеко-машинным интерфейсом может реагировать на ввод одним или более пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, смахивания, движения управляющей перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например: жестов), обонятельного ввода (не изображен). Устройства с человеко-машинным интерфейсом также могут использоваться для захвата определенных носителей, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двухмерное видео, трехмерное видео, включая стереоскопическое видео).
[115] Устройства ввода с человеко-машинным интерфейсом могут включать в себя одно или более из (только по одному из каждого изображенного): клавиатура (1001), мышь (1002), трекпад (1003), сенсорный экран (1010), джойстик (1005), микрофон (1006), сканер (1007), камера (1008).
[116] Компьютерная система (1000) также может включать в себя определенные устройства вывода с человеко-машинным интерфейсом. Такие устройства вывода с человеко-машинным интерфейсом могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с человеко-машинным интерфейсом могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана (1010) или джойстика (1005), но также могут иметься устройства тактильной обратной связи, которые не служат в качестве устройств ввода), устройства вывода звука (например: динамики (1009), наушники (не изображены)), устройства вывода изображения (например, экраны (1010), включая ЭЛТ-экраны, ЖК-экраны, плазменные экраны, OLED-экраны, каждое из которых имеет или не имеет возможности ввода с сенсорного экрана, каждое с возможностью тактильной обратной связи или без нее - некоторые из которых могут быть способны выводить двухмерный визуальный вывод или более, чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображены), голографические дисплеи и дымовые баки (не изображены)) и принтеры (не изображены).
[117] Компьютерная система (1000) также может включать в себя доступные для человека устройства хранения и связанные с ними носители, такие как оптические носители, включая CD/DVD ROM/RW (1020) с CD/DVD или подобными носителями (1021), флэш-накопитель (1022), съемный жесткий диск или твердотельный накопитель (1023), ранее разработанные магнитные носители, такие как лента и дискета (не изображены), специализированные устройства на основе ROM/ASIC/PLD, такие как защитные ключи (не изображены) и т.п.
[118] Специалисты в данной области также должны понимать, что термин «машиночитаемый носитель», используемый в связи с раскрытым в настоящем документе объектом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[119] Компьютерная система (1000) также может включать в себя интерфейс к одной или более коммуникационным сетям. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные LAN, сотовые сети, включая GSM, 3G, 4G, 5G, LTE и т.п., проводные телевизионные или беспроводные глобальные цифровые сети, включая кабельное телевидение, спутниковое телевидение и наземное телевещание, автомобильное и промышленное оборудование, включая CAN-шину и т.д. Некоторым сетям обычно требуются внешние сетевые интерфейсные адаптеры, которые подключены к определенным портам данных общего назначения или периферийным шинам (1049) (например, к портам USB компьютерной системы (1000)); другие обычно интегрированы в ядро компьютерной системы (1000) путем присоединения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему ПК или интерфейс сотовой сети в компьютерную систему смартфона). Используя любую из этих сетей, компьютерная система (1000) может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное телевидение), однонаправленной только для отправки (например, CAN-шина на определенные устройства с CAN-шиной) или двунаправленной, например, для других компьютерных систем, использующих локальную или глобальную цифровую сеть. В каждой из этих сетей и сетевых интерфейсов могут использоваться определенные протоколы и стеки протоколов, как описано выше.
[120] Вышеупомянутые устройства человеко-машинного интерфейса, доступные человеку устройства хранения и сетевые интерфейсы могут быть присоединены к ядру (1040) компьютерной системы (1000).
[121] Ядро (1040) может включать в себя один или более центральных процессоров (ЦП) (1041), графических процессоров (ГП) (1042), специализированных программируемых процессоров в виде программируемых пользователем вентильных матриц (ППВМ) (1043), аппаратных ускорителей (1044) для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ПЗУ) (1045), оперативным запоминающим устройством (1046), внутренним ЗУ большой емкости, таким как внутренние жесткие диски, недоступные пользователю, твердотельные накопители (SSD) и т.п. (1047), могут быть подключены через системную шину (1048). В некоторых компьютерных системах системная шина (1048) может быть доступна в виде одного или более физических разъемов для обеспечения возможности расширения за счет дополнительных ЦП, ГП и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине (1048) ядра, либо через периферийную шину (1049). Архитектура периферийной шины включает PCI, USB и т.п.
[122] ЦП (1041), ГП (1042), ППВМ (1043) и ускорители (1044) могут выполнять определенные инструкции, которые в сочетании могут составлять вышеупомянутый компьютерный код. Этот компьютерный код может храниться в ПЗУ (1045) или ОЗУ (1046). Переходные данные также могут храниться в ОЗУ (1046), тогда как постоянные данные могут храниться, например, во внутреннем ЗУ большой емкости (1047). Быстрое хранение и извлечение на любое из запоминающих устройств могут быть обеспечены за счет использования кэш-памяти, которая может быть тесно связана с одним или более ЦП (1041), ГП (1042), ЗУ большой емкости (1047), ПЗУ (1045), ОЗУ (1046) и т.п.
[123] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[124] В качестве примера, а не ограничения, компьютерная система, имеющая архитектуру (1000) и, в частности, ядро (1040), может обеспечивать функциональность в результате наличия процессора(ов) (включая ЦП, ГП, ППВМ, ускорители и т.п.), выполняющего программное обеспечение, воплощенное на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя ЗУ большой емкости, как описано выше, а также определенным хранилищем ядра (1040), которые имеют невременной характер, например, внутренним ЗУ (1047) большой емкости ядра или ПЗУ (1045). Программное обеспечение, реализующее различные варианты осуществления настоящего раскрытия, может храниться в таких устройствах и выполняться ядром (1040). Машиночитаемый носитель может включать в себя одно или более запоминающих устройств или микросхем в соответствии с конкретными потребностями. Программное обеспечение может побуждать ядро (1040) и, в частности, процессоры в нем (включая ЦП, ГП, ППВМ и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в ОЗУ (1046) и изменение таких структур данных в соответствии с процессами, определенными программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональность в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель (1044)), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или отдельных частей конкретных процессов, описанных в данном документе. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это применимо. Ссылка на машиночитаемый носитель может включать в себя схему (например, интегральную схему (ИС)), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это применимо. Настоящее раскрытие включает в себя любую подходящую комбинацию аппаратного и программного обеспечения.
[125] Хотя это раскрытие описывает несколько примерных вариантов осуществления, существуют изменения, перестановки и различные заменяющие эквиваленты, которые попадают в объем раскрытия. Таким образом, будет принято во внимание, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы раскрытия и, таким образом, находятся в пределах его сущности и объема правовой охраны.