СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО Российский патент 2024 года по МПК G06T9/00 H04N19/70 

Описание патента на изобретение RU2822313C1

ПЕРЕКРЕСТНАЯ ССЫЛКА НА СВЯЗАННЫЕ ЗАЯВКИ

[0001] Данная патентная заявка испрашивает приоритет по предварительной патентной заявке США № 62/905,150, поданной 24 сентября 2019 г., автор - Fnu Hendry и др., и озаглавленной "Signalling of Picture Header in Video Coding", которая настоящим включена посредством ссылки.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

[0002] В общем, это раскрытие описывает способы определения начальной точки изображения в битовом потоке при кодировании видео. Более конкретно, это раскрытие гарантирует, что начальная точка изображения может быть точно определена в многоуровневом битовом потоке при кодировании видео.

УРОВЕНЬ ТЕХНИКИ

[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством декомпрессии видео получателя, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими потребностями в видео более высокого качества, желательны улучшенные методики сжатия и декомпрессии, которые улучшают степень сжатия с минимальными потерями качества изображения или вообще без таких потерь.

[0004] Первый аспект относится к способу декодирования, реализуемому видеодекодером, содержащему: прием видеодекодером битового потока видео, включающего в себя единицу изображения (PU), при этом PU включает в единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), при этом PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU; и декодирование видеодекодером кодированного изображения из PU для получения декодированного изображения.

[0005] Этот способ обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL ( PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0006] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что PU включает в себя только один заголовок изображения (PH), и при этом кодированное изображение является упомянутым только одним изображением в PU.

[0007] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает идентификацию уровня кодированного изображения на основе ID уровня единицы PH NAL и идентификацию положения во времени кодированного изображения в битовом потоке видео на основе временного ID единицы PH NAL.

[0008] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что связанная единица VCL NAL включает в себя слайс кодированного изображения.

[0009] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что единица PH NAL является единицей не-VCL NAL.

[0010] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что единица PH NAL включает в себя упомянутый только один PH.

[0011] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что ID уровня единицы PH NAL обозначается как nuh_layer_id.

[0012] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что ID уровня единицы VCL NAL идентифицирует уровень, который включает в себя связанную единицу VCL NAL.

[0013] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает отображение декодированного изображения на дисплее электронного устройства.

[0014] Второй аспект относится к способу кодирования, реализуемому видеокодером, при этом способ содержит: формирование видеокодером единицы изображения (PU), включающей в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), при этом PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU; кодирование видеокодером PU в битовый поток видео; и сохранение видеокодером битового потока видео для передачи видеодекодеру.

[0015] Этот способ обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL ( PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0016] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что PU включает в себя только один заголовок изображения (PH) и кодированное изображение, и при этом кодированное изображение является упомянутым только одним изображением в PU.

[0017] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что ID уровня единицы PH NAL идентифицирует уровень кодированного изображения в битовом потоке видео, и при этом временной ID единицы PH NAL идентифицирует положение во времени кодированного изображения в многоуровневом битовом потоке.

[0018] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что связанная единица VCL NAL включает в себя слайс кодированного изображения, и при этом единиц PH NAL является единицей не-VCL NAL.

[0019] Третий аспект относится к устройству декодирования, при этом устройство декодирования включает в себя: приемник, выполненный с возможностью приема битового потока видео, включающего в себя единицу изображения (PU), PU, включающую в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT) и связанная единица NAL уровня кодирования видео (VCL), при этом PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU; память, соединенную с приемником, при этом память хранит инструкции; и процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций для предписания устройству декодирования: декодировать кодированное изображение из PU для получения декодированного изображения.

[0020] Устройство декодирования обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL ( PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0021] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что PU включает в себя только один заголовок изображения (PH), и при этом кодированное изображение является упомянутым только одним изображением в PU.

[0022] Необязательно, в любом из предыдущих аспектов, другая реализация аспекта предусматривает, что процессор выполнен с возможностью выполнения инструкций для предписания устройству декодирования идентифицировать уровень кодированного изображения в битовом потоке видео на основе ID уровня единицы PH NAL, и идентифицировать положение во времени кодированного изображения в битовом потоке видео на основе временного ID единицы PH NAL.

[0023] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что связанная единица VCL NAL включает в себя слайс кодированного изображения.

[0024] Четвертый аспект относится к устройству кодирования. Устройство кодирования включает в себя память, содержащую инструкции; процессор, соединенный с памятью, при этом процессор выполнен с возможностью реализации инструкций для предписания устройству кодирования: формировать единицу изображения (PU), включающую в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU; кодировать PU в битовый поток видео; и передатчик, соединенный с процессором, при этом передатчик выполнен с возможностью передачи битового потока видео в видеодекодер.

[0025] Устройство кодирования обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL (PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0026] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что PU включает в себя только один заголовок изображения (PH) и кодированное изображение, и при этом кодированное изображение является упомянутым только одним изображением в PU.

[0027] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает, что ID уровня единицы PH NAL идентифицирует уровень кодированного изображения в битовом потоке видео, и при этом временной ID единицы PH NAL идентифицирует положение во времени кодированного изображения в битовом потоке видео.

[0028] Пятый аспект относится к оборудованию кодирования. Оборудование кодирования включает в себя приемник, выполненный с возможностью приема изображения для кодирования или для приема битового потока для декодирования; передатчик, соединенный с приемником, при этом передатчик выполнен с возможностью передачи битового потока на декодер или для передачи декодированного изображения на дисплей; память, соединенную по меньшей мере с одним из приемника или передатчика, при этом память выполнена с возможностью хранения инструкций; и процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций, хранящихся в памяти, для выполнения любого из раскрытых здесь способов.

[0029] Оборудование кодирования обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL (PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0030] Необязательно, в любом из предыдущих аспектов другая реализация аспекта предусматривает дисплей, выполненный с возможностью отображения декодированного изображения.

[0031] Шестой аспект относится к системе. Система включает в себя кодер; и декодер, связанный с кодером, при этом кодер или декодер включает в себя устройство декодирования, устройство кодирования или оборудование кодирования, раскрытые в настоящем документе.

[0032] Система обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL (PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0033] Седьмой аспект относится к средству для кодирования. Средство для кодирования включает в себя средство приема, выполненное с возможностью приема изображения для кодирования или для приема битового потока для декодирования; средство передачи, соединенное со средством приема, средство передачи, выполненное с возможностью передачи битового потока на средство декодирования или передачи декодированного изображения на средство отображения; средство хранения, соединенное по меньшей мере с одним из средства приема или средства передачи, средство хранения выполнено с возможностью хранения инструкций; и средство обработки, соединенное со средством хранения, при этом средство обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве хранения, для выполнения любого из способов, раскрытых в данном документе.

[0034] Средство для кодирования обеспечивает методы, которые гарантируют, что единица изображения (PU) включает в себя только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) PH, имеющей тип единицы PH NAL (PH_NUT) быть равным ID уровня связанной единицы VCL NAL, а временному ID единицы PH NAL быть равным временному ID у PU, включающей в себя единицу PH NAL. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[0035] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или несколькими другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.

[0036] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.

КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ

[0037] Для более полного понимания этого раскрытия теперь сделана ссылка на следующее краткое описание, взятое в связи с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.

[0038] Фиг. 1 представляет собой блок-схему последовательности операций примерного способа кодирования видеосигнала.

[0039] Фиг. 2 представляет собой схематическую диаграмму примерной системы кодирования и декодирования (кодека) для кодирования видео.

[0040] Фиг. 3 представляет собой схематическую диаграмму, иллюстрирующую примерный видеокодер.

[0041] Фиг. 4 представляет собой схематическую диаграмму, иллюстрирующую примерный видеодекодер.

[0042] Фиг. 5 иллюстрирует пример многоуровневого кодирования для пространственной масштабируемости.

[0043] Фиг. 6 иллюстрирует битовый поток видео, выполненный с возможностью реализации метода постепенного обновления декодирования (gradual decoding refresh, GDR).

[0044] Фиг. 7 представляет собой схематическое представление, иллюстрирующее нежелательный поиск движения при использовании ограничения кодера для поддержки GDR.

[0045] Фиг. 8 иллюстрирует вариант осуществления битового потока видео.

[0046] Фиг. 9 представляет собой вариант осуществления способа декодирования кодированного битового потока видео.

[0047] Фиг. 10 представляет собой вариант осуществления способа кодирования битового потока кодированного видео.

[0048] Фиг. 11 представляет собой схематическую диаграмму устройства кодирования видео.

[0049] Фиг. 12 представляет собой схематическую диаграмму варианта осуществления средства для кодирования.

ПОДРОБНОЕ ОПИСАНИЕ

[0050] Прежде всего следует понимать, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого числа методик, известных в настоящее время или уже существующих. Раскрытие никоим образом не должно быть ограничено иллюстративными реализациями, чертежами и методиками, проиллюстрированными ниже, в том числе примерными конструкциями и реализациями, проиллюстрированными и описанными в настоящем документе, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.

[0051] Нижеследующие термины определяются следующим образом до тех пор, пока они не используются в данном документе в противоположном контексте. В частности, следующие определения призваны внести дополнительную ясность в настоящее раскрытие. Однако термины могут быть описаны иначе в других контекстах. Соответственно, следующие определения следует рассматривать в качестве дополнения и не следует рассматривать их в качестве ограничивающих любые другие определения в описании, обеспеченном для таких терминов в настоящем документе.

[0052] Битовый поток представляет собой последовательность битов, включающих в себя видеоданные, которые сжаты для передачи между кодером и декодером. Кодер представляет собой устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока. Изображение представляет собой массив выборок яркости и/или массив выборок цветности, которые создают кадр или его поле. Изображение, которое кодируется или декодируется, может называться текущим изображением для ясности обсуждения. Опорное изображение представляет собой изображение, которое содержит опорные выборки, которые можно использовать при кодировании других изображений по ссылке в соответствии с межкадровым предсказанием и/или межуровневым предсказанием. Список опорных изображений представляет собой список опорных изображений, используемых для межкадрового предсказания и/или межуровневого предсказания. Некоторые системы видеокодирования используют два списка опорных изображений, которые можно обозначить как первый список опорных изображений и нулевой список опорных изображений. Структура списков опорных изображений представляет собой адресуемую синтаксическую структуру, которая содержит несколько списков опорных изображений. Межкадровое предсказание представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся на одном уровне. Запись структуры списка опорных изображений представляет собой адресуемое место в структуре списка опорных изображений, которое указывает опорное изображение, связанное со списком опорных изображений. Заголовок слайса - это часть кодированного слайса, содержащая элементы данных, относящиеся ко всем видеоданным в тайле, представленном в слайсе. Набор параметров изображения (PPS) представляет собой набор параметров, который содержит данные, относящиеся ко всему изображению. Более конкретно, PPS - это синтаксическая структура, содержащая синтаксические элементы, которые применяются к нулю или более целым кодированным изображениям, как определено синтаксическим элементам, найденным в каждом заголовке изображения. Набор параметров последовательности (SPS) - это набор параметров, который содержит данные, относящиеся к последовательности. Единица доступа (AU) представляет собой набор из одного или более кодированных изображений, связанных с одним и тем же временем отображения (например, одним и тем же счетчиком порядка изображений) для вывода из буфера декодированных изображений (DPB) (например, для отображения пользователю). Разделитель единиц доступа (AUD) - это индикатор или структура данных, используемая для обозначения начала AU или границы между AU. Декодированная видеопоследовательность - это последовательность изображений, которые были восстановлены декодером при подготовке к отображению пользователю.

[0053] В настоящем документе используются следующие аббревиатуры: блок дерева кодирования (Coding Tree Block, CTB), единица дерева кодирования (CTU), единица кодирования (Coding Unit, CU), кодированная видеопоследовательность (Coded Video Sequence, CVS), объединенная группа экспертов по видео (Joint Video Experts Team, JVET),набор тайлов с ограничением движения (Motion-Constrained Tile Set MCTS), максимальная единица передачи (Maximum Transfer Unit, MTU), уровень сетевой абстракции (Network Abstraction Layer, NAL), Счетчик порядка изображений (picture Order Count, POC), набор параметров изображения (Picture Parameter Set, PPS), полезная нагрузка последовательности необработанных байтов (Raw Byte Sequence Payload, RBSP), набор параметров последовательности (Sequence Parameter Set, SPS), Универсальное кодирование видео (Versatile Video Coding, VVC) и рабочий проект (Working Draft, WD).

[0054] Фиг. 1 представляет собой блок-схему последовательности операций примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом связанное с этим потребление ресурсов полосы пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования как правило зеркально отражает процесс кодирования, что позволяет декодеру последовательно восстанавливать видеосигнал.

[0055] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может представлять собой несжатый видеофайл, хранящийся в памяти. В качестве другого примера, видеофайл может быть захвачен устройством видеозахвата, таким как видеокамера, и закодирован для поддержки потоковой передачи видео в режиме реального времени. Видеофайл может включать в себя как аудиокомпонент, так и видеокомпонент. Видеокомпонент содержит ряд кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражены в показателях света, называемых в данном документе компонентами яркости (или выборками яркости), и цвета, которые называются компонентами цветности (или выборками цветности). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.

[0056] На этапе 103 видео разделяется на блоки. Разделение включает в себя подразделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, согласно стандарту Высокоэффективного кодирования видео (High Efficiency Video Coding, HEVC) (также известном как H.265 и MPEG-H Part 2) кадр может быть подразделен на единицы дерева кодирования (Coding Tree Unit, CTU), которые представляют собой блоки заранее заданного размера (например - 64 пикселя на 64 пикселя). CTU содержат как выборки яркости, так и выборки цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивного подразделения блоков до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут быть разделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения освещения. Кроме того, компоненты цветности кадра могут быть разделены до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Таким образом, механизмы разбиения варьируются в зависимости от содержимого видеокадров.

[0057] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, полученных разделением на этапе 103. Например, может быть использовано межкадровое предсказание и/или внутрикадровое предсказание. Межкадровое предсказание предназначено для получения преимущества от того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, представляющий объект в опорном кадре, не нужно повторно описывать в смежных кадрах. В частности, объект, такой как стол, может оставаться в постоянном положении в течение нескольких кадров. Следовательно, стол описывается один раз, и смежные кадры могут ссылаться обратно на опорный кадр. Механизмы сопоставления образов могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в течение нескольких кадров. Векторы движения могут быть использованы для описания такого движения. Вектор движения представляет собой двумерный вектор, который обеспечивает смещение из координат объекта в кадре в координаты объекта в опорном кадре. Таким образом, межкадровое предсказание может кодировать блок изображения в текущем кадре в качестве набора векторов движения, указывающих смещение от соответствующего блока в опорном кадре.

[0058] Внутрикадровое предсказание кодирует блоки в общем кадре. Внутрикадровое предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию располагаться рядом в кадре. Например, фрагмент зелени в части дерева имеет тенденцию располагаться рядом с аналогичными фрагментами зелени. Внутрикадровое предсказание использует несколько направленных режимов предсказания (например, тридцать три в HEVC), планарный режим (planar mode) и режим DC (direct current, DC mode). Направленные режимы (directional mode) указывают, что текущий блок аналогичен/совпадает с выборками соседнего блока в соответствующем направлении. Планарный режим (planar mode) указывает, что ряд блоков вдоль строки/столбца (например, плоскости) может быть интерполирован на основе соседних блоков на краях строки. Планарный режим, по сути, указывает на плавный переход света/цвета через строку/столбец, используя относительно постоянный градиент при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок похож/аналогичен среднему значению, связанному с выборками всех соседних блоков, связанных с угловыми направлениями направленных режимов предсказания. Соответственно, блоки внутрикадрового предсказания могут представлять блоки изображения как значения различных реляционных режимов предсказания вместо фактических значений. Кроме того, блоки межкадрового предсказания могут представлять блоки изображения как значения векторов движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые различия хранятся в остаточных блоках. Преобразования могут быть применены к остаточным блокам для дальнейшего сжатия файла.

[0059] На этапе 107 могут применяться различные методы фильтрации. В HEVC фильтры применяются по схеме внутриконтурной фильтрации. Основанное на блоках предсказание, рассмотренное выше, может привести к созданию блочных изображений в декодере. Кроме того, схема основанного на блоках предсказания может кодировать блок, а затем восстановить закодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет к блокам/кадрам фильтры шумоподавления, фильтры деблокирования, адаптивные циклические фильтры и фильтры адаптивного к выборке смещения (SAO). Эти фильтры смягчают такие артефакты блочности, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры смягчают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе этих восстановленных опорных блоков.

[0060] После разделения, сжатия и фильтрации видеосигнала полученные данные кодируются в битовый поток на этапе 109. Битовый поток включает в себя данные, рассмотренные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать данные разделения, данные предсказания, остаточные блоки и различные флаги, обеспечивающие инструкции кодирования, для декодера. Битовый поток может быть сохранен в памяти для передачи на декодер по запросу. Битовый поток также может широковещаться или многоадресно передаваться в множество декодеров. Создание битового потока является итеративным процессом. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно в отношении многих кадров и блоков. Порядок, показанный на Фиг. 1, представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса кодирования видео определенным порядком.

