Способ поуровневого произвольного доступа в кодированном видеопотоке
LAYERED RANDOM ACCESS METHOD IN ENCODED VIDEO STREAM

Перекрестная ссылка на родственную заявку
[1] По настоящей заявке испрашивается приоритет на основании предварительной заявки на патент США №62/954880, поданной 30 декабря 2019 г., и заявки на патент США №17/063082, поданной 5 октября 2020 г., которые полностью включены в настоящий документ посредством ссылки.
Область техники, к которой относится изобретение
[2] Раскрываемый предмет изобретения относится к кодированию и декодированию видео, а более конкретно, к установке флагов при генерации кодированного битового видеопотока.
Предпосылки создания изобретения
[3] Экспертная группа кодирования видео (VCEG, Video Coding Experts Group) в Международном союзе электросвязи - Сектор стандартизации электросвязи (ITU-T, International Telecommunication Union - Telecommunication Standardization Sector), Исследовательская группа 16, Вопрос 6 (Q6/16, Study Group 16, Question 6) и Экспертная группа по движущимся изображениям (MPEG, Moving Picture Experts Group) в Международной организации по стандартизации/Международной электротехнической комиссии, Объединенный технический комитет 1/Подкомиссия 29/Рабочая группа 11 (ISO/IEC (JTC 1/SC 29/WG 11), International Standardization Organization and International Electrotechnical Comission, Joint Technical Committee Number 1, Subcommittee 29, Working Group 11) опубликовали стандарт H.265/HEVC (HEVC, High Efficiency Video Coding, Высокоэффективное кодирование видео) в 2013 г. (версия 1), 2014 г. (версия 2), 2015 г. (версия 3) и 2016 г. (версия 4). В 2015 году эти две организации по стандартизации совместно сформировали группу экспертов (JVET, Joint Video Exploration Team), чтобы изучить потенциал разработки следующего стандарта видеокодирования помимо HEVC. В октябре 2017 года они объявили совместный конкурс предложений (CfP, Call for Proposals) по сжатию видео с возможностями, выходящими за рамки HEVC. К 15 февраля 2018 г. было отправлено всего 22 ответа на CfP по стандартному динамическому диапазону (SDR, Standard Dynamic Range) и 12 ответов на CfP по расширенному динамическому диапазону (HDR, High Dynamic Range) и 12 ответов на CfP по категориям видео 360 градусов, соответственно. В апреле 2018 г. все полученные ответы на конкурс CfP были оценены на 122-м заседании MPEG/10-м заседании JVET. В результате этого заседания JVET официально запустила процесс стандартизации кодирования видео следующего поколения, выходящего за рамки HEVC. Новый стандарт получил название Универсального кодирования видео (VVC, Versatile Video Coding), a JVET была переименована в Объединенную команду экспертов видео (Joint Video Expert Team).
Сущность изобретения
[4] В одной из форм осуществления изобретения предлагается способ генерации кодированного битового видеопотока с использованием по меньшей мере одного процессора, включающий получение блока доступа (AU, Access Unit) внутренней точки произвольного доступа (IRAP, Intra Random Access Point) из битового видеопотока; определение, является ли блок доступа IRAP первым блоком доступа в порядке декодирования, является ли каждое изображение, включенное в блок доступа IRAP, изображением мгновенного обновления декодирования (IDR, Instantaneous Decoder Refresh) и является ли каждое изображение, включенное в блок доступа IRAP, первым изображением уровня, который следует за блоком уровня сетевой абстракции (NAL, Network Abstraction Layer) конца последовательности (EOS, End Of Sequence) в порядке декодирования; на основе определения того, что блок доступа IRAP является первым блоком доступа в порядке декодирования битового видеопотока, определения того, что каждое изображение, включенное в блок доступа IRAP, является изображением IDR, или определение того, что каждое изображение, включенное в блок доступа IRAP, является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, установку первого флага для блока доступа IRAP равным единице; на основе определения того, блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, и определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, определение, установлен ли извне флаг для блока доступа IRAP на внешнее значение; на основе определения того, блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, и определения того, что второй флаг для блока доступа IRAP извне установлен на внешнее значение, установку первого флага для блока доступа IRAP равным внешнему значению; и на основе определения того, блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, и определения того, что второй флаг не установлен извне на внешнее значение, установку первого флага для блока доступа IRAP равным нулю и установку второго флага для блока доступа IRAP равным нулю; кодирование битового видеопотока на основе первого флага для блока доступа IRAP и второго флага для блока доступа IRAP; и передачу кодированного битового видеопотока.
[5] В одной из форм осуществления изобретения предлагается устройство для генерации кодированного битового видеопотока, содержащее по меньшей мере одну память, сконфигурированную для хранения программного кода; и по меньшей мере один процессор, сконфигурированный для считывания программного кода и работы в соответствии с командами программного кода, причем программный код включает в себя: первый код получения, сконфигурированный так, чтобы заставлять по меньшей мере один процессор получать блок доступа (AU) внутренней точки произвольного доступа (IRAP) из битового видеопотока; первый код определения, сконфигурированный так, чтобы заставлять по меньшей мере один процессор определять, является ли блок доступа IRAP первым блоком доступа в порядке декодирования, является ли каждое изображение, включенное в блок доступа IRAP, изображением мгновенного обновления декодирования (IDR), и является ли каждое изображение, включенное в блок доступа IRAP, первым изображением уровня, который следует за блоком уровня сетевой абстракции (NAL) конца последовательности (EOS) в порядке декодирования; первый код установки, сконфигурированный так, чтобы заставлять по меньшей мере один процессор, на основе определения того, что блок доступа IRAP является первым блоком доступа в порядке декодирования битового видеопотока, определения того, что каждое изображение, включенное в блок доступа IRAP, является изображением IDR, или определения того, что каждое изображение, включенное в блок доступа IRAP, является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, устанавливать первый флаг для блока доступа IRAP равным единице; второй код определения, сконфигурированный так, чтобы заставлять по меньшей мере один процессор, на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, и определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, определять, установлен ли второй флаг для блока доступа IRAP извне на внешнее значение; второй код установки, сконфигурированный так, чтобы заставлять по меньшей мере один процессор на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, и определения того, что второй флаг для блока доступа IRAP извне установлен на внешнее значение, устанавливать первый флаг для блока доступа IRAP равным внешнему значению; и третий код установки, сконфигурированный так, чтобы заставлять по меньшей мере один процессор на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, и определения того, что второй флаг внешнее не установлен на внешнее значение, устанавливать первый флаг для блока доступа IRAP равным нулю и устанавливать второй флаг для блока доступа IRAP равным нулю; код кодирования, сконфигурированный так, чтобы заставлять по меньшей мере один процессор кодировать битовый видеопоток на основе первого флага для блока доступа IRAP и второго флага для блока доступа IRAP; код передачи, сконфигурированный так, чтобы заставлять по меньшей мере один процессор передавать кодированный битовый видеопоток.
[6] В одной из форм осуществления изобретения предлагается машиночитаемый носитель, на котором хранятся команды, включая одну или более команд, которые при выполнении одним или более процессорами устройства для генерации кодированного битового видеопотока заставляют один или более процессоров: получать блок доступа (AU) внутренней точки произвольного доступа (IRAP) из битового видеопотока; определять, является ли блок доступа IRAP первым блоком доступа в порядке декодирования, является ли каждое изображение, включенное в блок доступа IRAP, изображением мгновенного обновления декодирования (IDR) и является ли каждое изображение, включенное в блок доступа IRAP, первым изображением уровня, который следует за блоком уровня сетевой абстракции (NAL) конца последовательности (EOS) в порядке декодирования; на основе определения того, что блок доступа IRAP является первым блоком доступа в порядке декодирования битового видеопотока, определения того, что каждое изображение, включенное в блок доступа IRAP, является изображением IDR, или определения того, что каждое изображение, включенное в блок доступа IRAP, является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, устанавливать первый флаг для блока доступа IRAP равным единице; на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, и определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, определять, установлен ли извне флаг для блока доступа IRAP на внешнее значение; на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, и определения того, что второй флаг для блока доступа IRAP извне установлен на внешнее значение, устанавливать первый флаг для блока доступа IRAP, равным внешнему значению; и на основе определения того, что блок доступа IRAP не является первым блоком доступа в порядке декодирования, определения того, что каждое изображение, включенное в блок доступа IRAP, не является изображением IDR, определения того, что каждое изображение, включенное в блок доступа IRAP, не является первым изображением уровня, который следует за блоком NAL в порядке декодирования EOS, и определения того, что второй флаг не установлен извне на внешнее значение, устанавливать первый флаг для блока доступа IRAP равным нулю и устанавливать второй флаг для блока доступа IRAP равным нулю; кодировать битовый видеопоток на основе первого флага для блока доступа IRAP и второго флага для блока доступа IRAP; и передавать кодированный битовый видеопоток.
Краткое описание чертежей
[7] Дополнительные особенности, сущность и различные преимущества раскрываемого предмета изобретения будут более очевидны из следующего подробного описания и прилагаемых чертежей, на которых:
[8] Фиг. 1 представляет собой схематическое изображение упрощенной блок-схемы системы связи в соответствии с формой осуществления изобретения.
[9] Фиг. 2 - схематическое изображение упрощенной блок-схемы системы связи в соответствии с формой осуществления изобретения.
[10] Фиг. 3 - схематическое изображение упрощенной блок-схемы декодера в соответствии с формой осуществления изобретения.
[11] Фиг. 4 - схематическое изображение упрощенной блок-схемы кодера в соответствии с формой осуществления изобретения.
[12] На фиг. 5 показан пример структуры битового потока, в котором AU, не являющийся AU IRAP, содержит блок изображения (PU, Picture Unit) IRAP, в котором кодированное изображение является изображением IRAP, в соответствии с формой осуществления изобретения.
[13] Фиг. 6A-6D - блок-схемы примерных процессов для генерации кодированного битового видеопотока в соответствии с формами осуществления изобретения.
[14] Фиг. 7 - схематическое изображение компьютерной системы в соответствии с формой осуществления изобретения.
Подробное описание
[15] Фиг. 1 представляет собой упрощенную блок-схему системы (100) связи согласно одной из форм осуществления настоящего изобретения. Система (100) может содержать по меньшей мере два терминала (110-120), соединенные друг с другом через сеть (150). Для однонаправленной передачи данных первый терминал (110) может кодировать видеоданные в локальном местоположении для передачи другому терминалу (120) через сеть (150). Второй терминал (120) может принимать кодированные видеоданные другого терминала из сети (150), декодировать кодированные данные и отображать восстановленные видеоданные. Однонаправленная передача данных может быть обычным явлением в применениях мультимедийного обслуживания и т.п.
[16] На фиг. 1 показана вторая пара терминалов (130, 140), обеспечивающих поддержку двунаправленной передачи кодированного видео, которая может происходить, например, во время видеоконференцсвязи. Для двунаправленной передачи данных каждый терминал (130, 140) может кодировать видеоданные, захваченные в локальном местоположении, для передачи на другой терминал через сеть (150). Каждый терминал (130, 140) также может принимать кодированные видеоданные, передаваемые другим терминалом, может декодировать кодированные данные и может отображать восстановленные видеоданные на локальном устройстве отображения.
[17] На фиг. 1 терминалы (110-140) могут быть показаны как серверы, персональные компьютеры и смартфоны, но принципы настоящего изобретения могут быть не ограничены этим. Формы осуществления настоящего изобретения находят применение в портативных компьютерах, планшетных компьютерах, медиаплеерах и/или специализированном оборудовании для видеоконференцсвязи. Сеть (150) представляет любое количество сетей, которые передают кодированные видеоданные между терминалами (110-140), включая, например, проводные и/или беспроводные сети связи. Сеть (150) связи может обмениваться данными по каналам с коммутацией каналов и/или с коммутацией пакетов. Репрезентативные сети включают телекоммуникационные сети, локальные сети, глобальные сети и/или Интернет. Для целей настоящего обсуждения архитектура и топология сети (150) могут быть несущественными для работы настоящего изобретения, если это не объясняется в данном документе ниже.
[18] На фиг. 2 показано в качестве примера применения для раскрываемого предмета изобретения размещение кодера и декодера видео в потоковой среде. Раскрываемый предмет изобретения может быть в равной степени применим к другим применениям с поддержкой видео, включая, например, видеоконференцсвязь, цифровое телевидение, хранение сжатого видео на цифровых носителях, включая компакт диск (CD, Compact Disk), универсальный цифровой диск (DVD, Digital Versatile Disk), карту памяти и т.п.
[19] Система потоковой передачи может содержать подсистему (213) видеозахвата, которая может включать в себя источник (201) видеосигналов, например цифровую камеру, создающую, например, поток (202) отсчетов несжатого видео. Этот поток (202) отсчетов, изображенный жирной линией, чтобы подчеркнуть большой объем данных по сравнению с кодированными битовыми потоками видео, может обрабатываться кодером (203), подключенным к камере (201). Кодер (203) может включать в себя аппаратное обеспечение, программное обеспечение или их комбинацию, чтобы задействовать или реализовать аспекты раскрываемого предмета изобретения, как более подробно описано ниже. Кодированный битовый поток (204) видео, изображенный тонкой линией, чтобы подчеркнуть меньший объем данных по сравнению с потоком отсчетов, может сохраняться на сервере (205) потоковой передачи для будущего использования. Один или более клиентов (206, 208) потоковой передачи могут получать доступ к серверу (205) потоковой передачи для получения копий (207, 209) кодированного битового потока (204) видео. Клиент (206) может включать в себя видеодекодер (210), который декодирует входящую копию (207) кодированного битового видеопотока и создает исходящий поток (211) отсчетов видео, который может отображаться на дисплее (212) или другом устройстве визуализации (не изображенным). В некоторых потоковых системах битовые потоки (204, 207, 209) видео могут кодироваться в соответствии с определенными стандартами кодирования/сжатия видео. Примеры этих стандартов включают Рекомендацию ITU-T Н.265. В стадии разработки находится стандарт кодирования видеосигналов, неофициально известный как Универсальное кодирование видео (VVC, Versatile Video Coding). Раскрываемый предмет изобретения может использоваться в контексте стандарта VVC.
[20] Фиг. 3 может представлять функциональную блок-схему видеодекодера (210) согласно одной из форм осуществления настоящего изобретения.
[21] Приемник (310) может принимать одну или более кодированных видеопоследовательностей, которые должны быть декодированы декодером (210); в той же или другой форме осуществления изобретения - по одной кодированной видеопоследовательности за раз, где декодирование каждой кодированной видеопоследовательности не зависит от других кодированных видеопоследовательностей. Кодированная видеопоследовательность может приниматься из канала (312), который может быть аппаратным/программным соединением с устройством хранения, в котором хранятся кодированные видеоданные. Приемник (310) может принимать кодированные видеоданные вместе с другими данными, например, кодированными аудиоданными и/или потоками вспомогательных данных, которые могут пересылаться их соответствующим объектам использования (не изображенным). Приемник (310) может отделять кодированную видеопоследовательность от других данных. Для борьбы с джиттером сети может быть включена буферная память (315) между приемником (310) и энтропийным декодером/синтаксическим анализатором (320) (далее - "синтаксическим анализатором"). Когда приемник (310) принимает данные от устройства хранения/пересылки с достаточной полосой пропускания и управляемости, или из изосинхронной сети, буфер (315) может не понадобиться или может быть небольшим. Для использования в пакетных сетях с максимальной эффективностью, таких как Интернет, может потребоваться буфер (315), он может быть сравнительно большим и предпочтительно может иметь адаптивный размер.
[22] Видеодекодер (210) может содержать синтаксический анализатор (320) для восстановления символов (321) из энтропийно кодированной видеопоследовательности. Категории этих символов включают в себя информацию, используемую для управления работой декодера (210), и потенциально информацию для управления устройством визуализации, таким как дисплей (212), который не является неотъемлемой частью декодера, но может быть присоединен к нему, как это было показано на фиг. 3. Управляющая информация для устройства (устройств) визуализации может быть в форме фрагментов набора параметров дополнительной уточняющей информацией (сообщений SEI (Supplementary Enhancement Information)) или информацией по использованию видео (VUI, Video Usability Information) (не показанных). Синтаксический анализатор (320) может анализировать/энтропийно декодировать принятую кодированную видеопоследовательность. Кодирование кодированной видеопоследовательности может осуществляться в соответствии с технологией или стандартом кодирования видео, включая кодирование переменной длины, кодирование Хаффмана, арифметическое кодирование с учетом контекста или без него и т.д. Синтаксический анализатор (320) может извлекать из кодированной видеопоследовательности набор параметров подгруппы по меньшей мере для одной из подгрупп пикселей в видеодекодере на основе по меньшей мере одного параметра, соответствующего группе. Подгруппы могут включать в себя группы изображений (GOP), изображения, фрагменты изображения, тайлы, слайсы, "кирпичи" (bricks), макроблоки, пакеты кодового дерева (CTU, Coding Tree Unit), кодовые пакеты (CU, Coding Unit), блоки, пакеты преобразования (TU, Transform Unit), пакеты предсказания (PU, Prediction Unit,) и т.д. Тайл может указывать прямоугольную область из CU/CTU в конкретном столбце и строке тайлов в изображении. "Кирпич" может указывать на прямоугольную область из строк CU/CTU внутри конкретного тайла. Слайс может указывать на один или более "кирпичей" изображения, которые содержатся в блоке NAL. Фрагмент изображения может указывать на прямоугольную область из одного или более слайсов в изображении. Энтропийный декодер/синтаксический анализатор также может извлекать из кодированной видеопоследовательности информацию, такую как коэффициенты преобразования, значения параметров квантователя, векторы движения и т.д.
[23] Синтаксический анализатор (320) может выполнять операцию энтропийного декодирования/синтаксического анализа над видеопоследовательностью, принимаемой из буфера (315), таким образом, чтобы создавать символы (321).
[24] Восстановление символов (321) может включать в себя несколько различных блоков в зависимости от типа кодированного видеоизображения или его частей (например, изображения, кодированного с внутренним и внешним предсказанием, блока, кодированного с внутренним и внешним предсказанием) и других факторов. Какие блоки задействовать и каким образом, можно управлять с помощью управляющей информации подгруппы, которая была синтаксически проанализирована из кодированной видеопоследовательности с помощью синтаксического анализатора (320). Поток такой управляющей информации подгруппы между синтаксическим анализатором (320) и множеством блоков не показан для ясности.
[25] Помимо уже упомянутых функциональных блоков, декодер 210 может быть концептуально подразделен на ряд функциональных блоков, как описано ниже. При практической реализации, работающей в условиях коммерческих ограничений, многие из этих блоков тесно взаимодействуют друг с другом и могут, по меньшей мере частично, быть интегрированы друг в друга. Однако для целей описания раскрываемого предмета изобретения уместно концептуальное подразделение на функциональные блоки, приведенные ниже.
[26] Первым блоком является блок (351) масштабирования/обратного преобразования. Блок (351) масштабирования/обратного преобразования принимает квантованный коэффициент преобразования, а также управляющую информацию, включая то, какое преобразование использовать, размер блока, коэффициент квантования, матрицы масштабирования квантования и т.д. в виде символа(-ов) (321) от синтаксического анализатора (320). Он может выводить блоки, содержащие значения отсчетов, которые могут быть введены в агрегатор (355).
[27] В некоторых случаях выходные отсчеты блока (351) масштабирования/ обратного преобразования могут относиться к блоку, кодированному с внутренним предсказанием, то есть: блоку, который не использует информацию предсказания из ранее восстановленных изображений, но может использовать информацию предсказания из ранее восстановленных частей текущего изображения. Такая информация предсказания может быть предоставлена блоком (352) внутрикадрового предсказания. В некоторых случаях блок (352) внутрикадрового предсказания формирует блок того же размера и формы, что и восстанавливаемый блок, используя окружающую уже восстановленную информацию, извлеченную из текущего (частично восстановленного) изображения (358). Агрегатор (355) в некоторых случаях добавляет для каждого отсчета информацию предсказания, сформированную блоком (352) внутрикадрового предсказания, к информации выходных отсчетов, предоставляемой блоком (351) масштабирования/обратного преобразования.
[28] В других случаях выходные отсчеты блока (351) масштабирования/ обратного преобразования могут относиться к блоку, кодированному с внешним предсказанием и, возможно, с компенсацией движения. В таком случае блок (353) предсказания с компенсацией движения может получать доступ к памяти (357) опорных изображений для выборки отсчетов, используемых для предсказания. После компенсации движения выбранных отсчетов в соответствии с символами (321), относящимися к блоку, эти отсчеты могут быть добавлены агрегатором (355) к выходному сигналу блока масштабирования/обратного преобразования (в этом случае называемых остаточными отсчетами или остаточным сигналом), чтобы сформировать информацию о выходных отсчетах. Адреса в памяти опорных изображений, откуда блок компенсации движения выбирает отсчеты предсказания, могут управляться векторами движения, доступными блоку компенсации движения в форме символов (321), которые могут иметь, например, X, Y и компоненты опорного изображения. Компенсация движения также может включать в себя интерполяцию значений отсчетов, извлеченных из памяти опорных изображений, когда используются точные векторы движения подотсчета, механизмы предсказания вектора движения и т.д.
[29] Выходные отсчеты агрегатора (355) могут подвергаться различным технологиям петлевой фильтрации в блоке (356) петлевого фильтра. Технологии сжатия видео могут включать в себя технологии внутрипетлевой фильтрации, которые управляются параметрами, включенными в кодированный битовый видеопоток и предоставляемыми блоку (356) петлевого фильтра в виде символов (321) из синтаксического анализатора (320), но также могут реагировать на метаинформацию, полученную во время декодирования предыдущих (в порядке декодирования) частей кодированного изображения или кодированной видеопоследовательности, а также в ответ на ранее восстановленные и отфильтрованные по петле значения отсчетов.
[30] Выходными данными блока (356) петлевого фильтра может быть поток отсчетов, который может выводиться в устройство (212) визуализации, а также сохраняться в памяти опорных изображений для использования в будущем межкадровом предсказании.
[31] Некоторые кодированные изображения после полного восстановления могут использоваться в качестве опорных изображений для будущего предсказания. После того, как кодированное изображение полностью восстановлено и кодированное изображение было идентифицировано как опорное изображение (например, синтаксическим анализатором (320)), текущее опорное изображение (358) может стать частью буфера (357) опорных изображений, и память свежего текущего изображения может быть перераспределена перед началом восстановления следующего кодированного изображения.
[32] Видеодекодер 210 может выполнять операции декодирования согласно заранее определенной технологии сжатия видео, которая может быть задокументирована в стандарте, таком как Рекомендация Н.265 ITU-T. Кодированная видеопоследовательность может соответствовать синтаксису, указанному используемой технологией или стандартом сжатия видео, в том смысле, что она придерживается синтаксиса технологии или стандарта сжатия видео, как указано в документе или стандарте технологии сжатия видео и, в частности, в профилях, задокументированных в них. Для соответствия также необходимо, чтобы сложность кодированной видеопоследовательности находилась в пределах, определенных уровнем технологии или стандарта сжатия видео. В некоторых случаях уровни ограничивают максимальный размер изображения, максимальную частоту кадров, максимальную частоту отсчетов восстановления (измеряемую, например, в миллионах отсчетов в секунду), максимальный размер опорного изображения и т.д. Пределы, установленные уровнями, в некоторых случаях могут быть дополнительно ограничены с помощью спецификаций гипотетического эталонного декодера (HRD, Hypothetical Reference Decoder) и метаданных для управления буфером HRD, сигнализируемых в кодированной видеопоследовательности.
[33] В одной из форм осуществления изобретения приемник (310) может принимать с кодированным видео дополнительные (избыточные) данные. Дополнительные данные могут быть включены как часть кодированной видеопоследовательности(-ей). Дополнительные данные могут использоваться видеодекодером (210) для правильного декодирования данных и/или для более точного восстановления исходных видеоданных. Дополнительные данные могут быть в форме, например, временных, пространственных уровней или уровней улучшения отношения сигнал/шум (SNR, Signal-to-Noise Ratio), избыточных слайсов, избыточных изображений, кодов прямого исправления ошибок и т.д.
[34] Фиг. 4 может быть функциональной блок-схемой видеокодера (203) согласно одной из форм осуществления настоящего изобретения.
[35] Кодер (203) может принимать отсчеты видео от источника (201) видео (который не является частью кодера), который может захватывать видеоизображение(-ия) для кодирования кодером (203).
[36] Источник (201) видео может предоставлять исходную видеопоследовательность, которая должна быть кодирована кодером (203), в форме потока отсчетов цифрового видео, который может иметь какую-то подходящую глубину в битах (например: 8 бит, 10 бит, 12 бит, …), какое-то цветовое пространство (например, пространство Y СrСВ по рекомендации ITU-R ВТ.601, RGB, …), какую-то подходящую структуру отсчетов (например, Y СrСb 4:2:0, Y СrСb 4:4:4). В системе обслуживания мультимедиа источник (201) видео может быть запоминающим устройством, хранящим заранее подготовленное видео. В системе видеоконференцсвязи видеосигналов источник (203) может быть камерой, которая фиксирует информацию локального изображения в виде видеопоследовательности. Видеоданные могут предоставляться в виде множества отдельных изображений, которые при последовательном просмотре передают движение. Сами изображения могут быть организованы как пространственный массив пикселей, при этом каждый пиксель может содержать один или более отсчетов в зависимости от используемой структуры отсчетов, цветового пространства и т.д. Специалисты в данной области техники могут легко понять взаимосвязь между пикселями и отсчетами. Описание ниже ориентировано на отсчеты.
[37] Согласно одной из форм осуществления изобретения кодер (203) может кодировать и сжимать изображения исходной видеопоследовательности в кодированную видеопоследовательность (443) в реальном времени или с любыми другими временными ограничениями, как того требует применение. Обеспечение соответствующей скорости кодирования - одна из функций контроллера (450). Контроллер управляет другими функциональными блоками, как описано ниже, и функционально соединен с этими блоками. Соединение не изображено для ясности. Параметры, установленные контроллером, могут включать в себя параметры, связанные с управлением скоростью (пропуск изображения, квантователь, значение лямбда для технологий оптимизации скорость-искажение, …), размером изображения, структурой группы изображений (GOP), максимальным диапазоном поиска вектора движения и т.д. Специалисты в данной области техники могут легко определить другие функции контроллера (450), поскольку они могут относиться к видеокодеру (203), оптимизированному для определенной структуры системы.
[39] Работа "локального" декодера (433) может быть такой же, как у "удаленного" декодера (210), который уже был подробно описан выше в связи с фиг. 3. Кратко обратимся также к фиг. 4, однако, поскольку символы доступны, и кодирование/декодирование символов в кодированную видеопоследовательность энтропийным кодером (445) и синтаксическим анализатором (320) может осуществляться без потерь, части энтропийного декодирования декодера (210), включая канал (312), приемник (310), буфер (315) и синтаксический анализатор (320) могут не быть полностью реализованы в локальном декодере (433).
[40] В этой точке можно сделать наблюдение, что любая технология декодирования, помимо синтаксического анализа/энтропийного декодирования, которая присутствует в декодере, также обязательно должна присутствовать в, по существу, идентичной функциональной форме в соответствующем кодере. По этой причине раскрываемый предмет изобретения сосредотачивает внимание на работе декодера. Описание технологий кодирования может быть сокращено, поскольку они являются инверсией полностью описанных технологий декодирования. Только в некоторых областях требуется более подробное описание, которое приводится ниже.
[41] В качестве части своей работы кодер (430) источника может выполнять кодирование с предсказанием с компенсацией движения, которое кодирует входной кадр с предсказанием со ссылкой на один или более ранее кодированных кадров из видеопоследовательности, которые были отмечены как "опорные кадры". Таким образом, машина (432) кодирования кодирует разницы между блоками пикселей входного кадра и блоками пикселей опорного кадра(-ов), которые могут быть выбраны в качестве опорных значений предсказания для входного кадра.
[42] Локальный видеодекодер (433) может декодировать кодированные видеоданные кадров, которые могут быть обозначены как опорные кадры, на основе символов, созданных кодером (430) источника. Операции машины (432) кодирования могут быть преимущественно процессами с потерями. Когда кодированные видеоданные могут быть декодированы в видеодекодере (не показан на фиг. 4), восстановленная видеопоследовательность обычно может быть копией исходной видеопоследовательности с некоторыми ошибками. Локальный видеодекодер (433) копирует процессы декодирования, которые могут выполняться видеодекодером на опорных кадрах, и может вызывать сохранение восстановленных опорных кадров в кэше (434) опорных изображений. Таким образом, кодер (203) может локально хранить копии восстановленных опорных кадров, которые имеют общий контент, как восстановленные опорные кадры, которые будут получены видеодекодером на дальнем конце (при отсутствии ошибок передачи).
[43] Предсказатель (435) может выполнять поиски с предсказанием для машины (432) кодирования. То есть, для нового кадра, который должен быть кодирован, предсказатель (435) может искать в памяти (434) опорных изображений данные отсчетов (в качестве возможных опорных блоков пикселей) или определенные метаданные, такие как векторы движения опорных изображений, формы блоков и т.д., это может служить подходящим эталоном для предсказания для новых изображений. Предсказатель (435) может работать на основе блока отсчетов на блок пикселей, чтобы найти соответствующие эталоны для предсказания. В некоторых случаях, как определено результатами поиска, полученными предсказателем (435), входное изображение может иметь эталоны предсказания, взятые из множества опорных изображений, сохраненных в памяти (434) опорных изображений.
[44] Контроллер (450) может управлять операциями кодирования видеокодера (430), включая, например, установку параметров и параметров подгруппы, используемых для кодирования видеоданных.
[45] Выходные данные всех вышеупомянутых функциональных блоков могут подвергаться энтропийному кодированию в энтропийном кодере (445). Энтропийный кодер переводит символы, сформированные различными функциональными блоками, в кодированную видеопоследовательность путем сжатия без потерь символов согласно различным технологиям, например, кодированию Хаффмана, кодированию с переменной длиной, арифметическому кодированию и т.д.
[46] Передатчик (440) может буферизовать кодированную видеопоследовательность (видеопоследовательности), созданную энтропийным кодером (445), чтобы подготовить ее к передаче через канал связи (460), который может быть аппаратным/программным каналом связи к устройству хранения данных, которое будет хранить кодированные видеоданные. Передатчик (440) может объединять кодированные видеоданные из видеокодера (430) с другими данными, которые должны быть переданы, например, с кодированными аудиоданными и/или потоками вспомогательных данных (источники не показаны).
[47] Контроллер (450) может управлять работой кодера (203). Во время кодирования контроллер (450) может назначать каждому кодированному изображению определенный тип кодированного изображения, что может повлиять на технологии кодирования, которые могут быть применены к соответствующему изображению. Например, изображения часто могут быть назначены как один из следующих типов кадров:
[48] Изображение с внутренним кодированием (I-изображение) (I picture, Intra Picture) может быть таким, которое может быть кодировано и декодировано без использования какого-либо другого кадра в последовательности в качестве источника предсказания. Некоторые видеокодеки позволяют использовать различные типы с внутренним кодированием, включая, например, обновленные изображения, с помощью независимого декодера. Могут быть использованы варианты I-изображений и их соответствующие применения и особенности.
[49] Изображение, кодированное с предсказанием, (Р-изображение) (Р picture, Predictive picture) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более одного вектора движения и опорного индекса для предсказания значений отсчетов каждого блока.
[50] Изображение, кодированное с двунаправленным предсказанием, (В-изображение) (В Picture, Bi-directionally predictive picture) может быть таким, которое может быть кодировано и декодировано с использованием внутреннего предсказания или внешнего предсказания с использованием не более двух векторов движения и справочных индексов для предсказания значений отсчетов каждого блока. Точно так же изображения, кодированные с множественным предсказанием, могут использовать более двух опорных изображений и связанных с ними метаданных для восстановления одиночного блока.
[51] Исходные изображения обычно могут быть пространственно подразделены на множество блоков отсчетов (например, блоки по 4×4, 8×8, 4×8 или 16×16 отсчетов каждый) и кодированы на поблочной основе. Блоки могут кодироваться с предсказанием со ссылкой на другие (уже кодированные) блоки, как определено назначением кодирования, применяемым к соответствующим изображениям блоков. Например, блоки 1-изображений могут кодироваться без предсказания или они могут кодироваться с предсказанием со ссылкой на уже кодированные блоки одного и того же изображения (пространственное предсказание или внутреннее предсказание). Пиксельные блоки Р-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно ранее кодированное опорное изображение. Блоки В-изображений могут кодироваться без предсказания, посредством пространственного предсказания или посредством временного предсказания со ссылкой на одно или два ранее кодированные опорные изображения.
[52] Видеокодер (203) может выполнять операции кодирования согласно заранее определенной технологии или стандарту видеокодирования, такому как Рекомендация Н.265 ITU-T. Во время своей работы видеокодер (203) может выполнять различные операции сжатия, включая операции кодирования с предсказанием, которые используют временную и пространственную избыточность во входной видеопоследовательности. Кодированные видеоданные, следовательно, могут соответствовать синтаксису, заданному используемой технологией или стандартом видеокодирования.
[53] В одной из форм осуществления изобретения передатчик (440) может передавать дополнительные данные с кодированным видео. Видеокодер (430) может включать такие данные как часть кодированной видеопоследовательности. Дополнительные данные могут содержать временные/пространственные/улучшающие SNR уровни, другие формы избыточных данных, такие как избыточные изображения и слайсы, сообщения дополнительной расширенной информации (SEI), фрагменты набора параметров информации о свойствах видео (VUI) и т.д.
[54] Формы осуществления изобретения могут относиться к исправлению ошибки, связанной с флагами (HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag) в блоке доступа (AU), не являющемся AU IRAP, и тем самым сделать поддержку поуровневого произвольного доступа чистой в VVC. Например, в формах осуществления изобретения значения HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть установлены равными 0 по умолчанию для каждого AU, не являющегося AU IRAP. Кроме того, в формах осуществления изобретения значениями HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NohicorrectPicOutputFlag манипулируют для каждого PU (IRAP) (для каждого уровня).
[55] В текущем проекте спецификации VVC JVET-P2001 (редакционно обновленном с помощью JVET-Q0041) кодированная видеопоследовательность (CVS, Coded Video Sequence) может начинаться с блока доступа (AU) внутренней точки произвольного доступа (IRAP), в котором есть блок изображения (PU, Picture Unit) для каждого уровня в CVS, и кодированное изображение в каждом PU является изображением IRAP. Для каждого AU IRAP значения HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливаются для работы со связанными опережающими пропускаемыми изображениями с произвольным доступом (RASL, Random Access Skipped Leading), которые недоступны при декодировании. Для каждого AU с постепенным обновлением при декодировании (GDR, Gradual Decoding Refresh) значения HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливаются аналогичным образом.
[56] С другой стороны, проект VVC допускает, чтобы AU, не являющийся AU IRAP, содержал блок изображения (PU) IRAP, в котором кодированное изображение является изображением IRAP. На фиг.5 показан пример такой ситуации. Однако значения HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag не устанавливаются равными определенным значениям в AU, не являющимся AU IRAP. Эти флаги устанавливаются равными определенным значениям только тогда, когда текущий AU является AU IRAP, и не имеют значений по умолчанию. Таким образом, на флаги ссылаются без установки значения, когда декодируется PU IRAP в AU, не являющимся AU IRAP. Это ошибка в текущей спецификации.
[57] Кроме того, для поддержки поуровневого произвольного доступа в текущей спецификации VVC можно выполнять произвольный доступ в позиции PU IRAP, отбрасывая все блоки PU перед PU IRAP. Чтобы сделать возможным такой поуровневый произвольный доступ путем удаления некоторых предшествующих PU перед PU IRAP в AU, не являющимся AU IRAP, можно манипулировать значениями HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag для каждого PU IRAP каждого уровня.
[58] Формы осуществления изобретения могут относиться к исправлению ошибки, описанной выше, с помощью флагов (HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag) в AU, не являющемся AU IRAP, и осуществления поддержки чистого поуровневого произвольного доступа в VVC.
[59] Например, в формах осуществления изобретения значения HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть установлены равными 0 по умолчанию для каждого AU, не являющегося AU IRAP. Кроме того, в формах осуществления изобретения, значениями HandleCraAsCvsStartFlag, HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag можно манипулировать для каждого PU IRAP.
[60] В формах осуществления изобретения для каждого блока AU IRAP в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования, каждое изображение является изображением мгновенного обновления декодирования (IDR), или каждое изображение является первым изображением уровня, который следует за блоком уровня абстракции сети (NAL) конца последовательности (EOS) в порядке декодирования, переменная NoIncorrectPicOutputFlag устанавливается равной 1. В противном случае, если какой-либо внешний процесс доступен для установки переменной HandleCraAsCvsStartFlag на значение для AU, HandleCraAsCvsStartFlag устанавливается равным значению, предоставленному внешним процессом, a NoIncorrectPicOutputFlag устанавливается равным HandleCraAsCvsStartFlag. В противном случае обе переменные HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливаются равными 0.
[61] Для каждого блока AU IRAP в битовом потоке HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть установлены равными 0.
[62] В формах осуществления изобретения для каждого блока AU GDR в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования или каждое изображение является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleGdrAsCvsStartFlag на значение для AU, HandleGdrAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, а NoIncorrectPicOutputFlag может быть установлена равной HandleGdrAsCvsStartFlag. В противном случае HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0.
[63] Вышеупомянутые операции как для изображений IRAP, так и для изображений GDR могут использоваться для идентификации потоков CVS в битовом потоке.
[64] В формах осуществления изобретения для каждого AU в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования, каждое изображение является изображением IDR или каждое изображение является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, то переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleCraAsCvsStartFlag на значение для блока доступа IRAP, HandleCraAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, a NoIncorrectPicOutputFlag установлена равной HandleCraAsCvsStartFlag. В противном случае HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0.
[65] В формах осуществления изобретения для каждого блока AU GDR в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования или каждое изображение является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если какой-либо внешний процесс не доступен для установки переменной HandleGdrAsCvsStartFlag на значение для AU, HandleGdrAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, а NoIncorrectPicOutputFlag может быть установлена равной HandleGdrAsCvsStartFlag. В противном случае HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0.
[66] Вышеупомянутые операции как для изображений IRAP, так и для изображений GDR могут использоваться для идентификации последовательностей CVS в битовом потоке.
[67] В формах осуществления изобретения для каждого блока AU IRAP в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования, каждое изображение является изображением IDR или каждое изображение является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, то переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleCraAsCvsStartFlag на значение для AU, HandleCraAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, а NoIncorrectPicOutputFlag может быть установлена равной HandleCraAsCvsStartFlag. В противном случае HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0.
[68] В формах осуществления изобретения к каждому блоку изображения (PU) IRAP блока доступа, не являющегося блоком доступа IRAP, в битовом потоке, может применяться следующее. Если изображение PU IRAP является изображением IDR или первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, переменная NoIncorrectPicOutputFlag для PU IRAP может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleCraAsCvsStartFlag на значение для PU IRAP, HandleCraAsCvsStartFlag можно установить равным значению, предоставленному внешним процессом, a NoIncorrectPicOutputFlag можно установить равным HandleCraAsCvsStartFlag для PU IRAP. В противном случае HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0 для PU IRAP.
[69] В формах осуществления изобретения для каждого блока AU GDR в битовом потоке может применяться следующее. Если AU является первым блоком доступа в битовом потоке в порядке декодирования или каждое изображение является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleGdrAsCvsStartFlag на значение для AU, то HandleGdrAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, а NoIncorrectPicOutputFlag может быть установлена равной HandleGdrAsCvsStartFlag. В противном случае HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут быть обе установлены равными 0.
[70] В формах осуществления изобретения для каждого PU GDR из AU, не являющемуся AU IRAP, в битовом потоке может применяться следующее. Если изображение PU GDR является первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования, переменная NoIncorrectPicOutputFlag может быть установлена равной 1. В противном случае, если доступен какой-либо внешний процесс для установки переменной HandleGdrAsCvsStartFlag на значение для PU GDR, то HandleGdrAsCvsStartFlag может быть установлена равной значению, предоставленному внешним процессом, a NoIncorrectPicOutputFlag может быть установлена равной HandleGdrAsCvsStartFlag для PU GDR. В противном случае HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag могут обе быть установлены равными 0 для PU GDR.
[71] Фиг. 6A-6D представляют собой блок-схему примера процессов 600А, 600В, 600С и 600D для генерации кодированного битового видеопотока в соответствии с формами осуществления изобретения. В формах осуществления изобретения любой из процессов 600А, 600В, 600С и 600D или любые части процессов 600А, 600В, 600С и 600D могут быть объединены в любой комбинации или перестановке и в любом порядке по желанию. В некоторых реализациях один или более блоков процессов на фиг. 6A-6D могут выполняться декодером 210. В некоторых реализациях один или более блоков обработки на фиг. 6A-6D могут выполняться другим устройством или группой устройств, отдельных от декодера 210 или включающих в себя его, например, кодером 203.
[72] Как показано на фиг.6А, процесс 600А может включать в себя получение блока доступа (AU) внутренней точки произвольного доступа (IRAP) из битового видеопотока (блок 611).
[73] Как далее показано на фиг.6А, процесс 600А может включать определение, является ли блок доступа IRAP первым блоком доступа в порядке декодирования, является ли каждое изображение, включенное в блок доступа IRAP, изображением мгновенного обновления декодирования (IDR), и является ли каждое изображение, включенное в блок доступа IRAP, первым изображением уровня, который следует за блоком уровня сетевой абстракции (NAL) конца последовательности (EOS) в порядке декодирования (блок 612).
[74] Как далее показано на фиг. 6А, если результатом любого из определений в блоке 612 является да (ДА у блока 612), процесс 600А может перейти к блоку 613. Однако, если результат всех определений в блоке 612 - нет (НЕТ у блока 612), процесс 600А может перейти к блоку 614.
[75] Как далее показано на фиг. 6А, процесс 600А может включать в себя установку первого флага для блока доступа IRAP равным единице (блок 613).
[76] Как далее показано на фиг. 6А, процесс 600А может включать в себя определение того, установлен ли извне флаг для блока доступа IRAP на внешнее значение (блок 614).
[77] Как далее показано на фиг. 6А, если установлено, что второй флаг для блока доступа IRAP установлен извне на внешнее значение (ДА у блока 614), процесс 600А может перейти к блоку 615. Однако, если определено, что второй флаг для блока доступа IRAP не установлен извне на внешнее значение (НЕТ у блока 614), процесс 600А может перейти к блоку 616.
[78] Как далее показано на фиг. 6А, процесс 600А может включать в себя установку первого флага для блока доступа IRAP равным внешнему значению (блок 615).
[79] Как далее показано на фиг. 6А, процесс 600А может включать в себя установку первого флага для блока доступа IRAP и второго флага для блока доступа IRAP равными нулю (блок 616).
[80] Как далее показано на фиг. 6А, процесс 600А может включать в себя кодирование битового видеопотока на основе первого флага для блока доступа IRAP и второго флага для блока доступа IRAP и передачу кодированного битового видеопотока (блок 617).
[81] Как показано на фиг. 6В, процесс 600В может включать получение AU, не являющегося AU IRAP, из битового видеопотока (блок 621).
[82] Как далее показано на фиг. 6В, процесс 600В может включать в себя получение PU IRAP из AU, не являющегося AU IRAP, (блок 622).
[83] Как далее показано на фиг. 6В, процесс 600В может включать в себя определение, является ли изображение, соответствующее PU IRAP, изображением IDR и является ли изображение первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования (блок 623).
[84] Как далее показано на фиг. 6В, если результатом любого из определений в блоке 623 является да (ДА у блока 623), процесс 600В может перейти к блоку 624. Однако, если результат всех определений в блоке 623 - нет (НЕТ в блоке 623), процесс 600В может перейти к блоку 625.
[85] Как далее показано на фиг. 6В, процесс 600В может включать в себя установку первого флага для PU IRAP равным единице (блок 624).
[86] Как далее показано на фиг. 6В, процесс 600В может включать в себя определение, установлен ли извне флаг для PU IRAP на внешнее значение (блок 625).
[87] Как далее показано на фиг. 6В, если установлено, что второй флаг для PU IRAP извне установлен на внешнее значение (ДА у блока 625), процесс 600В может перейти к блоку 626. Однако, если определяется, что второй флаг для PU IRAP не должен быть извне установлен на внешнее значение (НЕТ у блока 625), процесс 600В может перейти к блоку 627.
[88] Как далее показано на фиг. 6В, процесс 600В может включать в себя установку первого флага для PU IRAP равным внешнему значению (блок 626).
[89] Как далее показано на фиг. 6В, процесс 600В может включать в себя установку первого флага для PU IRAP и второго флага для PU IRAP равными нулю (блок 627).
[90] Как далее показано на фиг. 6В, процесс 600В может включать в себя кодирование битового видеопотока на основе первого флага для PU IRAP и второго флага для PU IRAP и передачу кодированного битового видеопотока (блок 628).
[91] Как показано на фиг. 6С, процесс 600С может включать в себя получение блока доступа (AU) внутренней точки произвольного доступа (IRAP) из битового видеопотока (блок 631).
[92] Как показано на фиг. 6С, процесс 600С может включать в себя определение, является ли блок доступа GDR первым блоком доступа в порядке декодирования и является ли каждое изображение, включенное в AU GDR, первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования (блок 632).
[93] Как далее показано на фиг. 6С, если результатом любого из определений в блоке 632 является да (ДА у блока 632), процесс 600С может перейти к блоку 633. Однако, если результат всех определений в блоке 632 - нет (НЕТ у блока 632), процесс 600С может перейти к блоку 634.
[94] Как далее показано на фиг. 6С, процесс 600С может включать в себя установку первого флага для AU GDR равным единице (блок 633).
[95] Как далее показано на фиг. 6С, процесс 600С может включать в себя определение, установлен ли извне второй флаг для AU GDR на внешнее значение (блок 634).
[96] Как далее показано на фиг. 6С, если определяется, что второй флаг для AU GDR извне установлен на внешнее значение (ДА у блока 634), процесс 600С может перейти к блоку 635. Однако, если определяется, что второй флаг для AU GDR извне не установлен на внешнее значение (НЕТ у блока 634), процесс 600С может перейти к блоку 636.
[97] Как далее показано на фиг. 6С, процесс 600С может включать в себя установку первого флага для AU GDR равным внешнему значению (блок 635).
[98] Как далее показано на фиг. 6С, процесс 600С может включать в себя установку первого флага для AU GDR и второго флага для AU GDR равными нулю (блок 636).
[99] Как далее показано на фиг. 6С, процесс 600С может включать в себя кодирование битового видеопотока на основе первого флага для AU GDR и второго флага для AU GDR и передачу кодированного битового видеопотока (блок 637).
[100] Как показано на фиг. 6D, процесс 600D может включать в себя получение AU, не являющегося AU IRAP, из битового видеопотока (блок 641).
[101] Как далее показано на фиг. 6D, процесс 600D может включать в себя получение PU GDR из AU, не являющегося AU GDR, (блок 642).
[102] Как далее показано на фиг. 6D, процесс 600D может включать в себя определение, является ли изображение, соответствующее PU GDR, первым изображением уровня, который следует за блоком NAL EOS в порядке декодирования (блок 643).
[103] Как далее показано на фиг. 6D, если результатом определения в блоке 643 является да (ДА у блока 643), процесс 600D может перейти к блоку 644. Однако, если результатом определения в блоке 643 является нет (НЕТ у блока 643), процесс 600D может перейти к блоку 645.
[104] Как далее показано на фиг. 6D, процесс 600D может включать в себя установку первого флага для PU GDR равным единице (блок 644).
[105] Как далее показано на фиг. 6D, процесс 600D может включать в себя определение, установлен ли извне внешний флаг для PU GDR на внешнее значение (блок 645).
[106] Как далее показано на фиг. 6D, если определяется, что второй флаг для PU GDR извне установлен на внешнее значение (ДА у блока 645), процесс 600D может перейти к блоку 646. Однако, если определяется, что второй флаг для PU GDR не установлен извне на внешнее значение (НЕТ у блока 645), процесс 600D может перейти к блоку 647.
[107] Как далее показано на фиг. 6D, процесс 600D может включать в себя установку первого флага для PU GDR равным внешнему значению (блок 646).
[108] Как далее показано на фиг. 6D, процесс 600D может включать в себя установку первого флага для PU GDR и второго флага для PU GDR равными нулю (блок 647).
[109] Как далее показано на фиг. 6D, процесс 600D может включать в себя кодирование битового видеопотока на основе первого флага для PU GDR и второго флага для PU GDR и передачу кодированного битового видеопотока (блок 648).
[110] В формах осуществления изобретения первый флаг для блока доступа IRAP, установленный равным единице, может указывать на то, что все опережающие пропускаемые изображения с произвольным доступом (RASL), связанные с изображением чистого произвольного доступа (CRA, Clean Random Access), включенным в блок доступа IRAP, должны быть отброшены без декодирования, и второй флаг для блока доступа IRAP, установленный равным единице, может указывать на то, что все опережающие изображения, связанные с изображением чистого произвольного доступа (CRA), включенным в блок доступа IRAP, должны быть отброшены без декодирования.
[111] В формах осуществления изобретения первый флаг для блока доступа IRAP может представлять собой флаг NoIncorrectPicOutputFlag, а второй флаг для блока доступа IRAP может представлять собой флаг HandleCraAsCvsStartFlag.
[112] В формах осуществления изобретения первый флаг для AU GDR, установленный равным единице, может указывать на то, что все опережающие пропускаемые изображения с произвольным доступом (RASL), связанные с изображением GDR, включенным в AU GDR, должны быть отброшены без декодирования, а второй флаг для AU GDR, установленный равным единице, может указывать, что все опережающие изображения, связанные с изображением GDR, включенным в AU GDR, должны быть отброшены без декодирования.
[113] В формах осуществления изобретения первый флаг для AU GDR может представлять собой флаг NoIncorrectPicOutputFlag, а второй флаг для AU GDR может представлять собой флаг HandleGdrAsCvsStartFlag.
[114] Хотя на фиг. 6A-6D показаны примерные блоки процессов 600А, 600В, 600С и 600D, в некоторых реализациях процессы 600А, 600В, 600С и 600D могут включать в себя дополнительные блоки, меньшее количество блоков, другие блоки или блоки, расположенные иначе, чем те, которые изображены на Фиг. 6A-6D. Дополнительно или альтернативно два или более блока процесса 700 могут выполняться параллельно.
[115] Кроме того, предлагаемые способы могут быть реализованы схемами обработки (например, одним или более процессорами или одной или более интегральными схемами). В одном примере один или более процессоров выполняют программу, которая хранится на энергонезависимом машиночитаемом носителе, для выполнения одного или нескольких из предлагаемых способов.
[116] Технологии, описанные выше, могут быть реализованы в виде компьютерного программного обеспечения с использованием машиночитаемых команд и физически сохранены на одном или нескольких машиночитаемых носителях. Например, на фиг. 7 показана компьютерная система 700, подходящая для реализации некоторых форм осуществления раскрываемого предмета изобретения.
[117] Компьютерное программное обеспечение может быть кодировано с использованием любого подходящего машинного кода или языка вычислительной машины, который может быть предметом трансляции, компиляции, компоновки или подобных механизмов для создания кода, содержащего команды, которые могут выполняться напрямую или посредством интерпретации, выполнения микрокода и т.п.центральными процессорами компьютера (CPU, Central Processing Unit), графическими процессорами (GPU, Graphics Processing Unit) и т.п.
[118] Команды могут выполняться на компьютерах различных типов или их компонентах, включая, например, персональные компьютеры, планшетные компьютеры, серверы, смартфоны, игровые устройства, устройства Интернета вещей и т.п.
[119] Компоненты, показанные на фиг. 7 для компьютерной системы 700, являются примерными по своей природе и не предназначены для предложения каких-либо ограничений в отношении объема использования или функциональных возможностей компьютерного программного обеспечения, реализующего формы осуществления настоящего изобретения. Конфигурация компонентов также не должна интерпретироваться как имеющая какую-либо зависимость или требование, относящееся к любому одному или комбинации компонентов, показанных в примере осуществления компьютерной системы 700.
[120] Компьютерная система 700 может содержать определенные устройства ввода с интерфейсом пользователя. Такое устройство ввода с интерфейсом пользователя может реагировать на ввод одним или несколькими пользователями-людьми посредством, например, тактильного ввода (например, нажатия клавиш, проведения по экрану, движения информационной перчатки), звукового ввода (например, голоса, хлопков в ладоши), визуального ввода (например, жестов), обонятельного ввода (не изображенного). Устройства с интерфейсом пользователя также могут использоваться для захвата определенных мультимедийных данных, не обязательно напрямую связанных с сознательным вводом человеком, таких как звук (например, речь, музыка, окружающий звук), изображения (например, сканированные изображения, фотографические изображения, полученные из камеры для неподвижных изображений), видео (например, двумерное видео, трехмерное видео, включая стереоскопическое видео).
[121] Устройства ввода интерфейса пользователя могут включать в себя одно или более из (только по одному из каждого изображенного): клавиатуры 701, мыши 702, трекпада 703, сенсорного экрана 710, информационной перчатки 704, джойстика 705, микрофона 706, сканера 707, камеры 708.
[122] Компьютерная система 700 может также содержать определенные устройства вывода с интерфейсом пользователя. Такие устройства вывода с интерфейсом пользователя могут стимулировать чувства одного или нескольких пользователей-людей посредством, например, тактильного вывода, звука, света и запаха/вкуса. Такие устройства вывода с интерфейсом пользователя могут включать в себя тактильные устройства вывода (например, тактильную обратную связь от сенсорного экрана 710, информационной перчатки 704 или джойстика 705, но также могут быть устройствами с тактильной обратной связью, которые не служат в качестве устройств ввода), устройства звукового выхода (такие как громкоговорители 709, головные телефоны (не показанные)), устройства визуального вывода (например, экраны 710, включая экраны электронно-лучевой трубки (CRT, Cathode Ray Tube), экраны жидкокристаллического дисплея (LCD, Li quid-Crystal Display), плазменные экраны, экраны на органических светодиодах (OLED, Organic Light-Emitting Diode), каждое с возможностью сенсорного ввода или без нее, каждое с возможностью тактильной обратной связи или без нее; - некоторые из них могут быть способны выполнять двухмерный визуальный вывод или более чем трехмерный вывод с помощью таких средств, как стереографический вывод; очки виртуальной реальности (не изображенные), голографические дисплеи, дымовые баки (не изображенные) и принтеры (не изображенные).
[123] Компьютерная система 700 также может содержать доступные пользователю устройства хранения данных и связанные с ними носители, такие как оптические средства включая средства 720 только для чтения (ROM, Read Only Метогу)/для чтения и многократной записи (RW, Read and Write) с компакт-дисками (CD, Compact 018к)/цифровыми универсальными дисками (DVD, Digital Versatile Disc) или тому подобные носители 721, флэш-накопитель 722, съемный жесткий диск или твердотельный накопитель 723, традиционные магнитные носители, такие как лента и дискета (не показаны), специализированные устройства на основе постоянных запоминающих устройств (Read Only Memory ROM/специализированных интегральных схем (ASIC, Application-Specific Integrated Circuit)/программируемых логических интегральных схем (PLD, Programmable Logic Device), такие как защитные ключи (не показанные) и т.п.
[124] Специалисты в данной области техники также должны понимать, что термин "машиночитаемый носитель", используемый в связи с раскрываемым в настоящее время предметом изобретения, не охватывает среды передачи, несущие волны или другие временные сигналы.
[125] Компьютерная система 700 также может включать в себя интерфейс(-ы) к одной или более сетям (755) связи. Сети могут быть, например, беспроводными, проводными, оптическими. Кроме того, сети могут быть локальными, глобальными, городскими, автомобильными и промышленными, работающими в реальном времени, устойчивыми к задержкам и т.д. Примеры сетей включают в себя локальные сети, такие как Ethernet, беспроводные локальные сети (LAN, Local Area Network), сотовые сети, включая глобальную систему мобильной связи (GSM, Global System for Mobile communications), сети связи третьего поколения (3G, 3-rd Generation), сети связи четвертого поколения (4G, 4-th Generation), сети связи пятого поколения (5G, 5-th Generation), сеть связи по технологии долгосрочной эволюции (LTE, Long-Term Evolution) и т.п., телевизионные (TV, Television) проводные или беспроводные глобальные цифровые сети, включая кабельное телевидение (TV), спутниковое телевидение (TV) и наземное телевещание, автомобильное и промышленное, включая локальную сеть контроллеров (CANBus, Controller Area Network Bus) и т.д. Некоторым сетям обычно требуются адаптеры (754) внешнего сетевого интерфейса, которые подключены к определенным портам данных общего назначения или периферийным шинам (749) (таким как, например, порты универсальной последовательной шины (USB, Universal Serial Bus) компьютерной системы 700; другие обычно интегрируются в ядро компьютерной системы 700 путем подключения к системной шине, как описано ниже (например, интерфейс Ethernet в компьютерную систему персональных компьютеров (PC, Personal Computer) или интерфейс сотовой сети в компьютерную систему смартфона). В качестве примера сеть 755 может быть подключена к периферийной шине 749 с использованием сетевого интерфейса 754. Используя любую из этих сетей, компьютерная система 700 может связываться с другими объектами. Такая связь может быть однонаправленной, только для приема (например, широковещательное TV), однонаправленной только для передачи (например, CANbus к определенным устройствам CANbus) или двунаправленной, например, с другими компьютерными системами, использующими локальные или глобальные цифровые сети. Определенные протоколы и стеки протоколов могут использоваться в каждой из этих сетей и сетевых интерфейсах (754), как описано выше.
[126] Вышеупомянутые устройства интерфейса пользователя, доступные пользователю устройства хранения и сетевые интерфейсы могут быть подключены к ядру 740 компьютерной системы 700.
[127] Ядро 740 может содержать один или более центральных процессоров (CPU, Central Processing Unit) 741, графических процессоров (GPU, Graphics Processing Unit) 742, специализированных программируемых блоков обработки в виде программируемых пользователем матриц 743 логических элементов (FPGA, Field Programmable Gate Area), аппаратных ускорителей 744 для определенных задач и т.д. Эти устройства, наряду с постоянным запоминающим устройством (ROM, Read-Only Memory) 745, оперативным запоминающим устройством (RAM, Random-Access Memory)746, графическим адаптером 750, внутренним запоминающим устройством 747 большой емкости, таким как внутренние жесткие диски, не доступные пользователю, твердотельные накопители (SSD, Solid State Drive) и т.п., могут быть подключены через системную шину 748. В некоторых компьютерных системах системная шина 748 может быть доступна в форме одного или нескольких физических разъемов для обеспечения возможности расширения с помощью дополнительных процессоров, графических процессоров и т.п. Периферийные устройства могут быть подключены либо непосредственно к системной шине 748 ядра, либо через периферийную шину 749. Архитектуры периферийной шины включают шину ввода-вывода для подключения периферийных устройств (PCI, Peripheral Component Interconnect), USB и т.п.
[128] Процессоры CPU 741, GPU 742, матрицы FPGA 743 и ускорители 744 могут выполнять определенные команды, которые в комбинации могут составлять вышеупомянутый машинный код. Этот машинный код может храниться в ROM 745 или RAM 746. Временные данные также могут храниться в RAM 746, тогда как постоянные данные могут храниться, например, во внутреннем запоминающем устройстве 747 большой емкости. Возможность быстрого запоминания и выборки для любого из запоминающих устройств может быть обеспечена посредством использования кэш-памяти, которая может быть тесно связана с одним или более процессорами CPU 741, GPU 742, запоминающим устройством 747 большой емкости, памятью ROM 745, запоминающим устройством RAM 746 и т.п.
[129] Машиночитаемый носитель может содержать компьютерный код для выполнения различных операций, реализуемых компьютером. Носители и компьютерный код могут быть специально спроектированными и сконструированными для целей настоящего раскрытия, или они могут быть хорошо известными и доступными для специалистов в области компьютерного программного обеспечения.
[130] В качестве примера, а не в качестве ограничения, компьютерная система, имеющая архитектуру 700, и, в частности, ядро 740, может обеспечивать функциональные возможности в результате выполнения процессором(-и) (включая процессоры CPU, GPU, матрицы FPGA, ускорители и т.п.) программного обеспечения, воплощенного на одном или нескольких материальных, машиночитаемых носителях. Такие машиночитаемые носители могут быть носителями, связанными с доступным для пользователя запоминающим устройством большой емкости, как описано выше, а также определенными запоминающими устройствами ядра 740, которые имеют энергонезависимый характер, такими как внутреннее запоминающее устройство 747 большой емкости или ROM 745. Программное обеспечение, реализующее различных формы осуществления настоящего изобретения, может храниться в таких устройствах и выполняться ядром 740. Машиночитаемый носитель может включать в себя одно или несколько запоминающих устройств или интегральных схем в соответствии с конкретными потребностями. Программное обеспечение может заставлять ядро 740 и, в частности, процессоры в нем (включая процессоры CPU, GPU, матрицу FPGA и т.п.) выполнять определенные процессы или определенные части конкретных процессов, описанных в данном документе, включая определение структур данных, хранящихся в RAM 746, и изменение таких структур данных в соответствии с процессами, определяемыми программным обеспечением. В дополнение или в качестве альтернативы, компьютерная система может обеспечивать функциональные возможности в результате логики, встроенной в аппаратную схему или иным образом воплощенной в схеме (например, ускоритель 744), которая может работать вместо или вместе с программным обеспечением для выполнения определенных процессов или определенных частей конкретных процессов, описанных здесь. Ссылка на программное обеспечение может включать в себя логику и наоборот, где это уместно. Ссылка на машиночитаемый носитель может охватывать схему (например, интегральную схему (1С, Integrated Circuit), хранящую программное обеспечение для выполнения, схему, воплощающую логику для выполнения, или и то, и другое, где это необходимо. Настоящее изобретение охватывает любую подходящую комбинацию аппаратного и программного обеспечения.
[131] Хотя в данном описании описаны несколько примеров осуществления изобретения, существуют изменения, перестановки и различные заменяющие эквиваленты, которые входят в объем изобретения. Таким образом, следует иметь ввиду, что специалисты в данной области техники смогут разработать многочисленные системы и способы, которые, хотя явно не показаны или не описаны здесь, воплощают принципы изобретения и, таким образом, находятся в пределах его сущности и объема.