[0061] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующие синтаксические и видео данные. Декодер использует синтаксические данные из битового потока для определения разделов для кадров на этапе 111. Разделение должно совпадать с результатами разделения на блоки на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер принимает множество решений во время процесса сжатия, например выбирает схемы разделения на блоки из нескольких возможных вариантов на основе пространственного расположения значений во входном изображении(-ях). Для сигнализации точных выборов может использоваться большое число бинов. Как используется в данном документе, бин представляет собой двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может изменяться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбрасывать любые опции, которые явно не подходят для конкретного случая, оставляя набор допустимых опций. Каждой допустимой опции затем назначается кодовое слово. Длина кодовых слов основана на числе допустимых опций (например, один бин для двух опций, два бина для трех-четырех опций и т. д.). Кодер кодирует кодовое слово для выбранной опции. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько это необходимо, чтобы однозначно указывать выбор из небольшого подмножества допустимых опций, в отличие от однозначного указания выбора из потенциально большого набора всех возможных опций. Затем декодер декодирует выбор, определяя набор допустимых опций аналогично кодеру. Посредством определения набора допустимых опций, декодер может считывать кодовое слово и определять выбор, сделанный кодером.

[0062] На этапе 113 декодер выполняет декодирование блоков. В частности, декодер применяет обратные преобразования для формирования остаточных блоков. Затем декодер применяет остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения согласно разделению. Блоки предсказания могут включать в себя как блоки внутрикадрового предсказания, так и блоки межкадрового предсказания, формируемые кодером на этапе 105. Затем восстановленные блоки изображения размещаются в кадры восстанавливаемого видеосигнала согласно данным разделения, определенным на этапе 111. Синтаксис для этапа 113 также может быть просигнализирован в битовом потоке посредством энтропийного кодирования, как описано выше.

[0063] На этапе 115 фильтрация выполняется над кадрами восстановленного видеосигнала способом, аналогичным этапу 107 в кодере. Например, фильтры шумоподавления, фильтры деблокирования, адаптивные циклические фильтры и фильтры SAO могут быть применены к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.

[0064] Фиг. 2 представляет собой схематическую диаграмму примерной системы 200 кодирования и декодирования (кодека) для кодирования видео. В частности, система 200 кодека обеспечивает функциональные возможности для поддержки реализации рабочего способа 100. Система 200 кодека обобщена так, чтобы представлять компоненты, применяемые как в кодере, так и в декодере. Система 200 кодека принимает и разделяет видеосигнал, как описано в отношении этапов 101 и 103 в рабочем способе 100, в результате чего получается разделенный видеосигнал 201. Затем система 200 кодека сжимает разделенный видеосигнал 201 в закодированный битовый поток, действуя в качестве кодера, как описано в отношении этапов 105, 107 и 109 в способе 100. Действуя в качестве декодера, система 200 кодека формирует выходной видеосигнал из битового потока, как описано в отношении этапов 111, 113, 115 и 117 в рабочем способе 100. Система 200 кодека включает в себя компонент 211 общего управления кодером, компонент 213 преобразования, масштабирования и квантования, компонент 215 внутрикадровой оценки, компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 221 оценки движения, компонент 229 обратного преобразования и масштабирования, компонент 227 анализа для управления фильтром, компонент 225 внутриконтурных фильтров, компонент 223 буфера декодированных изображений и компонент 231 форматирования заголовка и контекстно-адаптивного двоичного арифметического кодирования (CABAC). Такие компоненты соединены, как показано. На Фиг. 2 черные линии указывают перемещение данных, подлежащих кодированию/декодированию, а пунктирные линии указывают перемещение управляющих данных, которые управляют работой других компонентов. Все компоненты системы 200 кодека могут присутствовать в кодере. Декодер может включать в себя подмножество компонентов системы 200 кодека. Например, декодер может включать в себя компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 229 обратного преобразования и масштабирования, компонент 225 внутриконтурных фильтров и компонент 223 буфера декодированных изображений. Эти компоненты описаны далее.

[0065] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей деревом кодирования. Дерево кодирования использует различные режимы разбиения для разбиения блока пикселей на более мелкие блоки пикселей. Затем эти блоки могут быть дополнительно подразделены на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы подвергаются фрагментации на более мелкие дочерние узлы. Число раз, которое узел подразделяется, называется глубиной узла/дерева кодирования. Полученные разделением блоки могут быть включены в единицы кодирования (CU) в некоторых случаях. Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) цветоразности красного (Cr) и блок(-и) цветоразноси синего (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разбиения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратичное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различных форм в зависимости от используемых режимов разбиения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 преобразования, масштабирования и квантования, компонент 215 внутрикадровой оценки, компонент 227 анализа для управления фильтром и компонент 221 оценки движения для сжатия.

[0066] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями приложения. Например, компонент 211 общего управления кодером управляет оптимизацией битовой скорости/размера битового потока в зависимости от качества восстановления. Такие решения могут приниматься на основе доступности пространства хранения/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы смягчить проблемы недостаточного заполнения и переполнения буфера. Чтобы справиться с этими проблемами, компонент 211 общего управления кодером управляет разделением, предсказанием и фильтрацией посредством других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшать сложность сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с учетом битовой скорости. Компонент 211 общего управления кодером создает управляющие данные, которые управляют работой других компонентов. Управляющие данные также пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.

[0067] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для межкадрового предсказания. Кадр или слайс разделенного видеосигнала 201 может быть разбит на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование c межкадровым предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, для выбора надлежащего режима кодирования для каждого блока видеоданных.

[0068] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть в высокой степени интегрированы, но показаны отдельно в концептуальных целях. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс формирования векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указать сдвиг кодируемого объекта относительно блока предсказания. Блок предсказания является блоком, который обнаружен как точно соответствующий блоку, который подлежит кодированию, исходя из разности пикселей. Блок предсказания также может именоваться опорным блоком. Такая разность пикселей может быть определена суммой абсолютных разностей (sum of absolute difference, SAD), суммой квадратов разностей (sum of square difference, SSD) или другими показателями различия. HEVC использует несколько кодируемых объектов, в том числе CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разбить на CTB, которые затем можно разбить на CB для включения в CU. CU может быть закодирована как единица предсказания, содержащая данные предсказания, и/или единица преобразования (transform unit, TU), содержащая преобразованные остаточные данные для CU. Компонент 221 оценки движения формирует векторы движения, единицы предсказания и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, несколько векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики скорость-искажение уравновешивают качество восстановления видео (например, объем потерь данных при сжатии) с эффективностью кодирования (например, размер окончательного кодирования).

[0069] В некоторых примерах система 200 кодека может вычислять значения для положений субцелочисленных пикселей опорных изображений, сохраненных в компоненте 223 буфера декодированных изображений. Например, система 200 кодека может интерполировать значения положений одной четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного изображения. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для единицы предсказания видеоблока во межкадрово-кодированном слайсе путем сравнения положения единицы предсказания с положением блока предсказания опорного изображения. Компонент 221 оценки движения выводит вычисленный вектор движения в качестве данных движения в компонент 231 форматирования заголовка и CABAC для кодирования и движения для компонента 219 компенсации движения.

[0070] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя получение или формирование блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы в некоторых примерах. После приема вектора движения для единицы предсказания текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, что формирует значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости, как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 преобразования, масштабирования и квантования.

[0071] Разделенный видеосигнал 201 также отправляется в компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания. Как и в случае с компонентом 221 оценки движения и компонентом 219 компенсации движения, компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут быть в высокой степени интегрированы, но в концептуальных целях проиллюстрированы отдельно. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания осуществляют внутрикадровое предсказание текущего блока относительно блоков в текущем кадре, в качестве альтернативы межкадровому предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 внутрикадровой оценки определяет режим внутрикадрового предсказания для использования, чтобы кодировать текущий блок. В некоторых примерах компонент 215 внутрикадровой оценки выбирает надлежащий режим внутрикадрового предсказания для кодирования текущего блока из множества проверяемых режимов внутрикадрового предсказания. Выбранные режимы внутрикадрового предсказания затем пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования.

[0072] Например, компонент 215 внутрикадровой оценки вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов внутрикадрового предсказания, и выбирает режим внутрикадрового предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ скорость-искажение обычно определяет степень искажения (или ошибку) между закодированным блоком и исходным незакодированным блоком, который был закодирован для получения упомянутого кодированного блока, а также битовая скорости (например, число битов), используемая для получения упомянутого кодированного блока. Компонент 215 внутрикадровой оценки вычисляет отношения по искажениям и скоростям для различных закодированных блоков, чтобы определить, какой режим внутрикадрового предсказания демонстрирует наилучшее значение скорость-искажение для блока. Кроме того, компонент 215 внутрикадровой оценки может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (depth modeling mode, DMM) на основе оптимизации скорость-искажение (rate-distortion optimization, RDO).

[0073] Компонент 217 внутрикадрового предсказания может формировать остаточный блок из блока предсказания на основе выбранных режимов внутрикадрового предсказания, определенных компонентом 215 внутрикадровой оценки, при реализации в кодере, или считывать остаточный блок из битового потока при реализации в декодере. Остаточный блок включает в себя разность значений между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 преобразования, масштабирования и квантования. Компонент 215 внутрикадровой оценки и компонент 217 внутрикадрового предсказания могут работать как над компонентами яркости, так и над компонентами цветности.

[0074] Компонент 213 преобразования, масштабирования и квантования выполнен с возможностью дальнейшего сжатия остаточного блока. Компонент 213 преобразования, масштабирования и квантования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий остаточные значения коэффициентов преобразования. Также могут быть использованы вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может переводить остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 преобразования, масштабирования и квантования также выполнен с возможностью масштабирования преобразованной остаточной информации, например на основе частоты. Такое масштабирование включает в себя применение коэффициента масштабирования к остаточной информации, так что информация разных частот квантуется с разными степенями детализации, что может повлиять на конечное визуальное качество восстановленного видео. Компонент 213 преобразования, масштабирования и квантования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения битовой скорости. Процесс квантования может уменьшать битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством корректировки параметра квантования. В некоторых примерах компонент 213 преобразования, масштабирования и квантования может затем выполнять сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования пересылаются в компонент 231 форматирования заголовка и CABAC для кодирования в битовый поток.

[0075] Компонент 229 обратного преобразования и масштабирования применяет обратную операцию компонента 213 преобразования, масштабирования и квантования для поддержки оценки движения. Компонент 229 обратного преобразования и масштабирования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в пиксельной области, например для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения могут вычислять опорный блок путем прибавления остаточного блока обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для смягчения артефактов, создаваемых во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.

[0076] Компонент 227 анализа для управления фильтром и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 обратного преобразования и масштабирования может быть объединен с соответствующим блоком предсказания из компонента 217 внутрикадрового предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах фильтры могут быть применены к остаточным блокам. Как и в случае с другими компонентами на Фиг. 2, компонент 227 анализа для управления фильтром и компонент 225 внутриконтурных фильтров являются в высокой степени интегрируемыми и могут быть реализованы вместе, но представлены в концептуальных целях по-отдельности. Фильтры, применяемые к восстановленным опорным блокам, применяются к определенным пространственным областям и включают в себя несколько параметров для корректировки того, как такие фильтры применяются. Компонент 227 анализа для управления фильтром анализирует восстановленные опорные блоки для определения того, где такие фильтры должны применяться, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве управляющих фильтром данных для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе управляющих фильтром данных. Фильтры могут включать в себя деблокирующий фильтр, фильтр шумоподавления, SAO-фильтр и адаптивный циклический фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, к восстановленному блоку пикселей) или в частотной области, в зависимости от примера.

[0077] При работе в качестве кодера отфильтрованный восстановленный блок изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных изображений для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных изображений сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей в ходе вывода видеосигнала. Компонент 223 буфера декодированных изображений может представлять собой любое запоминающее устройство, способное сохранять блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.

[0078] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодируемый битовый поток для передачи на декодер. В частности, компонент 231 форматирования заголовка и CABAC формирует различные заголовки для кодирования управляющих данных, таких как общие управляющие данные и управляющие фильтром данные. Кроме того, данные предсказания, включающие в себя данные движения и внутрикадрового предсказания, а также остаточные данные в форме данных квантованных коэффициентов преобразования, все кодируются в битовом потоке. Окончательный битовый поток включает в себя всю информацию, необходимую декодеру для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режимов внутрикадрового предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов внутрикадрового предсказания, указание информации разделения и т. д. Такие данные могут быть закодированы с помощью энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (context adaptive variable length coding, CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (syntax-based context-adaptive binary arithmetic coding, SBAC), энтропийного кодирования с вероятностным интервалом разделения (probability interval partitioning entropy, PIPE) или другого способа энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан на устройство (например, видеодекодер) или помещен в архив для последующей передачи или извлечения.

[0079] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Затем разделенный видеосигнал 301 сжимается и кодируется в битовый поток компонентами кодера 300.

[0080] В частности, разделенный видеосигнал 301 пересылается в компонент 317 внутрикадрового предсказания для внутрикадрового предсказания. Компонент 317 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для межкадрового предсказания на основе опорных блоков в компоненте 323 буфера декодированных изображений. Компонент 321 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 внутрикадрового предсказания и компонента 321 компенсации движения пересылаются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 преобразования, масштабирования и квантования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе с связанными управляющими данными) пересылаются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.

[0081] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также пересылаются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 обратного преобразования и масштабирования. Внутриконтурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа для управления фильтром и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как описано в отношении компонента 225 внутриконтурных фильтров. Затем отфильтрованные блоки сохраняются в компоненте 323 буфера декодированных изображений для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных изображений может быть по существу аналогичен компоненту 223 буфера декодированных изображений.

[0082] Фиг. 4 представляет собой блок-схему, иллюстрирующую примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115, и/или 117 рабочего способа 100. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует реконструированный выходной видеосигнал на основе битового потока для отображения конечному пользователю.

[0083] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как кодирование CAVLC, CABAC, SBAC, PIPE, или другой методы энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка для обеспечения контекста для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую требуемую информацию для декодирования видеосигнала, такую как общие управляющие данные, управляющие фильтром данные, информация разделения, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования пересылаются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.

[0084] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 внутрикадрового предсказания для восстановления в блоки изображения на основе операций внутрикадрового предсказания. Компонент 417 внутрикадрового предсказания может быть по существу аналогичен компоненту 215 внутрикадровой оценки и компоненту 217 внутрикадрового предсказания. В частности, компонент 417 внутрикадрового предсказания использует режимы предсказания для нахождения опорного блока в кадре и применяет остаточный блок к результату для восстановления внутрикадрово предсказанных блоков изображения. Восстановленные внутрикадрово предсказанные блоки изображения и/или остаточные блоки и соответствующие данные межкадрового предсказания пересылаются в компонент 423 буфера декодированных изображений через компонент 425 внутриконтурных фильтров, которые могут быть по существу аналогичны компоненту 223 буфера декодированных изображений и компоненту 225 внутриконтурных фильтров, соответственно. Компонент 425 внутриконтурных фильтров фильтрует восстановленные блоки изображения, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных изображений. Восстановленные блоки изображения из компонента 423 буфера декодированных изображений пересылаются в компонент 421 компенсации движения для межкадрового предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для формирования блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Получаемые в результате восстановленные блоки также можно переслать через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных изображений. Компонент 423 буфера декодированных изображений продолжает сохранять дополнительные восстановленные блоки изображения, которые могут быть восстановлены в кадры посредством информации разделения. Такие кадры также могут быть помещены в последовательность. Последовательность выводится на дисплей в виде восстановленного выходного видеосигнала.

[0085] Принимая во внимание вышеизложенное, методы сжатия видео выполняют пространственное (внутрикадровое) предсказание и/или временное (межкадровое) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для кодирования видео на основе блоков видеослайс (т. е. видеоизображение или часть видеоизображения) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоки дерева кодирования (CTB), единицы дерева кодирования (CTU), единицы кодирования (CU) и/или узлы кодирования. Видеоблоки в кодированном с внутрикадровым предсказанием (I) слайсе изображения кодируются с использованием пространственного предсказания относительно опорных выборок в соседних блоках того же изображения. Видеоблоки в кодированном с межкадровом предсказанием (P или B) слайсе изображения могут использовать пространственное предсказание относительно опорных выборок в соседних блоках в том же изображении или временное предсказание относительно опорных выборок в других опорных изображениях. Изображения могут упоминаться как кадры, а опорные изображения могут упоминаться как опорные кадры.

[0086] Пространственное или временное предсказание приводит к блоку предсказания для блока, который должен быть закодирован. Остаточные данные представляют собой разницу в пикселях между исходным кодируемым блоком и блоком предсказания. Межкадрово-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных выборок, формирующих блок предсказания, и остаточными данными, указывающими разницу между закодированным блоком и блоком предсказания. Внутрикадрово-кодируемый блок кодируется согласно режиму внутрикадрового-кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, в результате чего получаются остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть просканированы для создания одномерного вектора коэффициентов преобразования, и может быть применено энтропийное кодирование для достижения еще большего сжатия.

[0087] Сжатие изображений и видео быстро развивалось, что привело к появлению различных стандартов кодирования. К таким стандартам видеокодирования относятся ITU-T H.261, стандарт MPEG-1 Part 2 Международной организации по стандартизации / Международной электротехнической комиссии (ISO/IEC), ITU-T H.262 или ISO/IEC MPEG-2 Part 2, ITU-T H.263, ISO/IEC MPEG-4 Part 2, стандарт Улучшенного кодирования видео (Advanced Video Coding, AVC), также известный как ITU-T H.264 или ISO/IEC MPEG-4 Part 10, и стандарт Высокоэффективного кодирования видео (High Efficiency Video Coding, HEVC), также известный как ITU-T H.265 или MPEG-H Part 2. AVC включает такие расширения, как Масштабируемое кодирование видео (Scalable Video Coding, SVC), Многоракурсное кодирование видео (Multiview Video Coding, MVC) и Многоракурсное кодирование видео плюс глубина (Multiview Video Coding plus Depth, MVC+D) и 3D AVC (3D-AVC). HEVC включает такие расширения, как Масштабируемый HEVC (Scalable HEVC, SHVC), Многоракурсный HEVC (Multiview HEVC, MV-HEVC) и 3D HEVC (3D-HEVC).

[0088] Существует также новый стандарт кодирования видео под названием Versatile Video Coding (VVC), который разрабатывается объединенной группой экспертов по видео (joint video experts team, JVET) ITU-T и ISO/IEC. Хотя стандарт VVC имеет несколько рабочих проектов, здесь упоминается один рабочий проект (WD) VVC, а именно B. Bross, J. Chen и S. Liu, "Versatile Video Coding (Draft 5)", JVET-N1001-v3, 13-е собрание JVET, 27 марта 2019 г. (VVC Draft 5).

[0089] Обсуждаются схемы разделения изображения в HEVC.

[0090] HEVC включает в себя четыре различных схемы разделения изображения, а именно регулярные слайсы, зависимые слайсы, тайлы и параллельную обработку волнового фронта (Wavefront Parallel Processing, WPP), которые могут применяться для согласования размера максимальной единицы передачи (MTU), параллельной обработки и уменьшения сквозной задержки.

[0091] Регулярные слайсы аналогичны H.264/AVC. Каждый регулярные слайс инкапсулируется в свою собственную единицу NAL, а предсказание в изображении (внутривыборочное предсказание, предсказание информации о движении, предсказание режима кодирования) и зависимость энтропийного кодирования от границ слайса отключены. Таким образом, регулярные слайс может быть реконструирован независимо от других регулярных слайсов в пределах одного и того же изображения (хотя все еще могут существовать взаимозависимости из-за операций циклической фильтрации).

[0092] Регулярный слайс - это единственный инструмент, который можно использовать для распараллеливания, который также доступен в практически идентичной форме в H.264/AVC. Распараллеливание на основе регулярных слайсов не требует больших межпроцессорных или межъядерных взаимодействий (за исключением межпроцессорного или межъядерного обмена данными для компенсации движения при декодировании изображения с предиктивным кодированием, которое обычно намного тяжелее, чем межпроцессорное или межпроцессорное взаимодействие. Однако по той же причине использование регулярных слайсов может привести к значительным издержкам на кодирование из-за битовых затрат на заголовок слайса и из-за отсутствия предсказания через границы слайса. Кроме того, регулярные слайсы (в отличие от других инструментов, упомянутых ниже) также служат ключевым механизмом для разделения битового потока в соответствии с требованиями к размеру MTU из-за независимости регулярных слайсов в изображении и того, что каждый регулярные слайс инкапсулирован в свою собственную единицу уровня сетевой адаптации (NAL). Во многих случаях цель распараллеливания и цель согласования размера MTU ставят противоречащие друг другу требования к размещению слайсов в изображении. Осознание этой ситуации привело к разработке упомянутых ниже инструментов распараллеливания.

[0093] Зависимые слайсы имеют короткие заголовки слайсов и позволяют разделить битовый поток по границам древовидных блоков без нарушения предсказания в изображении. По сути, зависимые слайсы обеспечивают фрагментацию регулярных слайсов на несколько единиц NAL, чтобы уменьшить сквозную задержку, позволяя отправить часть регулярного слайса до завершения кодирования всего регулярного слайса.

[0094] В WPP изображение разделено на отдельные строки блоков дерева кодирования (CTB). Для энтропийного декодирования и предсказания разрешено использовать данные из CTB в других разделах. Параллельная обработка возможна посредством параллельного декодирования строк CTB, при этом начало декодирования строки CTB задерживается на два CTB, чтобы гарантировать, что данные, относящиеся к CTB выше и справа от подлежащего CTB, доступны до подлежащего CTB декодируется. Используя этот ступенчатый запуск (который выглядит как волновой фронт при графическом представлении), распараллеливание возможно с таким количеством процессоров/ядер, сколько на рисунке содержится строк CTB. Поскольку предсказание в изображении между соседними строками древовидного блока внутри изображения разрешено, необходимая межпроцессорная/межъядерная связь для обеспечения предсказания в изображении может быть существенной. Разделение WPP не приводит к созданию дополнительных единиц NAL по сравнению с тем, когда оно не применяется, поэтому WPP не является инструментом для сопоставления размеров MTU. Однако, если требуется согласование размера MTU, с WPP можно использовать регулярные слайсы с определенными затратами на кодирование.

[0095] Тайлы определяют горизонтальные и вертикальные границы, которые разделяют изображение на столбцы и строки тайлов. Порядок сканирования CTB изменяется на локальный внутри тайла (в порядке растрового сканирования CTB тайла) перед декодированием верхнего левого CTB следующего тайла в порядке растрового сканирования тайла изображения. Подобно регулярным слайсам, тайлы разрушают зависимости предсказания в изображении, а также зависимости энтропийного декодирования. Однако тайлы не обязательно должны быть включены в отдельные единицы NAL (в этом отношении то же самое, что и WPP); следовательно, тайлы нельзя использовать для сопоставления размера MTU. Каждый тайл может обрабатываться одним процессором/ядром, а межпроцессорная/межъядерная связь, необходимая для предсказания в изображении между блоками обработки, декодирующими соседние тайлы, ограничивается передачей общего заголовка слайса в случаях, когда слайс охватывает более одного тайла и контурной фильтрацией, связанной с совместным использованием реконструированных выборок и метаданных. Когда в слайс включено более одного тайла или сегмента WPP, байтовое смещение точки входа для каждого тайла или сегмента WPP, кроме первого в слайсе, сообщается в заголовке слайса.

[0096] Для простоты в HEVC указаны ограничения на применение четырех различных схем разделения изображения. Для большинства профилей, указанных в HEVC, заданная закодированная видеопоследовательность не может включать в себя тайлы и волновые фронты. Для каждого слайса и тайл должно быть выполнено одно или оба из следующих условий: 1) все закодированные древовидные блоки в слайсе принадлежат одному тайлу; 2) все закодированные древовидные блоки в тайле принадлежат одному и тому же слайсу. Наконец, сегмент волнового фронта содержит ровно одну строку CTB, а при использовании WPP, если слайс начинается в строке CTB, он должен заканчиваться в той же строке CTB.

[0097] Обсуждаются схемы разделения изображения в VVC.

[0098] HEVC включает в себя четыре различных схемы разделения изображения, а именно слайсы, тайлы и "брики" (англ. brick), а также параллельную обработку волнового фронта (WPP), которая может применяться для согласования размера максимальной единицы передачи (MTU), параллельной обработки и уменьшения сквозной задержки.

[0099] Тайлы в VVC похожи на тайлы в HEVC. Тайлы определяют горизонтальные и вертикальные границы, которые разбивают изображение на столбцы и строки тайлов. В VVC концепция тайлов дополнительно улучшена за счет возможности дальнейшего разделения тайла по горизонтали для формирования бриков. Тайл, который не разделяется дальше, также считается бриком. Порядок сканирования CTB изменяется на локальный внутри брика (в порядке растрового сканирования CTB брика) перед декодированием верхнего левого CTB следующего брика в порядке растрового сканирования брика изображения.

[00100] Слайсы в VVC содержат один или более бриков. Каждый слайс инкапсулируется в свою собственную единицу NAL, а предсказание в изображении (внутривыборочное предсказание, предсказание информации о движении, предсказание режима кодирования) и зависимость энтропийного кодирования от границ слайса отключены. Таким образом, регулярные слайс может быть реконструирован независимо от других регулярных слайсов в пределах одного и того же изображения (хотя все еще могут существовать взаимозависимости из-за операций циклической фильтрации). VVC определяет два типа слайсов: прямоугольный слайс и слайс с растровым сканированием. Прямоугольный слайс содержит один или более бриков, занимающих прямоугольную область в изображении. Слайс растрового сканирования содержит один или более бриков, расположенных в порядке растрового сканирования бриков в изображении.

[00101] Функция WPP в VVC аналогична функции WPP в HEVC с той разницей, что HEVC WPP имеет задержку в две (2) CTU, тогда как VVC WPP имеет задержку в одну (1) CTU. Для HEVC WPP новый поток декодирования может начать декодирование первой CTU в назначенной ей строке CTU после того, как в предыдущей строке CTU уже декодированы первые две CTU; с другой стороны, для VVC WPP новый поток декодирования может начать декодирование первой CTU в назначенной ей строке CTU после того, как первая CTU уже декодирована в предыдущей строке CTU.

[00102] Обсуждается сигнализация тайлов, бриков и слайсов в PPS.

[00103] Текущая сигнализация тайлов, бриков и слайсов (особенно прямоугольных слайсов) в PPS выглядит следующим образом:

[00104] Слайсы связаны с заголовком слайса, который содержит синтаксический элемент для описания свойств слайсов, необходимых для декодирования слайсов. Пример таблицы синтаксиса заголовка слайса и вводная часть семантики заголовка слайса приведены ниже.

[00105] Общий синтаксис заголовка слайса.

[00106] Общая семантика заголовка слайса.

[00107] При наличии значение каждого из синтаксических элементов заголовка слайса slice_pic_parameter_set_id, non_reference_picture_flag, colour_plane_id, slice_pic_order_cnt_lsb, recovery_poc_cnt, no_output_of_prior_pics_flag, pic_output_flag и slice_temporal_mvp_enabled_flag должно быть одинаковым во всех заголовках слайса кодированного изображения.

[00108] Переменная CuQpDeltaVal, определяющая разницу между параметром квантования яркости для единицы кодирования, содержащей cu_qp_delta_abs, и ее предсказанием, устанавливается равной 0. Все переменные CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr, задающие значения, которые должны использоваться при определении соответствующих значений параметров квантования Qp’Cb, Qp’Cr и Qp′CbCr для единицы кодирования, содержащей cu_chroma_qp_offset_flag, устанавливаются равными 0.

[00109] Обсуждается разделитель единиц доступа.

[00110] На 15-й встрече JVET в Гетеборге было решено обязать наличие разделителя единиц доступа (AUD) для каждого изображения в битовых потоках VVC. AUD должен присутствовать перед первым слайсом каждого изображения, что помогает реализации декодера обнаруживать начало нового изображения в битовом потоке VVC.

[00111] Синтаксис и семантика AUD RBSP следующие.

[00112] Разделитель единицы доступа используется для указания начала единицы доступа и типа слайсов, присутствующих в кодированных изображениях в единице доступа, содержащей разделитель единицы доступа NAL. Не существует нормативного процесса декодирования, связанного с разделителем единиц доступа.

[00113] pic_type указывает, что значения slice_type для всех слайсов кодированных изображений в единице доступа, содержащей единицу NAL разделителя единиц доступа, являются членами набора, перечисленного в таблице 7-3 для данного значения pic_type. Значение pic_type должно быть равно 0, 1 или 2 в битовых потоках, соответствующих этой версии настоящего описания. Другие значения pic_type зарезервированы для будущего использования ITU T | ISO/IEC. Декодеры, соответствующие этой версии настоящего описания, должны игнорировать зарезервированные значения pic_type.

Таблица 7-3 - Интерпретация pic_type

[00114] Обсуждаются проблемы с разделителем единиц доступа.

[00115] При обязательном присутствии AUD для каждого изображения несколько проблем идентифицируются следующим образом.

[00116] Только один разделитель единиц доступа присутствует для каждого изображения или единицы доступа и предполагается, что он содержится в единице NAL, которая является первой в единице доступа. Однако, если единица доступа содержит более одного изображения, например, в случаях многоуровневого битового потока, разделитель единиц доступа может способствовать обнаружению только каждой единицы доступа, а не каждого изображения.

[00117] В одноуровневом битовом потоке, поскольку для каждого изображения присутствует один AUD, некоторые синтаксические элементы, которые в настоящее время сигнализируются в заголовке слайса, но должны быть одинаковыми для всех слайсов одного и того же изображения, должны быть перемещены в AUD. Такие синтаксические элементы могут упоминаться как синтаксические элементы уровня изображения. Однако, учитывая, что единица NAL, содержащая AUD, должна быть первой единицей NAL в единице доступа, единица NAL, содержащая AUD, может предшествовать единицам NAL, содержащим наборы параметров, такие как SPS, PPS и т. д. Порядок AUD и наборов параметров ограничивает гибкость перемещения синтаксических элементов на уровне изображения из заголовка слайса в AUD, и синтаксический анализ этих синтаксических элементов может зависеть от информации, передаваемой в наборах параметров.

[00118] Описание методов, раскрытых здесь, основано на стандарте кодирования видео Versatile Video Coding (VVC), находящемся в стадии разработки, разработанном объединенной группой экспертов по видео (JVET) ITU-T и ISO/IEC. Однако эти методы также применимы к другим спецификациям видеокодеков.

[00119] Как отмечалось выше, AUD используется для указания начала каждой AU и, следовательно, начальной точки изображения, когда битовый поток содержит один уровень. Однако AUD не может обеспечить ту же функциональность для многоуровневого битового потока, поскольку многоуровневый битовый поток включает в себя несколько изображений с разным разрешением в пределах одного и того же AU. Соответственно, когда единица доступа содержит более одного изображения, например, в многоуровневом битовом потоке, AUD может указывать только начальную точку AU, но не начальную точку конкретного изображения в AU.

[00120] В данном документе раскрыты методы, которые гарантируют, что единица изображения (PU) содержит только один заголовок изображения (PH) и только одно изображение, что позволяет идентификатору (ID) уровня единицы уровня сетевой абстракции (NAL) быть равным ID уровня связанной единицы NAL уровня кодирования видео (VCL) и временному ID единицы NAL быть равным временному ID единицы изображения (PU), включающей в себя единицу NAL, когда единица NAL имеет тип единицы NAL заголовка изображения (PH_NUT). Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Таким образом, кодер/декодер (он же "кодек") в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс кодирования видео предлагает пользователю лучший пользовательский опыт при отправке, получении и/или просмотре видео.

[00121] Масштабируемость кодирования видео обычно поддерживается за счет использования методов многоуровневого кодирования. Многоуровневый битовый поток содержит базовый уровень (BL) и один или несколько уровней расширения (EL). Пример масштабируемости включает пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (SNR), масштабируемость с несколькими представлениями и т. д. Когда используется метод многоуровневого кодирования, изображение или его часть могут быть закодированы (1) без использования опорного изображения, т. е. с использованием внутрикадрового предсказания; (2) путем обращения к опорным изображениям, которые находятся на том же уровне, т. е. с использованием межкадрового предсказания; или (3) путем обращения к опорным изображениям, которые находятся на другом(их) уровне(ях), т.е. с использованием межуровневого предсказания. Опорное изображение, используемое для межуровневого предсказания текущего изображения, называется межуровневым опорным изображением (inter-layer reference picture, ILRP).

[00122] Фиг. 5 является схематической диаграммой, иллюстрирующей пример предсказания 500 на основе уровней, например, выполняемого для определения MV на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или Компонент компенсации движения 421. Предсказание 500 на основе уровней совместимо с однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием, но также выполняется между изображениями на разных уровнях.

[00123] Предсказание 500 на основе уровней применяется между изображениями 511, 512, 513 и 514 и изображениями 515, 516, 517 и 518 в разных уровнях. В показанном примере изображения 511, 512, 513 и 514 являются частью уровня N+1 532, а изображения 515, 516, 517 и 518 являются частью уровня N 531. Уровень, такой как уровень N 531 и/или уровень N+1 532, представляет собой группу изображений, которые все связаны с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности, и так далее. В показанном примере уровень N+1 532 связан с большим размером изображения, чем уровень N 531. Соответственно, изображения 511, 512, 513 и 514 в уровне N+1 532 имеют больший размер изображения (например, большую высоту и ширину и, следовательно, больше выборок), чем изображения 515, 516, 517 и 518 в уровне N 531 в этом примере. Однако такие изображения могут быть разделены между уровнем N+1 532 и уровнем N 531 по другим характеристикам. Хотя показаны только два уровня, уровень N+1 532 и уровень N 531, набор изображений может быть разделен на любое количество уровней на основе связанных характеристик. Уровень N+1 532 и уровень N 531 также могут быть обозначены ID уровня. ID уровня - это элемент данных, который связан с изображением и указывает, что изображение является частью указанного уровня. Соответственно, каждое изображение 511-518 может быть связано с соответствующим ID уровня, чтобы указать, какой уровень N+1 532 или уровень N 531 включает в себя соответствующее изображение.

[00124] Изображения 511-518 в разных уровнях 531-532 выполнены с возможностью отображения в альтернативном варианте. Таким образом, изображения 511-518 на разных уровнях 531-532 могут совместно использовать один и тот же временной идентификатор (ID), когда изображения включены в один и тот же AU. Используемый здесь термин AU представляет собой набор из одного или более кодированных изображений, связанных с одним и тем же временем отображения для вывода из DPB. Например, декодер может декодировать и отображать изображение 515 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать изображение 511 в текущее время отображения, если требуется изображение большего размера. Таким образом, изображения 511-514 на более высоком уровне N+1 532 содержат по существу те же данные изображения, что и соответствующие изображения 515-518 на более низком уровне N 531 (несмотря на разницу в размере изображения). В частности, изображение 511 содержит по существу те же данные изображения, что и изображение 515, изображение 512 содержит по существу те же данные изображения, что и изображение 516, и т. д.

[00125] Изображения 511-518 могут быть закодированы посредством ссылки на другие изображения 511-518 в том же уровне N 531 или N+1 532. Кодирование изображения со ссылкой на другое изображение на том же уровне приводит к межкадровому предсказанию 523, которое является совместимым однонаправленным межкадровым предсказанием и/или двунаправленным межкадровым предсказанием. Межкадровое предсказание 523 изображено сплошными стрелками. Например, изображение 513 может быть закодировано с использованием межкадрового предсказания 523 с использованием одного или двух изображений 511, 512 и/или 514 на уровне N+1 532 в качестве опорного, где одно изображение используется для однонаправленного межкадрового предсказания и/или или два изображения являются опорными для двунаправленного межкадрового предсказания. Кроме того, изображение 517 может быть закодировано с использованием межкадрового предсказания 523 с использованием одного или двух изображений 515, 516 и/или 518 на уровне N 531 в качестве опорного, где одно изображение используется для однонаправленного межкадрового предсказания и/или два изображения являются опорными для двунаправленного межкадрового предсказания. Когда изображение используется в качестве опорного для другого изображения на том же уровне при выполнении межкадрового предсказания 523, это изображение может называться опорным изображением. Например, изображение 512 может быть опорным изображением, используемым для кодирования изображения 513 в соответствии с межкадровым предсказанием 523. Межкадровое предсказание 523 также может называться внутриуровневым предсказанием в многоуровневом контексте. Таким образом, межкадровое предсказание 523 представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, которые отличаются от текущего изображения, где опорное изображение и текущее изображение находятся на одном уровне.

[00126] Изображения 511-518 также могут быть закодированы посредством ссылки на другие изображения 511-518 в других уровнях. Этот процесс известен как межуровневое предсказание 521 и изображен пунктирными стрелками. Межуровневое предсказание 521 представляет собой механизм кодирования выборок текущего изображения посредством ссылки на указанные выборки в опорном изображении, где текущее изображение и опорное изображение находятся на разных уровнях и, следовательно, имеют разные ID уровня. Например, изображение на нижнем уровне N 531 может использоваться в качестве опорного изображения для кодирования соответствующего изображения на более высоком уровне N+1 532. В качестве конкретного примера изображение 511 может быть закодировано со ссылкой на изображение 515 в соответствии с межуровневым предсказанием 521. В таком случае изображение 515 используется как межуровневое опорное изображение. Межуровневое опорное изображение является опорным изображением, используемым для межуровневого предсказания 521. В большинстве случаев межуровневое предсказание 521 ограничено таким образом, что текущее изображение, такое как изображение 511, может использовать только межуровневое опорное изображение (изображения), которые включены в одну и ту же AU и находятся на более низком уровне, например как на изображении 515. Когда доступно несколько уровней (например, более двух), межуровневое предсказание 521 может кодировать/декодировать текущее изображение на основе нескольких межуровневых опорных изображений на более низких уровнях, чем текущее изображение.

[00127] Видеокодер может использовать основанное на уровнях предсказания 500 для кодирования изображений 511-518 посредством множества различных комбинаций и/или перестановок межкадрового предсказания 523 и межуровневого предсказания 521. Например, изображение 515 может быть закодировано в соответствии с внутрикадровым предсказанием. Затем изображения 516-518 могут быть закодированы в соответствии с межкадровым предсказанием 523 с использованием изображения 515 в качестве опорного изображения. Кроме того, изображение 511 может быть закодировано в соответствии с межуровневым предсказанием 521 с использованием изображения 515 в качестве межуровневого опорного изображения. Затем изображения 512-514 могут быть закодированы в соответствии с межкадровым предсказанием 523 с использованием изображения 511 в качестве опорного изображения. Таким образом, опорное изображение может служить как одноуровневым опорным изображением, так и межуровневым опорным изображением для различных механизмов кодирования. Путем кодирования N+1 532 изображений более высокого уровня на основе N 531 изображений более низкого уровня, более высокий уровень N+1 532 может избежать использования внутрикадрового предсказания, которое имеет гораздо более низкую эффективность кодирования, чем межкадровое предсказание 523 и межуровневое предсказание 521. Как таковая, низкая эффективность кодирования внутрикадрового предсказания может быть ограничена изображениями самого маленького/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Изображения, используемые в качестве опорных изображений и/или межуровневых опорных изображений, могут быть указаны в записях списка(ов) опорных изображений, содержащихся в структуре списка опорных изображений.

[00128] Каждая AU 506 на фиг. 5 может содержать несколько изображений. Например, одна AU 506 может содержать изображения 511 и 515. Другая AU 506 может содержать изображения 512 и 516. Действительно, каждая AU 506 представляет собой набор из одного или более кодированных изображений, связанных с одним и тем же временем отображения (например, с одним и тем же временным ID) для вывода из буфера декодированных изображений (DPB) (например, для отображения пользователю). Каждый AUD 508 является индикатором или структурой данных, используемой для указания начала AU (например, AU 506) или границы между AU.

[00129] Предыдущие семейства кодирования видео H.26x обеспечивали поддержку масштабируемости в отдельном(ых) профиле(ях) от профиля(ов) для одноуровневого кодирования. Масштабируемое кодирование видео (SVC) - это масштабируемое расширение AVC/H.264, обеспечивающее поддержку пространственной, временной и качественной масштабируемости. Для SVC в каждом макроблоке (macroblock, MB) в изображениях EL сигнализируется флаг, чтобы указать, предсказывается ли MB EL с использованием совмещенного блока из нижнего уровня. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации H.264/AVC в своей конструкции. Синтаксис макроблока SVC EL и процесс декодирования отличаются от синтаксиса и процесса декодирования H.264/AVC.

[00130] Масштабируемый HEVC (SHVC) - это расширение стандарта HEVC/H.265, которое обеспечивает поддержку пространственной масштабируемости и качества, многоракурсный HEVC (MV-HEVC) - это расширение HEVC/H.265, которое обеспечивает поддержку многоракурсного масштабирования, а 3D HEVC (3D-HEVC) - это расширение HEVC/H.264, которое обеспечивает поддержку трехмерного (3D) кодирования видео, которое является более продвинутым и более эффективным, чем MV-HEVC. Обратите внимание, что временная масштабируемость включена как неотъемлемая часть одноуровневого кодека HEVC. В конструкции многоуровневого расширения HEVC используется идея, согласно которой декодированные изображения, используемые для межуровневого предсказания, поступают только из одной и той же единицы доступа (access unit, AU) и обрабатываются как долгосрочные опорные изображения (long-term reference picture, LTRP), и им назначаются опорные индексы в списке (-ах) опорных изображений вместе с другими временными опорными изображениями в текущем уровне. Межуровневое предсказание (ILP) достигается на уровне единицы предсказания путем установки значения опорного индекса для ссылки на межуровневое опорное изображение (изображения) в списке (списках) опорных изображений.

[00131] Примечательно, что функции передискретизации опорного изображения и пространственного масштабирования требуют повторной выборки опорного изображения или его части. Передискретизация опорного изображения (RPR) может быть реализована либо на уровне изображения, либо на уровне блока кодирования. Однако, когда RPR упоминается как функция кодирования, это функция для одноуровневого кодирования. Даже в этом случае возможно или даже предпочтительно с точки зрения разработки кодека использовать один и тот же фильтр передискретизации как для функции RPR одноуровневого кодирования, так и для функции пространственной масштабируемости для многоуровневого кодирования.

[00132] Фиг. 6 иллюстрирует битовый поток 650 видео, выполненный с возможностью реализации метода 600 постепенного обновления декодирования (GDR). В данном контексте битовый поток 650 видео также может называться кодированным битовым потоком видео, битовым потоком или. Как показано на фиг. 6, битовый поток 650 содержит набор параметров последовательности (SPS) 652, набор параметров изображения (PPS) 654, заголовок 656 слайса и данные 658 изображения.

[00133] SPS 652 содержит данные, общие для всех изображений в последовательности изображений (SOP). Напротив, PPS 654 содержит данные, общие для всего изображения. Заголовок 656 слайса содержит информацию о текущем слайсе, такую как, например, тип слайса, какое из опорных изображений будет использоваться и т.д. SPS 652 и PPS 654 в общем случае могут называться набором параметров. SPS 652, PPS 654 и заголовок 656 слайса являются типами единиц уровня сетевой абстракции (NAL). Единица NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на единицы уровня кодирования видео (VCL) и единицы не-VCL NAL. Единицы VCL NAL содержат данные, которые представляют значения выборок в видеоизображениях, а единицы не-VCL NAL содержат любую связанную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц VCL NAL) и дополнительная информация расширения (информация о времени и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений выборок в видеоизображениях). В практических применениях специалисты в данной области техники поймут, что битовый поток 650 может содержать другие параметры и информацию.

[00134] Данные 658 изображения на фиг. 6 содержит данные, связанные с кодируемыми или декодируемыми изображениями или видео. Данные 658 изображения могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 650. В варианте осуществления данные 658 изображения содержат CVS 608 (или CLVS), содержащие изображение 602 GDR, одно или несколько завершающих изображений 604 и изображение 606 точки восстановления. В варианте осуществления изображение 602 GDR называется начальным изображением CVS (CVSS). CVS 608 представляет собой кодированную видеопоследовательность для каждой видеопоследовательности кодированного уровня (CLVS) в битовом потоке 650 видео. Примечательно, что CVS и CLVS одинаковы, когда битовый поток 650 видео включает в себя единственный уровень. CVS и CLVS отличаются только тогда, когда битовый поток 650 видео включает в себя множество уровней. В варианте осуществления завершающие изображения 604 могут рассматриваться как форма изображения GDR, поскольку завершающие изображения предшествуют изображению 606 точки восстановления в периоде GDR.

[00135] В варианте осуществления изображение 602 GDR, завершающие изображения 604 и изображение 606 точки восстановления могут определять период GDR в CVS 608. В варианте осуществления порядок декодирования начинается с изображения 602 GDR, продолжается завершающими изображениями 604, а затем переходит к изображению 606 восстановления.

[00136] CVS 608 представляет собой последовательность изображений (или их частей), начинающуюся с изображения 602 GDR, и включает в себя все изображения (или их части) до, но не включая, следующего изображения GDR или до конца битового потока. Период GDR представляет собой серию изображений, начинающуюся с изображения 602 GDR, и включает в себя все изображения до изображения 606 точки восстановления включительно. Процесс декодирования для CVS 608 всегда начинается с изображения 602 GDR.

[00137] Как показано на фиг. 6, метод или принцип GDR 600 работает над серией изображений, начиная с изображения 602 GDR и заканчивая изображением 606 точки восстановления. Изображение 602 GDR содержит обновленную/чистую область 610, содержащую блоки, которые все были закодированы с использованием внутрикадрового предсказания (т.е. блоки с внутрикадровым предсказанием), и необновленную/грязную область 612, содержащую блоки, которые все были закодированы с использованием межкадрового предсказания (т.е., межкадрово-предсказанные блоки).

[00138] Завершающее изображение 604, непосредственно примыкающее к изображению 602 GDR, содержит обновленную/чистую область 610, имеющую первую часть 610A, закодированную с использованием внутрикадрового предсказания, и вторую часть 610B, закодированную с использованием межкадрового предсказания. Вторая часть 610B кодируется путем ссылки на обновленную/чистую область 610, например, предыдущего изображения в пределах периода GDR CVS 608. Как показано, обновленная/чистая область 610 завершающих изображений 604 расширяется по мере того, как процесс кодирования перемещается или продвигается в согласованном направлении (например, слева направо), что соответственно сжимает необновленную/грязную область 612. В конце концов, изображение 606 точки восстановления, которое содержит только обновленную/чистую область 610, получается в результате процесса кодирования. Примечательно, и как будет дополнительно рассмотрено ниже, вторая часть 610B обновленной/чистой области 610, которая закодирована как блоки с межкадровым предсказанием, может относиться только к обновленной/чистой области 610 в опорном изображении.

[00139] Как показано на фиг. 6, изображение 602 GDR, завершающие изображения 604 и изображение 606 точки восстановления в CVS 608 содержатся в своей собственной единице 630 VCL NAL. Набор единиц 630 VCL NAL в CVS 608 может называться единицей доступа.

[00140] В варианте осуществления единица 630 VCL NAL, содержащая изображение 602 GDR в CVS 608, имеет тип единицы GDR NAL (GDR_NUT). То есть, в варианте осуществления единица 630 VCL NAL, содержащая изображение 602 GDR в CVS 608, имеет свой собственный уникальный тип единицы NAL относительно завершающих изображений 604 и изображения 606 точки восстановления. В варианте осуществления GDR_NUT позволяет битовому потоку 650 начинаться с изображения 602 GDR вместо того, чтобы битовый поток 650 начинался с изображения внутренней точки произвольного доступа (IRAP). Обозначение единицы 630 VCL NAL изображения 602 GDR как GDR_NUT может указывать, например, декодеру, что начальная единица 630 VCL NAL в CVS 608 содержит изображение 602 GDR. В варианте осуществления изображение 602 GDR является начальным изображением в CVS 608. В варианте осуществления изображение 602 GDR является начальным изображением в периоде GDR.

[00141] Фиг. 7 представляет собой схематическую диаграмму, иллюстрирующую нежелательный поиск 700 движения при использовании ограничения кодера для поддержки GDR. Как показано, поиск 700 движения отображает текущее изображение 702 и опорное изображение 704. Каждое из текущего изображения 702 и опорного изображения 704 включает в себя обновленную область 706, закодированную с внутрикадровым предсказанием, обновленную область 708, закодированную с межкадровым предсказанием, и необновленную область 710. Обновленная область 706, обновленная область 708 и необновленная область 710 аналогичны первой части 610A обновленной/чистой области 610, второй части 610B обновленной/чистой области 610 и необновленной/грязной область 612 на фиг. 6.

[00142] Во время процесса поиска 700 движения кодер ограничен или ему запрещено выбирать любой вектор 712 движения, что приводит к тому, что некоторые выборки опорного блока 714 находятся за пределами обновленной области 706. Это происходит даже тогда, когда опорный блок 714 обеспечивает наилучшие критерии стоимости искажения скорости при предсказании текущего блока 716 в текущем изображении 702. Таким образом, фиг. 7 иллюстрирует причину неоптимальности поиска 700 движения при использовании ограничения кодера для поддержки GDR.

[00143] Фиг. 8 иллюстрирует вариант осуществления битового потока 800 видео. В данном контексте битовый поток 800 видео также может называться кодированным битовым потоком видео, битовым потоком или другими подобными терминами. Как показано на фиг. 8, битовый поток 800 содержит по меньшей мере один единицу изображения (PU) 801. Хотя три из PU 801 показаны на фиг. 8, в практическом применении в битовом потоке 800 может присутствовать другое количество PU 801. Каждая PU 801 представляет собой набор единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно одно кодированное изображение (например, изображение 814). В варианте осуществления, каждая PU 801 имеет или связана с временным ID 819.

[00144] В варианте осуществления каждая PU 801 содержит одно или несколько из следующего: информацию о возможностях декодирования (decoding capability information, DCI) 802, набор параметров видео (video parameter set, VPS) 804, набор параметров последовательности (SPS) 806, набор параметров изображения (PPS) 808, заголовок изображения (PH) 812 и изображение 814. Каждый из DCI 802, VPS 804, SPS 806 и PPS 808 в общем случае может упоминаться как набор параметров. В варианте осуществления другие наборы параметров, не показанные на фиг. 8 также может быть включен в битовый поток 800, такой как, например, набор параметров адаптации (adaption parameter set, APS), который представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более слайсам, как определено нулем или более синтаксическими элементами, найденными в заголовках слайсов.

[00145] DCI 802, который также может называться набором параметров декодирования (decoding parameter set, DPS) или набором параметров декодера, представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всему битовому потоку. DCI 802 включает в себя параметры, которые остаются постоянными в течение времени жизни битового потока видео (например, битового потока 800), что может быть преобразовано во время жизни сеанса. DCI 802 может включать в себя информацию о профиле, уровне и подпрофиле для определения точки взаимодействия максимальной сложности, которая гарантированно никогда не будет превышена, даже если в сеансе происходит объединение видеопоследовательностей. Кроме того, он необязательно включает в себя флаги ограничения, которые указывают, что битовый поток видео будет ограничивать использование определенных функций, как указано значениями этих флагов. При этом битовый поток может быть помечен как не использующий определенные инструменты, что позволяет, среди прочего, распределять ресурсы в реализации декодера. Как и все наборы параметров, DCI 802 присутствует при первой ссылке и на нее ссылается самое первое изображение в видеопоследовательности, подразумевая, что он должен быть отправлен среди первых единиц NAL в битовом потоке. Хотя в битовом потоке могут находиться несколько DCI 802, значение синтаксических элементов в нем не может быть несовместимым при обращении к нему.

[00146] VPS 804 включает в себя зависимость декодирования или информацию для построения набора опорных изображений уровней улучшения. VPS 804 обеспечивает общую перспективу или представление масштабируемой последовательности, включая типы предоставляемых рабочих точек, профиль, ранг и уровень рабочих точек, а также некоторые другие высокоуровневые свойства битового потока, которые можно использовать в качестве основа для согласования сеанса и выбора содержимого и т. д.

[00147] SPS 806 содержит данные, общие для всех изображений в последовательности изображений (SOP). SPS 806 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более полным CLVS, что определяется содержанием синтаксического элемента, обнаруженного в PPS, на который ссылается синтаксический элемент, обнаруженный в заголовке каждого изображения. Напротив, PPS 808 содержит данные, общие для всего изображения. PPS 808 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулю или более полным кодированным изображениям, как определено синтаксическим элементом, найденным в каждом заголовке изображения (например, PH 812).

[00148] DCI 802, VPS 804, SPS 806 и PPS 808 содержатся в различных типах единиц уровня сетевой абстракции (NAL). Единица NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на единицы уровня кодирования видео (VCL) и единицы не-VCL NAL. Единицы VCL NAL содержат данные, которые представляют значения выборок в видеоизображениях, а единицы не-VCL NAL содержат любую связанную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц VCL NAL) и дополнительную информацию расширения (информацию о времени и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений выборок в видеоизображениях).

[00149] В варианте осуществления DCI 802 содержится в единице не-VCL NAL, обозначенной как как единица NAL DCI или единица DPS NAL. То есть единица DCI NAL имеет тип единицы DCI NAL (NUT), а единица DPS NAL имеет DPS NUT. В варианте осуществления VPS 804 содержится в единице не-VCL NAL, обозначенной как единица VPS NAL. Следовательно, единица VPS NAL имеет NUT VPS. В варианте осуществления SPS 806 представляет собой единицу не-VCL NAL, обозначенную как единица SPS NAL. Следовательно, единица SPS NAL имеет SPS NUT. В варианте осуществления PPS 808 содержится в единице не-VCL NAL, обозначенной как единица PPS NAL. Следовательно, единица PPS NAL имеет PPS NUT.

[00150] PH 812 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем слайсам (например, слайсам 818) кодированного изображения (например, изображения 814). В варианте осуществления PH 812 относится к новому типу единицы не-VCL NAL, обозначенной как единица PH NAL. Следовательно, единица PH NAL имеет PH NUT (например, PH_NUT). В варианте осуществления в каждую PU 801 входит один и только один PH 812. То есть PU 801 содержит единственный или одиночный PH 812. В варианте осуществления ровно одна единица PH NAL присутствует для каждого изображения 801 в битовом потоке 800.

[00151] В варианте осуществления единица PH NAL, связанная с PH 812, имеет временной ID 817 и ID 813 уровня. Временной ID 817 указывает положение единицы PH NAL во времени относительно других единиц PH NAL в битовом потоке (например, битовом потоке 801). ID 813 уровня указывает уровень (например, уровень 531 или уровень 532), который содержит единицу PH NAL. В варианте осуществления временной ID 817 аналогичен POC, но отличается от него. POC однозначно идентифицирует каждое изображение по порядку. В одноуровневом битовом потоке временной ID 817 и POC будут одинаковыми. В многоуровневом битовом потоке (например, см. фиг. 5) изображения в одном и том же AU будут иметь разные POC, но один и тот же временной ID 817.

[00152] В варианте осуществления единица PH NAL предшествует единице VCL NAL, содержащей первый слайс 818 связанного изображения 814. Это устанавливает связь между PH 812 и слайсами 818 изображения 814, связанного с PH 812, без необходимости иметь ID заголовка изображения, сигнализируемый в PH 812 и ссылающийся на заголовок 820 слайса. Следовательно, можно сделать вывод, что все единицы VCL NAL между двумя PH 812 принадлежат одному и тому же изображению 814 и что изображение 814 связано с первым PH 812 между двумя PH 812. В варианте осуществления первая единица VCL NAL, которая следует за PH 812, содержит первый слайс 818 изображения 814 (т.е. слайс от верхнего правого угла изображения), связанный с PH 812.

[00153] В варианте осуществления единица PH NAL следует за наборами параметров уровня изображения (например, PPS) или наборами параметров более высокого уровня, таким как DCI (он же DPS), VPS, SPS, PPS и т. д., имеющим как временной ID, так и ID уровня меньше, чем временной ID 817 и ID 813 уровня единицы PH NAL соответственно. Следовательно, эти наборы параметров не повторяются в изображении или единице доступа. Благодаря такому порядку PH 812 может быть решен немедленно. То есть наборы параметров, которые содержат параметры, относящиеся ко всему изображению, располагаются в битовом потоке перед единицей PH NAL. Все, что содержит параметры для части изображения, располагается после единицы PH NAL.

[00154] В одном из альтернатив единица PH NAL следует за наборами параметров уровня изображения и сообщениями с префиксом дополнительной информации расширения (SEI) или наборами параметров более высокого уровня, таким как DCI (он же DPS), VPS, SPS, PPS, APS, сообщение SEI и т. д.

[00155] В варианте осуществления PH 812 может содержать синтаксический элемент (например, флаг и т. д.), который указывает тип изображения для изображения 814, связанного с PH 812. Тип изображения может включать, помимо прочего, следующие типы: изображение с мгновенным обновлением декодера (instantaneous decoder refresh, IDR), изображение с чистым произвольным доступом (clean random access, CRA), изображение GDR, изображение не-IRAP, которое является изображением не-GDR и содержит только внутрикадрово предсказанные слайсы (I-слайсы), изображение не-IRAP, которое является изображением не-GDR, и содержит только однонаправленные предсказанные слайсы (P-слайсы) и I-слайсы, и изображение не-IRAP, которое является изображением не-GDR, и содержит только двунаправленные межкадрово предсказанные слайсы (B-слайсы), P-слайсы и I-слайсы. Таким образом, один флаг в PH 812 может указывать, являются ли все слайсы (например, слайсы 818) в изображении (например, изображении 814), например, слайсами изображения GDR (например, изображения 602 GDR). Это также поддерживает сигнализацию счетчика порядка изображений точки восстановления (POC) для изображения GDR один раз в PH 812, а не в каждом заголовке слайса (например, заголовок 820 слайса).

[00156] В одном варианте осуществления один или несколько синтаксических элементов передаются в PH 812 вместо заголовков 820 слайсов изображения 814, связанных с PH 812. Эти синтаксические элементы представляют собой PPS ID, на который ссылается изображение 814, флаг, указывающий, является ли изображение 814 опорным изображением или нет, цветовую плоскость изображения 814, младший значащий бит (LSB) POC изображения 814, POC точки восстановления, если изображение 814 является изображением GDR (например, изображение 602 GDR), флаг, определяющий, выводятся ли изображения, предшествующие изображению 814, и флаг, определяющий, является ли изображение выходным изображением или нет. PPS ID представляет собой идентификатор, который идентифицирует конкретный PPS для изображения 814. Цветовая плоскость изображения 814 содержит компоненты яркости и цветности (например, Y, Cb и Cr и т. д.) для изображения 814. POC LSB - это бит (или биты), идентифицирующий POC. POC представляет собой переменную, которая связана с каждым изображением (например, изображением 814), однозначно идентифицирует связанное изображение среди всех изображений в CLVS и, когда связанное изображение должно быть выведено из DPB, указывает положение связанного изображения в порядке вывода относительно позиций в порядке вывода других изображений в той же CLVS, которые должны выводиться из DPB. POC точки восстановления - это POC, который идентифицирует точку восстановления и, следовательно, изображение точки восстановления.

[00157] Перемещение этих синтаксических элементов из заголовков 820 слайсов в PH 812 позволяет сигнализировать синтаксические элементы один раз для всего изображения 814 вместо повторения синтаксических элементов в каждом заголовке 820 слайса. Это снижает избыточность и повышает эффективность кодирования.

[00158] Изображение 814 представляет собой массив выборок яркости в монохромном формате или массив выборок яркости и два соответствующих массива выборок цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. В варианте осуществления в каждую PU 801 включено одно и только одно изображение 814. Таким образом, в каждой PU 801 имеется только один PH 812 и только одно изображение 814, соответствующее этому PH 812. То есть PU 801 содержит одно или одиночное изображение 814.

[00159] Изображение 814 может быть либо кадром, либо полем. Однако в одном CVS 816 либо все изображения 814 являются кадрами, либо все изображения 814 являются полями. CVS 816 представляет собой кодированную видеопоследовательность для каждой видеопоследовательности кодированного уровня (CLVS) в битовом потоке 800 видео. Примечательно, что CVS 816 и CLVS одинаковы, когда битовый поток 800 видео включает в себя один уровень. CVS 816 и CLVS различаются только тогда, когда битовый поток 800 видео включает в себя несколько уровней (например, как показано на фиг. 5).

[00160] PU 801 вместе могут содержать CLVS. CLVS представляет собой последовательность PU 801 с тем же значением nuh_layer_id, которая состоит в порядке декодирования из PU начала видеопоследовательности кодированного уровня (CLVSS), за которыми следует ноль или более PU 801, которые не являются CLVSS PU, включая все последующие PU 801 вплоть до любого последующего PU 801, который является CLVSS PU, но не включая его. CLVSS PU представляет собой PU 801, в которой кодированное изображение (например, изображение 814) является изображением CLVSS. Изображение CLVSS является закодированным изображением, которое является изображением IRAP с флагом NoOutputBeforeRecoveryFlag, равным 1, или изображением GDR (например, изображение 602 GDR) с флагом NoOutputBeforeRecoveryFlag, равным 1.

[00161] Каждое изображение 814 содержит один или более слайсов 818. Слайс 818 представляет собой целое число полных тайлов или целое число последовательных полных строк CTU в пределах тайла изображения (например, изображения 814). Каждый слайс 818 содержится исключительно в одной единице NAL (например, единице VCL NAL). В варианте осуществления упомянутая единственная единица NAL связана с или имеет ID 815 уровня. Тайл (не показан) представляет собой прямоугольную область CTU в конкретном столбце тайлов и конкретной строке тайлов в изображении (например, изображении 814). Тайл - это отделенная часть изображения, созданная горизонтальными и вертикальными границами. Тайлы могут быть прямоугольными и/или квадратными. В частности, тайл включает в себя четыре стороны, соединенные под прямым углом. Четыре стороны включают две пары параллельных сторон. Кроме того, стороны в паре параллельных сторон имеют одинаковую длину. Таким образом, тайл может быть любой прямоугольной формы, где квадрат является частным случаем прямоугольника, все четыре стороны которого имеют одинаковую длину. Изображение/картинка может содержать один или несколько тайлов. CTU (не показана) представляет собой CTB выборок яркости, два соответствующих CTB выборок цветности изображения, которое имеет три массива выборок, или CTB выборок монохромного изображения или изображения, которое закодировано с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования выборок. CTB (не показан) представляет собой блок выборок N×N для некоторого значения N, так что разделение компонента на CTB представляет собой разбиение. Блок (не показан) представляет собой массив MxN (M столбцов на N строк) выборок (например, пикселей) или массив MxN коэффициентов преобразования.

[00162] В варианте осуществления каждый слайс 818 содержит заголовок 820 слайса. Заголовок 820 слайса является частью закодированного слайса 818, содержащего элементы данных, относящиеся ко всем тайлам или строкам CTU внутри тайла, представленного в слайсе 818. То есть заголовок 820 слайса содержит информацию о слайсе 818, такую как, например, тип слайса, какое из опорных изображений будет использоваться и т.д.

[00163] Изображения 814 и их слайсы 818 содержат данные, связанные с кодируемыми или декодируемыми изображениями или видео. Таким образом, изображения 814 и их слайсы 818 могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 800.

[00164] В практических применениях специалисты в данной области техники поймут, что битовый поток 800 может содержать другие параметры и информацию.

[00165] Фиг. 9 - вариант осуществления способа 900 декодирования, реализованного видеодекодером (например, видеодекодером 400). Способ 900 может быть выполнен после того, как битовый поток был прямо или косвенно принят от видеокодера (например, видеокодера 300). Способ 900 улучшает процесс декодирования, гарантируя, что PU (например, PU 801) содержит только один PH (например, PH 812) и только одно изображение (например, изображение 814), что позволяет ID уровня (например, ID 813 уровня) единицы PH NAL, имеющей PH_NUT, быть равным ID уровня (например, ID 815 уровня) связанной единицы VCL NAL, и временному ID (например, временному ID 817) единицы PH NAL, быть равным временному ID (например, временному ID 819) PU, содержащей единицу PH NAL. Используя ID 813/815 уровня и временной ID 817/819, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[00166] На этапе 902 видеодекодер принимает битовый поток видео (например, битовый поток 800 видео), включающий в себя PU (например, PU 801). PU содержит единицу NAL, имеющую PH_NUT. PH_NUT означает, что ID 813 уровня единицы PH NAL равен ID 815 уровня связанной единицы VCL NAL, а временной ID 817 единицы PH NAL равен временному ID 819 PU 801. В варианте осуществления единица PH NAL представляет собой единицу не-VCL NAL. В варианте осуществления единица PH NAL содержит PH (например, PH 812).

[00167] В варианте осуществления ID 815 уровня единицы VCL NAL идентифицирует уровень (например, уровень 531, уровень 532 и т. д.), которому принадлежит связанная единица VCL NAL. То есть ID уровня идентифицирует уровень, который включает в себя связанную единицу VCL NAL. В варианте осуществления ID уровня идентифицирует уровень изображения в битовом потоке видео (например, в многоуровневом битовом потоке видео). В варианте осуществления ID уровня одного или обеих из единицы PH NAL и единицы VCL NAL обозначается как nuh_layer_id. В варианте осуществления связанная единица VCL NAL содержит один из множества слайсов (например, слайсов 818) изображения.

[00168] В варианте осуществления временной ID идентифицирует положение во времени кодированного изображения в битовом потоке видео (например, в многоуровневом битовом потоке видео). То есть временной ID идентифицирует, где кодированное изображение расположено в CVS (например, CVS 816) относительно других изображений в CVS относительно времени. В варианте осуществления PU содержит только один заголовок изображения (PH) и только одно изображение. Используя ID 813/815 уровня и временной ID 817/819, можно определить начальную точку изображения в многоуровневом битовом потоке.

[00169] На этапе 904 видеодекодер декодирует кодированное изображение из PU, чтобы получить декодированное изображение. В одном варианте осуществления декодирование PU содержит декодирование различных слайсов 818 изображения 814 в соответствии с информацией или инструкциями в одном или более из DCI 802, VPS 804, SPS 806, PPS 808, PH 812 и заголовка 820 слайса. После декодирования изображение 814 может быть использовано для формирования или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и т. д.).

[00170] Фиг. 10 - вариант осуществления способа 1000 кодирования битового потока видео, реализованного видеокодером (например, видеокодером 300). Способ 1000 может выполняться, когда изображение (например, из видео) должно быть кодировано в битовый поток видео и затем передано в видеодекодер (например, видеодекодер 400). Способ 1000 улучшает процесс кодирования, гарантируя, что PU (например, PU 801) содержит только один PH (например, PH 812) и только одно изображение (например, изображение 814), что позволяет ID уровня (например, ID 813 уровня) единицы PH NAL, имеющей тип единицы PH NAL (PH_NUT), быть равным ID уровня (например, ID 815 уровня) связанной единицы VCL NAL и временному ID (например, временному ID 817) единицы PH NAL быть равным временному ID (например, временному ID 819) у PU, содержащей единицу PH NAL. Используя ID 813/815 уровня и временной ID 817/819, можно определить начальную точку изображения в многоуровневом битовом потоке, не вызывая ошибок кодирования. Следовательно, с практической точки зрения производительность кодека улучшается, что приводит к лучшему взаимодействию с пользователем.

[00171] На этапе 1002 видеокодер формирует PU (например, PU 801). PU содержит единицу NAL, имеющую PH_NUT. PH_NUT означает, что ID уровня единицы NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы NAL равен временному ID у PU. В варианте осуществления единица NAL представляет собой единицу не-VCL NAL. В варианте осуществления единица NAL содержит PH (например, PH 812).

[00172] В варианте осуществления ID 815 уровня единицы VCL NAL идентифицирует уровень (например, уровень 531, уровень 532 и т. д.), которому принадлежит связанная единица VCL NAL. То есть ID 815 уровня идентифицирует уровень, который включает в себя связанную единицу VCL NAL. В варианте осуществления ID 813 уровня единицы PH NAL идентифицирует уровень изображения в битовом потоке видео (например, в многоуровневом битовом потоке видео). В варианте осуществления ID уровня обозначается как nuh_layer_id. В варианте осуществления связанная единица VCL NAL содержит один из множества слайсов (например, слайсов 818) изображения.

[00173] В варианте осуществления временной ID единицы PH NAL идентифицирует положение во времени кодированного изображения в битовом потоке видео (например, в многоуровневом битовом потоке видео). То есть временной ID единицы PH NAL идентифицирует, где кодированное изображение расположено в CVS (например, CVS 816) относительно других изображений в CVS относительно времени. В варианте осуществления PU содержит только один заголовок изображения (PH) и только одно изображение. Используя ID уровня и временной ID, можно определить начальную точку изображения в многоуровневом битовом потоке.

[00174] На этапе 1004 видеокодер кодирует PU в битовый поток видео (например, битовый поток 800). На этапе 1006 видеокодер сохраняет битовый поток видео для передачи видеодекодеру. Битовый поток видео может храниться в памяти до тех пор, пока битовый поток видео не будет передан на видеодекодер. После приема видеодекодером закодированный битовый поток видео может быть декодирован (например, как описано выше) для формирования или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона), планшета, ноутбука, персонального компьютера и др.).

[00175] Следующий синтаксис и семантика могут быть использованы для реализации раскрытых здесь вариантов осуществления. Следующее описание относится к основному тексту, который является последним проектом спецификации VVC. Другими словами, описываются только различия, а текст в базовом тексте, не упомянутый ниже, применяется как есть. Добавленный текст относительно базового текста выделен жирным шрифтом, а удаленный текст выделен курсивом.

[00176] Синтаксис RBSP заголовка изображения.

[00177] Синтаксис RBSP заголовка слайса.

[00178] Семантика RBSP заголовка изображения.

[00179] Заголовок изображения содержит информацию, общую для всех слайсов кодированного изображения, для которых следующая единица VCL NAL в порядке декодирования является первым кодированным слайсом.

[00180] pic_type указывает характеристику кодированных изображений, как указано в таблице 7-3, для данного значения pic_type. Значение pic_type должно быть равно от 0 до 5 включительно в битовых потоках, соответствующих этой версии настоящего описания. Другие значения pic_type зарезервированы для будущего использования ITU T | ISO/IEC. Декодеры, соответствующие этой версии настоящего описания, должны игнорировать зарезервированные значения pic_type.

Таблица 7-3 - Интерпретация pic_type

pic_type характеристика кодированного изображения 0 Кодированное изображение представляет собой изображение IDR. 1 Кодированное изображение представляет собой изображение CRA. 2 Кодированное изображение представляет собой изображение GDR. 3 Кодированное изображение представляет собой изображение, не-IRAP, не-GDR, и содержит только I-слайсы. 4 Кодированное изображение представляет собой изображение не-IRAP, не-GDR, и содержит только слайсы P и I. 5 Кодированное изображение представляет собой изображение не-IRAP и не-GDR, и содержит B, P и I-слайсы.

[00181] pic_parameter_set_id указывает значение pps_pic_parameter_set_id для используемого PPS. Значение pic_parameter_set_id должно находиться в диапазоне от 0 до 63 включительно.

[00182] non_reference_picture_flag, равный 1, указывает, что изображение, связанное с заголовком изображения, никогда не используется в качестве опорного изображения. non_reference_picture_flag, равный 0, указывает, что изображение может использоваться или не использоваться в качестве опорного изображения.

[00183] colour_plane_id указывает цветовую плоскость, связанную с изображением, связанным с заголовком изображения, если для параметра separate_colour_plane_flag установлено значение 1. Значение colour_plane_id должно находиться в диапазоне от 0 до 2 включительно. Значения colour_plane_id 0, 1 и 2 соответствуют плоскостям Y, Cb и Cr соответственно.

[00184] ПРИМЕЧАНИЕ - : Нет никакой зависимости между процессами декодирования изображений, имеющих разные значения colour_plane_id.

[00185] pic_order_cnt_lsb указывает счетчик порядка изображений по модулю MaxPicOrderCntLsb для изображения, связанного с заголовком изображения. Длина синтаксического элемента pic_order_cnt_lsb составляет log2_max_pic_order_cnt_lsb_minus4+4 бита. Значение pic_order_cnt_lsb должно находиться в диапазоне от 0 до MaxPicOrderCntLsb − 1 включительно.

[00186] recovery_poc_cnt указывает точку восстановления декодированных изображений в порядке вывода. Если существует изображение picA, которое следует за текущим изображением GDR в порядке декодирования в CVS и имеет значение PicOrderCntVal, равное PicOrderCntVal текущего изображения GDR плюс значение recovery_poc_cnt, изображение picA называется изображением точки восстановления. В противном случае первое изображение в порядке вывода, у которого PicOrderCntVal больше, чем PicOrderCntVal текущего изображения плюс значение recovery_poc_cnt, называется изображением точки восстановления. Изображение точки восстановления не должно предшествовать текущему изображению GDR в порядке декодирования. Значение recovery_poc_cnt должно находиться в диапазоне от 0 до MaxPicOrderCntLsb - 1 включительно.

[00187] Переменная RpPicOrderCntVal получается следующим образом:

[00188] RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (7-94)

[00189] no_output_of_prior_pics_flag влияет на вывод ранее декодированных изображений в буфере декодированных изображений после декодирования изображения CLVSS, которое не является первым изображением в битовом потоке, как указано в Приложении C.

[00190] pic_output_flag влияет на процессы вывода и удаления декодированного изображения, как указано в Приложении C. Если pic_output_flag отсутствует, предполагается, что он равен 1.

[00191] pic_temporal_mvp_enabled_flag указывает, могут ли временные предикторы вектора движения использоваться для межкадрового предсказания. Если pic_temporal_mvp_enabled_flag равен 0, синтаксические элементы изображения, связанные с заголовком изображения, должны быть ограничены таким образом, чтобы при декодировании изображения не использовался временной предиктор вектора движения. В противном случае (pic_temporal_mvp_enabled_flag равен 1) при декодировании изображения могут использоваться временные предикторы вектора движения.

[00192] Когда pic_temporal_mvp_enabled_flag отсутствует, применяется следующее:

[00193] - Если sps_temporal_mvp_enabled_flag равен 0, предполагается, что значение pic_temporal_mvp_enabled_flag равно 0.

[00194] - В противном случае (sps_temporal_mvp_enabled_flag равен 1) предполагается, что значение pic_temporal_mvp_enabled_flag равно pps_temporal_mvp_enabled_idc − 1.

[00195] Семантика заголовка модуля NAL.

[00196] nuh_layer_id указывает идентификатор уровня, которому принадлежит единица VCL NAL, или идентификатор уровня, к которому применяется единица не-VCL NAL.

[00197] Значение nuh_layer_id должно быть одинаковым для всех единиц VCL NAL кодированного изображения. Значением nah_layer_id кодированного изображения или единицы доступа уровня является значение nah_layer_id единиц VCL NAL кодированного изображения или единицы доступа уровня.

[00198] Когда nal_unit_type равен PH_NUT, значение nuh_layer_id должно быть равно значению nuh_layer_id единиц VCL NAL единицы доступа уровня, содержащей единицу NAL заголовка изображения.

Таблица 7-1 - Коды типов единиц NAL и классы типов единиц NAL

nal_unit_type Наименование nal_unit_type Содержимое единицы NAL и синтаксическая структура RBSP Класс типа единицы NAL 0 TRAIL_NUT Кодированный слайс завершающего изображения
slice_layer_rbsp()
VCL
1 STSA_NUT Кодированный слайс STSA-изображения
slice_layer_rbsp( )
VCL
2 RASL_NUT Кодированный слайс RASL-изображения slice_layer_rbsp( ) VCL 3 RADL_NUT Кодированный слайс RADL-изображения
slice_layer_rbsp( )
VCL
4..7 RSV_VCL_4..
RSV_VCL_7
Зарезервированные типы единиц не-IRAP VCL NAL VCL
8 9 IDR_W_RADL
IDR_N_LP
Кодированный слайс IDR-изображения
slice_layer_rbsp()
VCL
10 CRA_NUT Кодированный слайс CRA-изображения
slice_layer_rbsp( )
VCL
11 GDR_NUT Закодированный слайс GDR-изображения
slice_layer_rbsp()
VCL
12 13 RSV_IRAP_VCL12
RSV_IRAP_VCL13
Зарезервированные типы единиц IRAP VCL NAL VCL
14..15 RSV_VCL14..
RSV_VCL15
Зарезервированные типы единиц не-IRAP VCL NAL VCL
16 SPS_NUT Набор параметров последовательности
seq_parameter_set_rbsp( )
не-VCL
17 PPS_NUT Набор параметров изображения
pic_parameter_set_rbsp( )
не-VCL
18 APS_NUT Набор параметров адаптации
adaptation_parameter_set_rbsp( )
не-VCL
19 PH_NUT Заголовок изображения
picture_header_rbsp( )
не-VCL
20 EOS_NUT Конец последовательности
end_of_seq_rbsp( )
не-VCL
21 EOB_NUT Конец битового потока end_of_bitstream_rbsp( ) не-VCL 22, 23 PREFIX_SEI_NUT
SUFFIX_SEI_NUT
Дополнительная информация
расширения sei_rbsp( )
не-VCL
24 DPS_NUT Набор параметров декодирования
decoding_parameter_set_rbsp()
не-VCL
25..27 RSV_VCL25..
RSV_NVCL27
Зарезервированные типы
единиц не-VCL NAL
не-VCL
28..31 UNSPEC28..
UNSPEC31
Неспецифицированные типы
единиц не-VCL NAL
не-VCL

[00199] nuh_temporal_id_plus1 минус 1 указывает временной идентификатор для единицы NAL.

[00200] Значение nuh_temporal_id_plus1 не должно быть равно 0.

[00201] Переменная TemporalId получается следующим образом:

[00202] TemporalId=nuh_temporal_id_plus1-1 (7-1)

[00203] Когда nal_unit_type находится в диапазоне от IDR_W_RADL до RSV_IRAP_VCL13 включительно, TemporalId должен быть равен 0.

[00204] Когда nal_unit_type равен STSA_NUT, TemporalId не должен быть равен 0.

[00205] Значение TemporalId должно быть одинаковым для всех единиц VCL NAL единицы доступа уровня. Значением TemporalId кодированного изображения или единицы доступа уровня является значение TemporalId единиц VCL NAL кодированного изображения или единицы доступа уровня. [Ред. (YK): Проверьте, должны ли все AU уровня в AU иметь одинаковое значение TemporalId.] Значение TemporalId представления подуровня является наибольшим значением TemporalId всех единиц VCL NAL в представлении подуровня.

[00206] Значение TemporalId для единиц не-VCL NAL, ограничено следующим образом:

[00207] - Если nal_unit_type равен DPS_NUT, VPS_NUT или SPS_NUT, TemporalId равен 0, а TemporalId единицы доступа уровня, содержащей единицу NAL, должен быть равен 0.

[00208] - В противном случае, если nal_unit_type равен PH_NUT, TemporalId должен быть равен TemporalId единицы доступа уровня, содержащей единицу NAL.

[00209] - В противном случае, когда nal_unit_type не равен EOS_NUT и не равен EOB_NUT, TemporalId должен быть больше или равен TemporalId единицы доступа уровня, содержащей единицу NAL.

[00210] ПРИМЕЧАНИЕ 5. - Когда единица NAL является единицей не-VCL NAL, значение TemporalId равно минимальному значению значений TemporalId всех единиц доступа уровня, к которым применяется единица не-VCL NAL. Когда nal_unit_type равен PPS_NUT или APS_NUT, TemporalId может быть больше или равен TemporalId содержащей единицы доступа уровня, поскольку все PPS и APS могут быть включены в начало битового потока, при этом TemporalId первого кодированного изображения равен 0. Когда nal_unit_type равен PREFIX_SEI_NUT или SUFFIX_SEI_NUT, TemporalId может быть больше или равен TemporalId содержащей единицы доступа уровня, так как единица SEI NAL может содержать информацию, которая применяется к подмножеству битового потока, которое включает единицы доступа уровня, для которых значения TemporalId больше, чем TemporalId единицы доступа уровня, содержащей единицу SEI NAL.

[00211] Порядок единиц NAL и кодированных изображений и их связь с единицами доступа уровня и единицами доступа.

[00212] В этом пункте определяется порядок единиц NAL и кодированных изображений и их связь с единицами доступа уровня и единицами доступа для CVS, которые соответствуют одному или нескольким профилям, указанным в Приложении A, и которые декодируются с использованием процесса декодирования, указанного в пунктах 2-10.

[00213] Единица доступа уровня состоит из одной единицы NAL заголовка изображения, одного кодированного изображения, которое содержит один или более единиц VCL NAL, и нуля или нескольких единиц VCL NAL и нуля или более единиц не-VCL NAL. Связь единиц VCL NAL с кодированными изображениями описана в пункте 7.4.2.4.4.

[00214] Единица доступа состоит из единицы NAL-разделителя единицы доступа и одной или нескольких единиц доступа уровня в порядке возрастания nuh_layer_id.

[00215] Первая единица доступа в битовом потоке начинается с первой единицы NAL битового потока.

[00216] Пусть firstPicHeaderNalUnitInAu будет единицей NAL заголовка изображения, которая является заголовком изображения первого кодированного изображения, для которого полученное значение PicOrderCntVal отличается от PicOrderCntVal предыдущего кодированного изображения. Первая из следующих единиц NAL, предшествующая firstPicHeaderNalUnitInAu и следующая за последней единицей VCL NAL, предшествующей firstPicHeaderNalUnitInAu, если таковая имеется, определяет начало новой единицы доступа:

[00217] - единица DPS NAL (при наличии),

[00218] - единица VPS NAL (при наличии),

[00219] - единица SPS NAL (при наличии),

[00220] - единица PPS NAL (при наличии),

[00221] - единица APS NAL (при наличии),

[00222] - единица prefix SEI NAL (при наличии),

[00223] - единицы NAL с nal_unit_type в диапазоне RSV_NVCL_25..RSV_NVCL_26 (при наличии),

[00224] - Единицы NAL с nal_unit_type в диапазоне UNSPEC28..UNSPEC29 (при наличии).

[00225] ПРИМЕЧАНИЕ. - Первая единица NAL, предшествующая firstPicHeaderNalUnitInAu и следующая за последней единицей VCL NAL, предшествующей firstPicHeaderNalUnitInAu, если таковая имеется, может быть только одним из перечисленных выше единиц NAL.

[00226] Когда нет ни одного из вышеперечисленных единиц NAL, предшествующих firstPicHeaderNalUnitInAu и следующих за последним VCL NAL, предшествующим firstPicHeaderNalUnitInAu, если таковые имеются, firstPicHeaderNalUnitInAu запускает новую единицу доступа.

[00227] Порядок кодированных изображений и единиц не-VCL NAL, в единице доступа уровня или единице доступа должен подчиняться следующим ограничениям:

[00228] - Каждая единица доступа уровня должна включать в себя одну и только одну единицу NAL заголовка изображения, которая должна предшествовать первой единице VCL NAL единицы доступа уровня.

[00229] - Когда какие-либо единицы DPS NAL, единицы VPS NAL, единицы SPS NAL или единицы PPS NAL присутствуют в единице доступа уровня, они должны предшествовать единице NAL заголовка изображения единицы доступа уровня.

[00230] - Когда какие-либо единицы APS NAL, единицы prefix SEI NAL, единицы NAL с nal_unit_type в диапазоне RSV_NVCL_25..RSV_NVCL_26 или единицы NAL с nal_unit_type в диапазоне UNSPEC28..UNSPEC29 присутствуют в единице доступа уровня, они не должны следовать за последней единицей VCL NAL единицы доступа уровня.

[00231] - Единицы NAL, имеющие nal_unit_type, равный SUFFIX_SEI_NUT или RSV_NVCL_27, или находящийся в диапазоне UNSPEC30..UNSPEC31 в единице доступа уровня, не должны предшествовать первой единице VCL NAL единицы доступа уровня.

[00232] - Когда единица NAL конца последовательности присутствует в единице доступа, она должна быть последней единицей NAL среди всех единиц NAL в единице доступа, отличной от единицы NAL конца битового потока (если присутствует).

[00233] - Когда единица NAL конца битового потока присутствует в единице доступа, она должна быть последней единицей NAL в единице доступа.

[00234] Семантика RBSP заголовка слайса.

[00235] При наличии значение каждого из синтаксических элементов заголовка слайса slice_pic_parameter_set_id, non_reference_picture_flag, colour_plane_id, slice_pic_order_cnt_lsb, recovery_poc_cnt, no_output_of_prior_pics_flag, pic_output_flag и slice_temporal_mvp_enabled_flag должно быть одинаковым во всех заголовках слайса кодированного изображения.

[00236] Переменная CuQpDeltaVal, определяющая разницу между параметром квантования яркости для единицы кодирования, содержащей cu_qp_delta_abs, и ее предсказанием, устанавливается равной 0. Все переменные CuQpOffsetCb, CuQpOffsetCr и CuQpOffsetCbCr, задающие значения, которые должны использоваться при определении соответствующих значений параметров квантования Qp’Cb, Qp’Cr и Qp′CbCr для единицы кодирования, содержащей cu_chroma_qp_offset_flag, устанавливаются равными 0.

[00237] slice_pic_parameter_set_id указывает значение pps_pic_parameter_set_id для используемого PPS. Значение slice_pic_parameter_set_id должно находиться в диапазоне от 0 до 63 включительно.

[00238] Требованием соответствия битового потока является то, что значение TemporalId текущего изображения должно быть больше или равно значению TemporalId PPS, у которого pps_pic_parameter_set_id равен slice_pic_parameter_set_id.

[00239] slice_address указывает адрес слайса. Если он отсутствует, предполагается, что значение slice_address равно 0.

[00240] Если rect_slice_flag равен 0, применяется следующее:

[00241] - Адрес слайса представляет собой ID брика, указанный в уравнении (7-59).

[00242] - Длина slice_address составляет Ceil(Log2 (NumBricksInPic)) бит.

[00243] - Значение slice_address должно находиться в диапазоне от 0 до NumBricksInPic − 1 включительно.

[00244] В противном случае (rect_slice_flag равен 1) применяется следующее:

[00245] - Адрес слайса представляет собой ID слайса.

[00246] - Длина slice_address равна signalled_slice_id_length_minus1+1 бит.

[00247] Если signalled_slice_id_flag равен 0, значение slice_address должно находиться в диапазоне от 0 до num_slices_in_pic_minus1 включительно. В противном случае значение slice_address должно находиться в диапазоне от 0 до 2 ( signalled_slice_id_length_minus1+1 ) - 1 включительно.

[00248] Требованием соответствия битового потока являются следующие ограничения:

[00249] - Значение slice_address не должно быть равно значению slice_address любой другой единицы NAL кодированного слайса того же кодированного изображения.

[00250] - Когда rect_slice_flag равен 0, слайсы изображения должны располагаться в порядке возрастания их значений slice_address.

[00251] - Формы слайсов изображения должны быть такими, чтобы каждый брик при декодировании имел всю левую границу и всю верхнюю границу, состоящую из границы изображения или состоящую из границ ранее декодированного(ых) брика(ов).

[00252] num_bricks_in_slice_minus1, если присутствует, указывает количество бриков в слайсе минус 1. Значение num_bricks_in_slice_minus1 должно находиться в диапазоне от 0 до NumBricksInPic - 1 включительно. Когда rect_slice_flag равен 0, а single_brick_per_slice_flag равен 1, предполагается, что значение num_bricks_in_slice_minus1 равно 0. Когда single_brick_per_slice_flag равен 1, предполагается, что значение num_bricks_in_slice_minus1 равно 0.

[00253] Переменная NumBricksInCurrSlice, задающая количество бриков в текущем слайсе, и SliceBrickIdx[ i ], задающая индекс i-го брика в текущем слайсе, выводятся следующим образом:

[00254] Переменные SubPicIdx, SubPicLeftBoundaryPos, SubPicTopBoundaryPos, SubPicRightBoundaryPos и SubPicBotBoundaryPos получаются следующим образом:

[00255] non_reference_picture_flag, равный 1, указывает, что изображение, содержащее слайс, никогда не используется в качестве опорного изображения. non_reference_picture_flag, равный 0, указывает, что изображение, содержащее слайс, может использоваться или не использоваться в качестве опорного изображения.

[00256] slice_type определяет тип кодирования слайса в соответствии с таблицей 7-11.

Таблица 7-11 - Связь имени с slice_type

slice_type Название slice_type 0 B (B slice) 1 P (P slice) 2 I (I slice)

[00257] Когда nal_unit_type является значением nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно, а текущее изображение является первым изображением в единице доступа, slice_type должен быть равен 2. Если он отсутствует, предполагается, что значение slice_type равно 2.

[00258] colour_plane_id определяет цветовую плоскость, связанную с текущим RBSP слайса, если для параметра separate_colour_plane_flag установлено значение 1. Значение colour_plane_id должно находиться в диапазоне от 0 до 2 включительно. Значения colour_plane_id 0, 1 и 2 соответствуют плоскостям Y, Cb и Cr соответственно.

[00259] ПРИМЕЧАНИЕ - : Нет никакой зависимости между процессами декодирования изображений, имеющих разные значения colour_plane_id.

[00260] slice_pic_order_cnt_lsb указывает счетчик порядка изображений по модулю MaxPicOrderCntLsb для текущего изображения. Длина синтаксического элемента slice_pic_order_cnt_lsb составляет log2_max_pic_order_cnt_lsb_minus4+4 бита. Значение slice_pic_order_cnt_lsb должно находиться в диапазоне от 0 до MaxPicOrderCntLsb − 1 включительно.

[00261] recovery_poc_cnt указывает точку восстановления декодированных изображений в порядке вывода. Если существует изображение picA, которое следует за текущим изображением GDR в порядке декодирования в CVS и имеет значение PicOrderCntVal, равное PicOrderCntVal текущего изображения GDR плюс значение recovery_poc_cnt, изображение picA называется изображением точки восстановления. В противном случае первое изображение в порядке вывода, у которого PicOrderCntVal больше, чем PicOrderCntVal текущего изображения плюс значение recovery_poc_cnt, называется изображением точки восстановления. Изображение точки восстановления не должно предшествовать текущему изображению GDR в порядке декодирования. Значение recovery_poc_cnt должно находиться в диапазоне от 0 до MaxPicOrderCntLsb - 1 включительно.

[00262] Переменная RpPicOrderCntVal получается следующим образом:

[00263] RpPicOrderCntVal=PicOrderCntVal+recovery_poc_cnt (7-94)

[00264] no_output_of_prior_pics_flag влияет на вывод ранее декодированных изображений в буфере декодированных изображений после декодирования изображения CLVSS, которое не является первым изображением в битовом потоке, как указано в Приложении C.

[00265] pic_output_flag влияет на процессы вывода и удаления декодированного изображения, как указано в Приложении C. Если pic_output_flag отсутствует, предполагается, что он равен 1.

[00266] slice_temporal_mvp_enabled_flag определяет, могут ли временные предикторы вектора движения использоваться для межкадрового предсказания. Если slice_temporal_mvp_enabled_flag равен 0, синтаксические элементы текущего изображения должны быть ограничены таким образом, чтобы временной предиктор вектора движения не использовался при декодировании текущего изображения. В противном случае (slice_temporal_mvp_enabled_flag равен 1) при декодировании текущего изображения могут использоваться временные предикторы вектора движения.

[00267] Когда slice_temporal_mvp_enabled_flag отсутствует, применяется следующее:

[00268] Если значение sps_temporal_mvp_enabled_flag равно 0, предполагается, что значение slice_temporal_mvp_enabled_flag равно 0.

[00269] В противном случае (sps_temporal_mvp_enabled_flag равен 1) предполагается, что значение slice_temporal_mvp_enabled_flag равно pps_temporal_mvp_enabled_idc - 1.

[00270] mvd_l1_zero_flag, равный 1, указывает, что синтаксическая структура mvd_coding( x0, y0, 1 ) не анализируется, а MvdL1[ x0 ][ y0 ][ compIdx ] и MvdL1 [ x0 ][ y0 ][ cpIdx ][ compIdx ] установлены равными 0 для compIdx=0..1 и cpIdx=0..2. mvd_l1_zero_flag, равный 0, указывает, что анализируется синтаксическая структура mvd_coding( x0, y0, 1 ). Если он отсутствует, предполагается, что значение mvd_l1_zero_flag равно pps_mvd_l1_zero_idc - 1.

[00271] Процесс декодирования для подсчета порядка изображений.

[00272] Результатом этого процесса является PicOrderCntVal, счетчик порядка изображений для текущего изображения.

[00273] Каждое закодированное изображение связано с переменной счетчика порядка изображений, обозначенной как PicOrderCntVal.

[00274] Если текущее изображение не является изображением CLVSS, переменные prevPicOrderCntLsb и prevPicOrderCntMsb получаются следующим образом:

[00275] - Пусть prevTid0Pic будет предыдущим изображением в порядке декодирования, которое имеет nuh_layer_id, равный nuh_layer_id текущего изображения, и TemporalId, равный 0, и которое не является изображением RASL или RADL.

[00276] - Переменная prevPicOrderCntLsb устанавливается равной pic_order_cnt_lsb из prevTid0Pic.

[00277] - Переменная prevPicOrderCntMsb устанавливается равной PicOrderCntMsb из prevTid0Pic.

[00278] Переменная PicOrderCntMsb текущего изображения получается следующим образом:

[00279] - Если текущее изображение является изображением CLVSS, PicOrderCntMsb устанавливается равным 0.

[00280] - В противном случае PicOrderCntMsb выводится следующим образом:

[00281] PicOrderCntVal получается следующим образом:

PicOrderCntVal=PicOrderCntMsb+pic_order_cnt_lsb (8-2)

[00282] ПРИМЕЧАНИЕ 1. - Все изображения CLVSS будут иметь значение PicOrderCntVal, равное pic_order_cnt_lsb, поскольку для изображений CLVSS PicOrderCntMsb устанавливается равным 0.

[00283] Значение PicOrderCntVal должно находиться в диапазоне от -231 до 231-1 включительно.

[00284] В одном CVS значения PicOrderCntVal для любых двух закодированных изображений с одинаковым значением nuh_layer_id не должны совпадать.

[00285] Все изображения в любой конкретной единице доступа должны иметь одинаковое значение PicOrderCntVal.

[00286] Функция PicOrderCnt( picX ) определяется следующим образом:

PicOrderCnt( picX ) = PicOrderCntVal изображения picX (8-3)

[00287] Функция DiffPicOrderCnt( picA, picB ) определяется следующим образом:

DiffPicOrderCnt( picA, picB ) = PicOrderCnt( picA ) − PicOrderCnt( picB ) (8-4)

[00288] Битовый поток не должен содержать данных, результатом которых являются значения DiffPicOrderCnt( picA, picB ), используемые в процессе декодирования, которые не находятся в диапазоне от -215 до 215-1 включительно.

[00289] ПРИМЕЧАНИЕ 2. - Пусть X будет текущим изображением, а Y и Z будут двумя другими изображениями в том же самом CVS, Y и Z считаются находящимися в том же направлении порядка вывода от X, когда и DiffPicOrderCnt( X, Y ), и DiffPicOrderCnt( X, Z ) положительны или оба отрицательны.

[00290] Общий процесс декодирования для создания недоступных опорных изображений.

[00291] Этот процесс вызывается один раз для кодированного изображения, когда текущее изображение является изображением CRA с NoIncorrectPicOutputFlag, равным 1, или изображением GDR с NoIncorrectPicOutputFlag, равным 1.

[00292] Когда этот процесс вызывается, применяется следующее:

[00293] - Для каждого RefPicList[ i ][ j ] с i в диапазоне от 0 до 1 включительно и j в диапазоне от 0 до num_ref_entries[ i ][ RplsIdx[ i ] ] − 1 включительно, что равно "нет опорного изображения", создается изображение, как указано в подпункте 8.3.4.2, и применяется следующее.

[00294] - Значение nuh_layer_id для сформированного изображения устанавливается равным nuh_layer_id текущего изображения.

[00295] - Если st_ref_pic_flag[ i ][RplsIdx[ i ][ j ] равно 1, значение PicOrderCntVal для сформированного изображения устанавливается равным RefPicPocList[ i ][ j ] и сформированное изображение помечается как "используется для краткосрочной ссылки".

[00296] - В противном случае (st_ref_pic_flag[ i ][RplsIdx[ i ]][ j ] равен 0), значение PicOrderCntVal для сформированного изображения устанавливается равным RefPicLtPocList[ i ][ j ], значение pic_order_cnt_lsb для сформированного изображения предполагается равным ( RefPicLtPocList[ i ][ j ] & ( MaxPicOrderCntLsb - 1 ) ), а сформированное изображение помечается как "используется для долгосрочного использования".

[00297] - Значение PicOutputFlag для сформированного опорного изображения установлено равным 0.

[00298] - RefPicList[ i ][ j ] устанавливается в качестве сформированного опорного изображения.

[00299] Процесс вывода для предсказания вектора движения временной яркости.

[00300] Переменные mvLXCol и availableFlagLXCol получаются следующим образом:

[00301] - Если pic_temporal_mvp_enabled_flag равен 0 или (cbWidth * cbHeight) меньше или равен 32, оба компонента mvLXCol устанавливаются равными 0, а availableFlagLXCol устанавливается равными 0.

[00302] - В противном случае (pic_temporal_mvp_enabled_flag равен 1) применяются следующие упорядоченные этапы.

[00303] 1. Нижний правый совмещенный вектор движения, а также нижняя и правая граничные выборки определяются следующим образом:

xColBr=xCb+cbWidth (8-421)

yColBr=yCb+cbHeight (8-422)

rightBoundaryPos=subpic_treated_as_pic_flag[ SubPicIdx] ? SubPicRightBoundaryPos : pic_width_in_luma_samples – 1 (8-423)

botBoundaryPos=subpic_treated_as_pic_flag[ SubPicIdx] ? SubPicBotBoundaryPos: pic_height_in_luma_samples - 1 (8-424)

[00304] - Если yCb >> CtbLog2SizeY равно yColBr >> CtbLog2SizeY, yColBr меньше или равно botBoundaryPos, а xColBr меньше или равно rightBoundaryPos, применяется следующее.

[00305] - Переменная colCb определяет блок кодирования яркости, охватывающий измененное местоположение, указанное как ( ( xColBr >> 3 ) << 3 , ( yColBr >> 3 ) << 3 ) внутри совмещенного изображения, указанного ColPic.

[00306] - Местоположение яркости ( xColCb, yColCb ) устанавливается равным верхней левой выборке совмещенного блока кодирования яркости, заданного посредством colCb, относительно верхней левой выборке яркости совмещенного изображения, заданного ColPic.

[00307] - Процесс получения совмещенных векторов движения, как указано в пункте 8.5.2.12, запускается с currCb, colCb, ( xColCb, yColCb ), refIdxLX и sbFlag, установленными равными 0, в качестве входных данных, а выходные данные назначаются mvLXCol и availableFlagLXCol.

[00308] - В противном случае оба компонента mvLXCol устанавливаются равными 0, а availableFlagLXCol устанавливается равными 0.

[00309] 2. Когда availableFlagLXCol равен 0, центральный совмещенный вектор движения получается следующим образом:

xColCtr=xCb + ( cbWidth >> 1 ) (8-425)

yColCtr=yCb + ( cbHeight >> 1 ) (8-426)

[00310] - Переменная colCb указывает блок кодирования яркости, охватывающий измененное местоположение, заданное ( ( xColCtr >> 3 ) << 3 , ( yColCtr >> 3 ) << 3 ) внутри совмещенного изображения, указанного ColPic.

[00311] - Местоположение яркости ( xColCb, yColCb ) устанавливается равным верхней левой выборке совмещенного блока кодирования яркости, заданного посредством colCb, относительно верхней левой выборке яркости совмещенного изображения, заданного ColPic.

[00312] - Процесс получения совмещенных векторов движения, как указано в пункте 8.5.2.12, запускается с currCb, colCb, ( xColCb, yColCb ), refIdxLX и sbFlag, установленными равными 0, в качестве входных данных, а выходные данные назначаются mvLXCol и availableFlagLXCol.

[00313] Процесс получения кандидатов на временное слияние на основе подблоков.

[00314] Флаг доступности availableFlagSbCol выводится следующим образом.

[00315] - Если выполняется одно или несколько из следующих условий, availableFlagSbCol устанавливается равным 0.

[00316] - pic_temporal_mvp_enabled_flag равен 0.

[00317] - sps_sbtmvp_enabled_flag равен 0.

[00318] - cbWidth меньше 8.

[00319] - cbHeight меньше 8.

[00320] - В противном случае применяются следующие упорядоченные этапы.

[00321] 1. Местоположение ( xCtb, yCtb ) верхней левой выборке блока дерева кодирования яркости, который содержит текущий блок кодирования, и местоположение ( xCtr, yCtr ) нихней правой централоной выборки текущего блока кодирования яркости выводятся следующим образом. :

xCtb=( xCb >> CtuLog2Size ) << CtuLog2Size (8-542)

yCtb=( yCb >> CtuLog2Size ) << CtuLog2Size (8-543)

xCtr=xCb + ( cbWidth/2 ) (8-544)

yCtr=yCb + ( cbHeight/2 ) (8-545)

[00322] 2. Местоположение яркости ( xColCtrCb, yColCtrCb ) устанавливается равным верхней левой выборке блока кодирования яркости, покрывающего местоположение, заданное ( xCtr, yCtr ) внутри ColPic, относительно верхней левой выборке яркости совместно расположенного изображения, указанного ColPic.

[00323] 3. Процесс вывода для основанных на субблоках временных базовых данных о движении, как указано в пункте 8.5.5.4, вызывается с указанием местоположения ( xCtb, yCtb ), местоположения ( xColCtrCb, yColCtrCb ), флага доступности availableFlagA1 и флага использования списка предсказаний predFlagLXA1, и опорного индекса refIdxLXA1, и вектора mvLXA1 движения, где X равен 0 и 1 в качестве входных данных, и векторов ctrMvLX движения, и флагов использования списка предсказаний ctrPredFlagLX совместно расположенного блока, где X равен 0 и 1, и временного вектора tempMv движения в качестве выходных данных.

[00324] 4. Переменная availableFlagSbCol получается следующим образом.

[00325] - Если и ctrPredFlagL0, и ctrPredFlagL1 равны 0, availableFlagSbCol устанавливается равным 0.

[00326] - В противном случае, availableFlagSbCol устанавливается равным 1.

[00327] Процесс вывода построенных аффинных кандидатов на слияние векторов движения контрольных точек.

[00328] Четвертый (нижний правый) вектор движения контрольной точки cpMvLXCorner[3], опорный индекс refIdxLXCorner[3], флаг использования списка предсказаний predFlagLXCorner[3] и флаг доступности availableFlagCorner[3] с X, равным 0 и 1, выводятся следующим образом.

[00329] - Опорные индексы для кандидата на временное слияние, refIdxLXCorner[3], где X равен 0 или 1, устанавливаются равными 0.

[00330] - Переменные mvLXCol и availableFlagLXCol, где X равен 0 или 1, получаются следующим образом:

[00331] - Если pic_temporal_mvp_enabled_flag равен 0, оба компонента mvLXCol устанавливаются равными 0, а availableFlagLXCol устанавливается равными 0.

[00332] В противном случае (pic_temporal_mvp_enabled_flag равен 1) применяется следующее:

xColBr=xCb+cbWidth (8-601)

yColBr=yCb+cbHeight (8-602)

[00333] - Если yCb >> CtbLog2SizeY равно yColBr >> CtbLog2SizeY, yColBr меньше, чем pic_height_in_luma_samples, а xColBr меньше, чем pic_width_in_luma_samples, применяется следующее.

[00334] - Переменная colCb определяет блок кодирования яркости, охватывающий измененное местоположение, указанное как ( ( xColBr >> 3 ) << 3 , ( yColBr >> 3 ) << 3 ) внутри совмещенного изображения, указанного ColPic.

[00335] - Местоположение яркости ( xColCb, yColCb ) устанавливается равным верхней левой выборке совмещенного блока кодирования яркости, заданного посредством colCb, относительно верхней левой выборке яркости совмещенного изображения, заданного ColPic.

[00336] - Процесс вывода для совмещенных векторов движения, как указано в пункте 8.5.2.12, вызывается с currCb, colCb, ( xColCb, yColCb ), refIdxLXCorner[ 3 ] и sbFlag, установленными равными 0, в качестве входных данных, а выходные данные назначаются mvLXCol и availableFlagLXCol.

[00337] - В противном случае оба компонента mvLXCol устанавливаются равными 0, а availableFlagLXCol устанавливается равными 0.

[00338] - Переменные availableFlagCorner[3], predFlagL0Corner[3], cpMvL0Corner[3] и predFlagL1Corner[3] получаются следующим образом.

availableFlagCorner[ 3 ]=availableFlagL0Col (8-603)

predFlagL0Corner[3]=availableFlagL0Col (8-604)

cpMvL0Corner[3]=mvL0Col (8-605)

predFlagL1Corner[3]=0 (8-606)

[00339] Когда slice_type равен B, переменные availableFlagCorner[3], predFlagL1Corner[3] и cpMvL1Corner[3] получаются следующим образом.

availableFlagCorner[ 3 ]=availableFlagL0Col || availableFlagL1Col (8-607)

predFlagL1Corner[3]=availableFlagL1Col (8-608)

cpMvL1Corner[3]=mvL1Col (8-609)

[00340] Фиг. 11 представляет собой схематическое представление устройства 1100 кодирования видео (например, видеокодера 300 или видеодекодера 400) в соответствии с вариантом осуществления раскрытия. Устройство 1100 кодирования видео подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. Устройство 1100 кодирования видео содержит входные порты 1110 и блоки 1120 приемника (Rx) для приема данных; процессор, логический блок или центральный процессор (CPU) 1130 для обработки данных; блоки 1140 передатчика (Tx) и выходные порты 1150 для передачи данных; и память 1160 для хранения данных. Устройство 1100 кодирования видео также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 1110, блокам 1120 приемника, блокам 1140 передатчика и выходным портам 1150 для обеспечения входа или выхода оптических или электрических сигналов.

[00341] Процессор 1130 реализуется аппаратным обеспечением и программным обеспечением. Процессор 1130 может быть реализован в виде одного или более ядер (например, в форме многоядерного процессора), микросхем CPU, программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 1130 поддерживает связь с входными портами 1110, блоками 1120 приемника, блоками 1140 передатчика, выходными портами 1150 и памятью 1160. Процессор 1130 содержит модуль 1170 кодирования. Модуль 1170 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 1170 кодирования. Следовательно, включение модуля 1170 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1100 кодирования видео и обеспечивает трансформацию устройства 1100 кодирования видео в другое состояние. В качестве альтернативы модуль 1170 кодирования реализуется как инструкции, хранящиеся в памяти 1160 и исполняемые процессором 1130.

[00342] Устройство 1100 кодирования видео может также включать в себя устройства 1180 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 1180 I/O могут включать в себя устройства вывода, такие как дисплей, для отображения видеоданных, динамики для вывода аудиоданных и т.д. Устройства 1180 I/O могут также включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т. д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.

[00343] Память 1160 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 1160 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянную память (ROM), оперативную память (RAM), троичную память с адресацией по содержимому (TCAM) и/или статическую оперативную память (SRAM).

[00344] Фиг. 12 - схематическая диаграмма варианта осуществления средства 1200 кодирования. В варианте осуществления средство 1200 кодирования реализовано в устройстве 1202 кодирования видео (например, видеокодере 300 или видеодекодере 400). Устройство 1202 кодирования видео включает в себя средство 1201 приема. Средство 1201 приема выполнено с возможностью приема изображения для кодирования или для приема битового потока для декодирования. Устройство 1202 кодирования видео включает в себя средство 1207 передачи, соединенное со средством 1201 приема. Средство 1207 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированного изображения на средство отображения (например, одно из устройств 1180 I/O).

[00345] Устройство 1202 кодирования видео включает в себя средство 1203 хранения. Средство 1203 хранения соединено по меньшей мере с одним из средства 1201 приема или средства 1207 передачи. Средство 1203 хранения выполнено с возможностью хранения инструкций. Устройство 1202 кодирования видео также включает в себя средство 1205 обработки. Средство 1205 обработки соединено со средством 1203 хранения. Средство 1205 обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве 1203 хранения, для осуществления способов.

[00346] Также следует понимать, что этапы иллюстративных способов, изложенных в настоящем документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто иллюстративный. Подобным образом в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.

[00347] Несмотря на то, что в настоящем раскрытии было предоставлено несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и есть намерение не ограничиваться приведенными в данном документе деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы

[00348] Кроме того, методы, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, модулями, методиками или способами без отклонения от объема настоящего раскрытия. Другие элементы, показанные или рассмотренные как связанные или непосредственно связанные или сообщающиеся друг с другом, могут быть связаны косвенно или сообщаться через какой-либо интерфейс, устройство или промежуточный компонент, будь то электрически, механически или иным образом. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть осуществлены без отклонения от духа и объема, раскрытых в данном документе.

Похожие патенты RU2822313C1

название год авторы номер документа
СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО 2020
  • Хендри, Фну
  • Ван, Е-Куй
  • Чен, Цзянле
RU2819585C1
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ 2020
  • Ван, Е-Куй
RU2822533C1
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAP И НЕ-IRAP В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Ван, Е-Куй
RU2815736C1
СПОСОБ ПОДДЕРЖКИ БЛОКОВ УРОВНЯ СЕТЕВОЙ АБСТРАКЦИИ (NAL) СМЕШАННЫХ ТИПОВ В КОДИРОВАННОМ ИЗОБРАЖЕНИИ 2020
  • Чой Бёнду
  • Венгер Стефан
  • Лю Шань
RU2782245C1
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ 2020
  • Ван, Е-Куй
RU2825440C1
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ 2020
  • Ван, Е-Куй
RU2821048C1
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS 2020
  • Ван, Е-Куй
RU2820076C1
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ 2020
  • Ван, Е-Куй
RU2824781C1
Способ сигнализации заголовка изображения в потоке кодированных видеоданных 2021
  • Чой Бёнду
  • Лю Шань
  • Венгер Стефан
RU2789520C1
СПОСОБ И УСТРОЙСТВО СОГЛАСОВАНИЯ ВЗВЕШЕННОГО ПРЕДСКАЗАНИЯ С НЕПРЯМОУГОЛЬНЫМИ РЕЖИМАМИ СЛИЯНИЯ 2021
  • Филиппов, Алексей Константинович
  • Чэнь, Хуаньбан
  • Руфицкий, Василий Алексеевич
  • Ян, Хайтао
  • Алшина, Елена Александровна
RU2821011C1

Иллюстрации к изобретению RU 2 822 313 C1

Реферат патента 2024 года СИГНАЛИЗАЦИЯ ЗАГОЛОВКА ИЗОБРАЖЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО

Изобретение относится к области кодирования видео. Техническим результатом является уменьшение ошибок кодирования и декодирования битового потока видео. Способ декодирования включает в себя прием битового потока видео, включающего в себя единицу изображения (PU), при этом PU включает в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы NAL уровня кодирования видео (VCL), а временной ID единицы PH NAL равен временному ID у PU; и декодирование кодированного изображения из PU для получения декодированного изображения. 9 н. и 17 з.п. ф-лы, 12 ил.

Формула изобретения RU 2 822 313 C1

1. Способ декодирования, реализуемый видеодекодером, содержащий:

прием видеодекодером битового потока видео, включающего в себя единицу изображения (PU), при этом PU включает в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU; и

декодирование видеодекодером кодированного изображения с PU для получения декодированного изображения.

2. Способ по п. 1, в котором PU включает в себя только один заголовок изображения (PH), и при этом кодированное изображение является упомянутым только одним изображением в PU.

3. Способ по любому из пп. 1, 2, дополнительно содержащий идентификацию уровня кодированного изображения на основе ID уровня единицы PH NAL и идентификацию положения во времени кодированного изображения в битовом потоке видео на основе временного ID единицы PH NAL.

4. Способ по любому из пп. 1-3, в котором связанная единица VCL NAL включает в себя слайс кодированного изображения.

5. Способ по любому из пп. 1-4, в котором единица PH NAL представляет собой единицу не-VCL NAL.

6. Способ по п. 2, в котором единица PH NAL включает в себя упомянутый только один PH.

7. Способ по любому из пп. 1-6, в котором ID уровня единицы PH NAL обозначается как nuh_layer_id.

8. Способ по любому из пп. 1-7, в котором ID уровня единицы VCL NAL идентифицирует уровень, который включает в себя связанную единицу VCL NAL.

9. Способ по любому из пп. 1-8, дополнительно содержащий отображение декодированного изображения на дисплее электронного устройства.

10. Способ кодирования, реализуемый видеокодером, содержащий:

формирование видеокодером единицы изображения (PU), включающей в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), при этом PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU;

кодирование видеокодером PU в битовый поток видео; и

сохранение видеокодером битового потока видео для передачи видеодекодеру.

11. Способ по п. 10, в котором PU включает в себя только один заголовок изображения (PH) и кодированное изображение, и при этом кодированное изображение является упомянутым только одним изображением в PU.

12. Способ по п. 11, в котором ID уровня единицы PH NAL идентифицирует уровень кодированного изображения в битовом потоке видео, а временной ID единицы PH NAL идентифицирует положение во времени кодированного изображения в пределах многоуровневого битового потока.

13. Способ по любому из пп. 11, 12, в котором связанная единица VCL NAL включает в себя слайс кодированного изображения, и при этом единица PH NAL представляет собой единицу не-VCL NAL.

14. Устройство декодирования, содержащее:

приемник, выполненный с возможностью приема битового потока видео, включающего в себя единицу изображения (PU), при этом PU включает в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT), и связанную единицу NAL уровня кодирования видео (VCL), PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU ;

память, соединенную с приемником, при этом память хранит инструкции; и

процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций для предписания устройству декодирования:

декодировать кодированное изображение из PU, чтобы получить декодированное изображение.

15. Устройство декодирования по п. 14, в котором PU включает в себя только один заголовок изображения (PH) и в котором кодированное изображение является упомянутым только одним изображением в PU.

16. Устройство декодирования по п. 15, в котором процессор выполнен с возможностью выполнения инструкций для предписания устройству декодирования идентифицировать уровень кодированного изображения в битовом потоке видео на основе ID уровня единицы PH NAL и идентифицировать положение во времени кодированного изображения в битовом потоке видео на основе временного ID единицы PH NAL.

17. Устройство декодирования по любому из пп. 15, 16, в котором связанная единица VCL NAL включает в себя слайс кодированного изображения.

18. Устройство кодирования, содержащее:

память, содержащую инструкции;

процессор, соединенный с памятью, при этом процессор выполнен с возможностью реализации инструкций для предписания устройству кодирования:

формировать единицу изображения (PU), включающую в себя единицу уровня сетевой абстракции (NAL) заголовка изображения (PH), имеющую тип единицы NAL заголовка изображения (PH_NUT) и связанную единицу NAL уровня кодирования видео (VCL), при этом PH_NUT означает, что идентификатор (ID) уровня единицы PH NAL равен ID уровня связанной единицы VCL NAL, а временной ID единицы PH NAL равен временному ID у PU;

кодировать PU в битовый поток видео; и

передатчик, соединенный с процессором, при этом передатчик выполнен с возможностью передачи битового потока видео в видеодекодер.

19. Устройство кодирования по п. 18, в котором PU включает в себя только один заголовок изображения (PH) и кодированное изображение и в котором кодированное изображение является упомянутым только одним изображением в PU.

20. Устройство кодирования по п. 19, в котором ID уровня единицы PH NAL идентифицирует уровень кодированного изображения в битовом потоке видео и в котором временной ID единицы PH NAL идентифицирует положение во времени кодированного изображения в битовом потоке видео.

21. Оборудование кодирования, содержащее:

приемник, выполненный с возможностью приема изображения для кодирования или для приема битового потока для декодирования;

передатчик, соединенный с приемником, при этом передатчик выполнен с возможностью передачи битового потока на декодер или для передачи декодированного изображения на дисплей;

память, соединенную по меньшей мере с одним из приемника или передатчика, при этом память выполнена с возможностью хранения инструкций; и

процессор, соединенный с памятью, при этом процессор выполнен с возможностью выполнения инструкций, хранящихся в памяти, для выполнения способа по любому из пп. 1-9 или по любому из пп. 10-13.

22. Оборудование кодирования по п. 20, дополнительно содержащее дисплей, выполненный с возможностью отображения декодированного изображения.

23. Система для кодирования видео, содержащая:

кодер; и

декодер, соединенный с кодером, при этом кодер или декодер включает в себя устройство декодирования, устройство кодирования или оборудование кодирования по любому из пп. 15-22.

24. Средство для кодирования, содержащее:

средство приема, выполненное с возможностью приема изображения для кодирования или для приема битового потока для декодирования;

средство передачи, соединенное со средством приема, средство передачи выполнено с возможностью передачи битового потока на средство декодирования или передачи декодированного изображения на средство отображения;

средство хранения, соединенное по меньшей мере с одним из средств приема или средства передачи, при этом средство хранения выполнено с возможностью хранения инструкций; и

средство обработки, соединенное со средством хранения, при этом средство обработки выполнено с возможностью выполнения инструкций, хранящихся в средстве хранения, для выполнения способа по любому из пп. 1-9 или по любому из пп. 10-13.

25. Считываемый компьютером запоминающий носитель, при этом считываемый компьютером запоминающий носитель хранит программу, которая может быть выполнена процессором, при этом, когда компьютерная программа выполняется упомянутым процессором, процессор выполняет способ по любому из пп. 1-9 или по любому из пп. 10-13.

26. Кодер, содержащий схему обработки для выполнения способа по любому из пп. 1-9 или по любому из пп. 10-13.

Документы, цитированные в отчете о поиске Патент 2024 года RU2822313C1

Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
Способ получения цианистых соединений 1924
  • Климов Б.К.
SU2018A1
Пломбировальные щипцы 1923
  • Громов И.С.
SU2006A1
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
КОДИРОВАНИЕ СООБЩЕНИЯ ИНФОРМАЦИИ ДОПОЛНИТЕЛЬНОГО УЛУЧШЕНИЯ 2013
  • Ван Е-Куй
RU2618942C2
СИГНАЛИЗАЦИЯ ИДЕНТИФИКАТОРОВ УРОВНЕЙ ДЛЯ РАБОЧИХ ТОЧЕК ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Е-Куй
RU2635892C2

RU 2 822 313 C1

Авторы

Хендри, Фну

Ван, Е-Куй

Чен, Цзянле

Даты

2024-07-04Публикация

2020-08-05Подача