RU2822714C1 - Поддержка смешанных снимков irar и he-irar в пределах единицы доступа в многослойных битовых видеопотоках - Google Patents

Поддержка смешанных снимков irar и he-irar в пределах единицы доступа в многослойных битовых видеопотоках Download PDF

Info

Publication number
RU2822714C1
RU2822714C1 RU2022109857A RU2022109857A RU2822714C1 RU 2822714 C1 RU2822714 C1 RU 2822714C1 RU 2022109857 A RU2022109857 A RU 2022109857A RU 2022109857 A RU2022109857 A RU 2022109857A RU 2822714 C1 RU2822714 C1 RU 2822714C1
Authority
RU
Russia
Prior art keywords
snapshot
layer
video
picture
prediction
Prior art date
Application number
RU2022109857A
Other languages
English (en)
Other versions
RU2822714C9 (ru
Inventor
Е-куй Ван
Original Assignee
Хуавэй Текнолоджиз Ко., Лтд.
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Хуавэй Текнолоджиз Ко., Лтд. filed Critical Хуавэй Текнолоджиз Ко., Лтд.
Publication of RU2822714C1 publication Critical patent/RU2822714C1/ru
Application granted granted Critical
Publication of RU2822714C9 publication Critical patent/RU2822714C9/ru

Links

Images

Abstract

Изобретение относится к кодированию видео. Техническим результатом является повышение эффективности сжатия видео. Результат достигается тем, что принимают битовый поток, включающий в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом AU CVSS содержит единицу снимка (PU) для каждого слоя и при этом кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS); идентификацию кодированного снимка из одного из слоев на основе значения порядкового номера снимка (POC) и декодирование кодированного снимка для получения декодированного снимка. 4 н. и 8 з.п. ф-лы, 13 ил.

Description

ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] Данная заявка на патент испрашивает приоритет по предварительной заявке на патент США №. 62/905,141, поданной 24 сентября 2019 г., под авторством Е-Куи Вангом и озаглавленной «Поддержка смешанных снимков RAP и Не-IRAP во единице доступа в многослойных битовых видеопотоках» (“Support of Mixed RAP and Non-IRAP Pictures Within An Access Unit In Multiple-Layer Video Bitstreams”).
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] В целом настоящее раскрытие относится к многослойным битовым видеопотокам при кодировании видео. Более конкретно, настоящее раскрытие относится к поддержке многослойных битовых видеопотоков, содержащих снимки как точки интра-произвольного доступа (IRAP), так и не-IRAP.
УРОВЕНЬ ТЕХНИКИ
[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством-получателем декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] Первый аспект относится к способу декодирования, реализуемому видеодекодером, содержащему прием видеодекодером битового потока, включающего в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом AU CVSS содержит единицу снимка (PU) для каждого слоя, и при этом кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS); идентификацию видеодекодером кодированного снимка из одного из слоев на основе значения порядкового номера снимка (POC); и декодирование видеодекодером кодированного снимка для получения декодированного снимка.
[0005] Способ предоставляет методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0006] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком точки интра-произвольного доступа (IRAP).
[0007] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком постепенного обновления декодирования (GDR).
[0008] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS связан с флагом отсутствия вывода до восстановления, расположенным в наборе параметров снимка (PPS) у PU, и при этом флаг отсутствия вывода до восстановления равен 1.
[0009] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой AU CVSS задан набором параметров видео (VPS).
[0010] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что AU CVSS является начальной AU кодированной видеопоследовательности (CVS).
[0011] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что PU называется единицей доступа к слою.
[0012] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что AU CVSS называется полной AU, поскольку каждый слой AU CVSS содержит одну из единиц снимка (PU).
[0013] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает отображение кодированного снимка декодированным на дисплее электронного устройства.
[0014] Второй аспект относится к способу кодирования, реализуемому видеокодером, при этом способ содержит вставку видеокодером единицы снимка (PU), содержащего кодированный снимок, в каждый слой единицы доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом видеокодер ограничен таким образом, что кодированный снимок является снимком начала кодированной послойно видеопоследовательности (CLVSS); кодирование видеокодером кодированной послойно видеопоследовательности (CLVS), включающей в себя AU CVSS, в битовый поток; и сохранение видеокодером битового потока для передачи в видеодекодер.
[0015] Способ предоставляет методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0016] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком точки интра-произвольного доступа (IRAP).
[0017] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком постепенного обновления декодирования (GDR).
[0018] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой AU CVSS задан набором параметров видео (VPS).
[0019] Третий аспект относится к декодирующему устройству, содержащему приемник, выполненный с возможностью приема битового потока, включающего в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом AU CVSS содержит единицу снимка (PU) для каждого слоя, и при этом кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS); память, соединенную с приемником, причем память хранит инструкции; и процессор, соединенный с памятью, при этом процессор выполнен с возможностью исполнения инструкций для предписания декодирующему устройству идентифицировать кодированный снимок из одного из слоев на основе значения порядкового номера снимка (POC); и декодировать кодированный снимок для получения декодированного снимка.
[0020] Декодирующее устройство обеспечивает методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0021] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком точки интра-произвольного доступа (IRAP).
[0022] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком постепенного обновления декодирования (GDR).
[0023] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой AU CVSS задан набором параметров видео (VPS).
[0024] Четвертый аспект относится к кодирующему устройству, содержащему память, содержащую инструкции; процессор, соединенный с памятью, при этом процессор выполнен с возможностью реализации инструкций для предписания кодирующему устройству вставлять единицу снимка (PU), содержащий кодированный снимок, в каждый слой единицы доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом кодирующее устройство ограничено таким образом, что кодированный снимок является снимком начала кодированной послойно видеопоследовательности (CLVSS); кодировать кодированную послойно видеопоследовательность (CLVS), включающую в себя AU CVSS, в битовый поток; и передатчик, соединенный с процессором, причем передатчик выполнен с возможностью передачи битового видеопотока в видеодекодер.
[0025] Кодирующее устройство обеспечивает методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0026] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок CLVSS является снимком точки интра-произвольного доступа (IRAP) или снимком постепенного обновления декодирования (GDR).
[0027] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой AU CVSS задан набором параметров видео (VPS).
[0028] Пятый аспект относится к устройству кодирования. Устройство кодирования включает в себя приемник, выполненный с возможностью приема снимка для кодирования или приема битового потока для декодирования; передатчик, соединенный с приемником, причем передатчик выполнен с возможностью передачи битового потока в декодер или передачи декодированного снимка на дисплей; память, соединенную с по меньшей мере одним из приемника или передатчика, причем память выполнена с возможностью хранения инструкций; и процессор, соединенный с памятью, причем процессор выполнен с возможностью исполнения инструкций, хранящихся в памяти, для выполнения любого из раскрытых в данном документе способов.
[0029] Устройство кодирования обеспечивает методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0030] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что дисплей выполнен с возможностью отображения декодированного снимка.
[0031] Шестой аспект относится к системе. Система включает в себя кодер; и декодер, связанный с кодером, при этом кодер или декодер включает в себя декодирующее устройство, кодирующее устройство или устройство кодирования, раскрытые в настоящем документе.
[0032] Система предоставляет методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0033] Седьмой аспект относится к средству кодирования. Средство кодирования включает в себя средство приема, выполненное с возможностью приема снимка для кодирования или приема битового потока для декодирования; средство передачи, соединенное со средством приема, причем средство передачи, выполненное с возможностью передачи битового потока в средство декодирования или передачи декодированного изображения в средство отображения; средство хранения, соединенное с по меньшей мере одним из средства приема или средства передачи, средство хранения выполнено с возможностью хранения инструкций; и средство обработки, соединенное со средством хранения, средство обработки, выполненное с возможностью исполнения инструкций, хранящихся в средстве хранения, для выполнения любого из способов, раскрытых в данном документе.
[0034] Средство кодирования обеспечивает методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[0035] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или более другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.
[0036] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0037] Для более полного понимания настоящего раскрытия теперь сделана ссылка на следующее краткое описание, рассматриваемое с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[0038] Фиг.1 является блок-схемой последовательности операций примерного способа кодирования/декодирования видеосигнала.
[0039] Фиг.2 является принципиальной схемой примерной системы кодирования и декодирования (кодека) для видеокодирования.
[0040] Фиг.3 является принципиальной схемой примерной, иллюстрирующей примерный видеокодер.
[0041] Фиг.4 является принципиальной схемой примерной, иллюстрирующей примерный видеодекодер.
[0042] Фиг.5 иллюстрирует пример многослойного кодирования для пространственной масштабируемости.
[0043] Фиг.6 является представлением взаимосвязи между снимком IRAP относительно впередиидущих снимков и замыкающих снимков в порядке декодирования и порядке представления.
[0044] Фиг.7 иллюстрирует битовый видеопоток, приспособленный для реализации методики постепенного обновления декодирования (GDR).
[0045] Фиг.8 является принципиальной схемой, иллюстрирующей поиск нежелательного движения при использовании ограничения кодера для поддержки GDR.
[0046] Фиг.9 иллюстрирует вариант осуществления битового видеопотока.
[0047] Фиг.10 является вариантом осуществления способа декодирования кодированного битового видеопотока.
[0048] Фиг.11 является вариантом осуществления способа кодирования кодированного битового видеопотока.
[0049] Фиг.12 является принципиальной схемой устройства видеокодирования.
[0050] Фиг.13 является принципиальной схемой варианта осуществления средства кодирования.
ПОДРОБНОЕ ОПИСАНИЕ
[0051] Вначале следует понять, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества способов, известных в настоящее время или существующих. Раскрытие никоим образом не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные здесь, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.
[0052] Следующие ниже термины определены следующим образом, если они не используются в данном документе в противоположном контексте. В частности, следующие определения предназначены для дополнительной ясности настоящего раскрытия. Однако в разных контекстах термины могут описываться по-разному. Соответственно, следующие определения следует рассматривать как дополнение и не следует рассматривать как ограничение каких-либо других определений описаний, предоставленных для таких терминов в данном документе.
[0053] Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Снимок - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Снимок, который кодируется или декодируется, может называться текущим снимком для ясности обсуждения. Опорный снимок является снимком, который содержит опорные дискретные отсчеты, которые можно использовать при кодировании других снимков по ссылке в соответствии с интер-предсказанием (межкадровым (inter-prediction)) и/или межслойным предсказанием (inter-layer prediction). Список опорных снимков является списком опорных снимков, используемых для интер-предсказания и/или межслойного предсказания. Некоторые системы видеокодирования используют два списка опорных снимков, которые можно обозначить как первый список опорных снимков и нулевой список опорных снимков. Структура списков опорных снимков является адресуемой синтаксической структурой, которая содержит множество списков опорных снимков. Интер-предсказание является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, который отличается от текущего снимка, где опорный снимок и текущий снимок находятся в одном слое. Запись структуры списка опорных снимков является адресуемым местом в структуре списка опорных снимков, которое указывает опорный снимок, связанный со списком опорных снимков. Заголовок сегмента - это часть кодированного сегмента, содержащая элементы данных, относящиеся ко всем видеоданным в клетке, представленной в сегменте. Набор параметров последовательности (SPS) - это набор параметров, который содержит данные, относящиеся к последовательности снимка. Набор параметров снимка (PPS) является синтаксической структурой, содержащей синтаксические элементы, которые применяются к нулевому количеству или более полным кодированным снимкам, как определено синтаксическим элементом, найденным в заголовке каждого снимка.
[0054] Набор параметров видео (VPS) включает в себя зависимость декодирования или информацию для построения набора опорных снимков слоев улучшения. VPS обеспечивает общую перспективу или представление масштабируемой последовательности, включая типы предоставляемых рабочих точек, профиль, ярус и уровень рабочих точек, и некоторые другие высокоуровневые свойства битового потока, которые можно использовать в качестве основы для согласования сеанса и выбора контента (содержимого) и т.д.
[0055] Флаг - это переменная или однобитовый синтаксический элемент, который может принимать одно из двух возможных значений: 0 и 1. Единица доступа (AU) является набором из одного или более кодированных снимков, связанных с одним и тем же временем отображения (например, одним и тем же порядковым номером снимка) для вывода из буфера декодированных снимков (DPB) (например, для отображения пользователю). Разделитель единицы доступа (AUD) - это указатель или структура данных, используемая для обозначения начала AU или границы между AU. Декодированная видеопоследовательность - это последовательность снимков, которые были восстановлены декодером при подготовке к отображению пользователю.
[0056] Кодированная видеопоследовательность (CVS) является последовательность единиц доступа (AU), которая включает в себя в порядке декодирования AU начала кодированной видеопоследовательности (CVSS), за которой следует нулевое количество или более AU, не являющихся AU CVSS, включая все последующие AU влоть до любых последующих AU, которые являются AU CVSS, но не включа их. AU CVSS является AU, в котором имеется единица предсказания (PU) для каждого слоя, заданного набором параметров видео (VPS), и кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS). В одном варианте осуществления каждый снимок находится в пределах AU. PU является набором единиц слоя сетевой абстракции (NAL), которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно один кодированный снимок.
[0057] Снимок точки интра-произвольного доступа (IRAP) является кодированным снимком, для которого все единицы NAL VCL имеют одинаковое значение nal_unit_type в диапазоне от IDR_W_RADL до CRA_NUT включительно. Процесс декодирования кодированной видеопоследовательности всегда начинается с IRAP. Снимки IRAP обеспечивают точку произвольного доступа (RAP).
[0058] Снимок постепенного обновления декодирования (GDR) является снимком, для которого каждая единица NAL VCL имеет nal_unit_type, равный GDR_NUT. Снимки (GDR) также могут рассматриваться как снимки IRAP. Снимок GDR называется снимком начала CVS (CVSS).
[0059] Порядковый номер снимка (POC) - это переменная, которая связана с каждым снимком, однозначно идентифицирует связанный снимок среди всех снимков в CLVS и, когда связанный снимок должен быть выведен из DPB, указывает позицию связанного снимка в порядке вывода относительно позиций порядка вывода других снимков в той же CLVS, которые должны выводиться из DPB.
[0060] Здесь используются следующие сокращения: Единица доступа (AU), Единица дерева кодирования (CTB), Единица дерева кодирования (CTU), единица кодирования (CU), Кодированная послойно видеопоследовательность (CLVS), Начало кодированной послойно видеопоследовательности (CLVSS), Кодированная видеопоследовательность (CVS), Начало кодированной видеопоследовательности (CVSS), Объединенная группа экспертов по видео (JVET), Набор клеток с ограничением движения (MCTS), Максимальный единица переноса (MTU), Уровень сетевой абстракции (NAL), Набор выходных слоев (OLS), Порядковый номер снимка (POC), набор параметров снимка (PPS), точка произвольного доступа (RAP), полезная нагрузка необработанной байтовой последовательности (RBSP), набор параметров последовательности (SPS), набор параметров видео (VPS), универсальное видеокодирование (VVC) и рабочий проект (WD).
[0061] Фиг.1 является блок-схемой примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования обычно отражает процесс кодирования, чтобы декодер мог последовательно восстанавливать видеосигнал.
[0062] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например видеокамерой, и закодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудио составляющую, так и видео составляющую. Видео составляющая содержит серию кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или дискретными отсчетами яркости), и цвета, который упоминается как компоненты цветности (или дискретные отсчеты цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[0063] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единицы дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единицы CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.
[0064] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться интер-предсказание и/или интра-предсказание. Интер-предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут обращаться к опорному кадру. Механизмы сопоставления с образцом могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в нескольких кадрах. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, интер- предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[0065] Интра-предсказание кодирует блоки в общем кадре. Интра-предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зеленого цвета на части дерева имеет тенденцию располагаться рядом с аналогичными участками зеленого цвета. Интра-предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим прямого течения (Direct Current (DC)). Направленные режимы указывают, что текущий блок подобен/совпадает с дискретными отсчетами соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскости) может быть интерполирована на основе соседних блоков на краях строки. Фактически планарный режим указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок подобен/совпадает со средним значением, связанным с дискретными отсчетами всех соседних блоков, связанных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки интра-предсказания могут представлять блоки изображения как различные значения режима реляционного предсказания вместо фактических значений. Кроме того, блоки интер-предсказания могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые отличия хранятся в остаточных блоках. К остаточным блокам могут применяться преобразования для дальнейшего сжатия файла.
[0066] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Обсуждаемое выше предсказание на основе блоков может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на основе блоков может кодировать блок, а затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры с адаптивным смещением дискретного отсчета (SAO) к блокам/кадрам. Эти фильтры уменьшают такие артефакты блокировки, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.
[0067] После того, как видеосигнал разделен, сжат и отфильтрован, полученные данные кодируются в битовом потоке на этапе 109. Битовый поток включает в себя данные, описанные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разбиения, данные предсказания, остаточные блоки и различные флаги, предоставляющие инструкции кодирования для декодера. Битовый поток может храниться в памяти для передачи декодеру по запросу. Битовый поток также может быть широковещательным и/или многоадресным для множества декодеров. Создание битового потока - это итеративный процесс. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на Фиг.1 представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса видеокодирования конкретным порядком.
[0068] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разбиений для кадров на этапе 111. Разбиение должно соответствовать результатам разбиения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многократный выбор вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении(ях). Для сигнализации конкретного выбора может использоваться большое количество бинарных элементов (бинов). В данном контексте бинарный элемент - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые варианты, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых вариантов (например, один бинарный элемент для двух вариантов, два бинарных элемента для трех-четырех вариантов и т.д.) Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого поднабора допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых вариантов аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.
[0069] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для генерации остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разбиением. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, сгенерированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разбиения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.
[0070] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[0071] Фиг.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 буфера декодированных снимков. Теперь будут описаны эти компоненты.
[0072] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в единицы кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) красной цветоразности (Cr) и блок(-и) синей цветоразности (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки интра-режима, компонент 227 анализа управления фильтрами и компонент 221 оценки движения для сжатия.
[0073] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разбиением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Данные управления также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[0074] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для интер-предсказания. Кадр или сегмент разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.
[0075] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими показателями разности. HEVC использует несколько закодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирован как единица предсказания (PU), содержащая данные предсказания, и/или единица преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PU и TU, используя анализ скорости к искажению как часть процесса оптимизации скорости к искажению. Например, компонент 221 оценки движения может определять несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорости к искажению. Наилучшие характеристики соотношения скорости к искажению уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).
[0076] В некоторых примерах система 200 кодека может вычислять значения для положений суб-целочисленных пикселей опорных снимков, сохраненных в компоненте 223 буфера декодированных снимков. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного снимка. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с интер-кодированием посредством сравнения положения PU с положением блока предсказания опорного снимка. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для форматирования заголовка и компонент 231 CABAC для кодирования и движения в компонент 219 компенсации движения.
[0077] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок посредством вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.
[0078] Разделенный видеосигнал 201 также отправляется компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы интер-предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки интра-режима определяет режим интра-предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки интра-режима выбирает соответствующий режим интра-предсказания для кодирования текущего блока из множества проверенных режимов интра-предсказания. Выбранные режимы интра-предсказания затем направляются в компонент 231 форматирования заголовка и CABAC для кодирования.
[0079] Например, компонент 215 оценки интра-режима вычисляет значения скорости к искажению, используя анализ скорости к искажению для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скорости к искажению среди тестированных режимов. Анализ соотношения скорости к искажению обычно определяет величину искажения (или ошибки) между закодированным блоком и исходным не кодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания закодированного блока. Компонент 215 оценки интра-режима вычисляет отношения скорости к искажению для различных кодированных блоков, чтобы определить, какой режим интра-предсказания показывает наилучшее значение скорости к искажению для блока. Кроме того, компонент 215 оценки интра-режима может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорости к искажению (RDO).
[0080] Компонент 217 интра-предсказания может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки интра-режима, когда он реализован в кодере, или считывать остаточный блок из битового потока, когда реализован в декодере. Остаточный блок включает в себя разность в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут работать как с компонентами яркости, так и с компонентами цветности.
[0081] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения коэффициентов остаточного преобразования. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение масштабного коэффициента к остаточной информации, так что разная частотная информация квантуется с разной степенью детализации, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения битовой скорости (битрейта). Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством регулировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке.
[0082] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[0083] Компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 интра-предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на Фиг.2, компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.
[0084] При работе в качестве кодера отфильтрованный блок восстановленного изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных снимков для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных снимков сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей как часть выходного видеосигнала. Компонент 223 буфера декодированных снимков может быть любым устройством памяти, способным хранить блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[0085] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.
[0086] Фиг.3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Разделенный видеосигнал 301 затем сжимается и кодируется в битовый поток компонентами кодера 300.
[0087] В частности, разделенный видеосигнал 301 пересылается в компонент 317 интра-предсказания для интра-предсказания. Компонент 317 интра-предсказания может быть по существу аналогичным компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для интер-предсказания на основе опорных блоков в компоненте 323 буфера декодированных снимков. Компонент 321 компенсации движения может быть по существу аналогичным компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 интра-предсказания и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 масштабирования и квантования преобразования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе со связанными данными управления) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[0088] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Контурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтрами и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как обсуждалось в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных снимков для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных снимков может быть по существу аналогичен компоненту 223 буфера декодированных снимков.
[0089] Фиг.4 - это блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 рабочего способа 100. способа 400. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[0090] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы предоставить контекст для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[0091] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 интра-предсказания для восстановления в блоки изображения на основе операций интра-предсказания. Компонент 417 интра-предсказания может быть аналогичен компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. В частности, компонент 417 интра-предсказания использует режимы предсказания, чтобы найти опорный блок в кадре, и применяет остаточный блок к результату для восстановления блоков изображения с интра-предсказанием. Восстановленные блоки изображения с интра-предсказанием и/или остаточные блоки и соответствующие данные интер-предсказания пересылаются в компонент 423 буфера декодированных снимков через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных снимков и компонент 225 внутриконтурных фильтров соответственно. Компонент 425 внутриконтурных фильтров фильтрует блоки восстановленных изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных снимков. Восстановленные блоки изображения из компонента 423 буфера декодированных снимков пересылаются в компонент 421 компенсации движения для интер-предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерации блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть отправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных снимков. Компонент 423 буфера декодированных снимков продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть преобразованы в кадры через информацию о разбиении. Такие кадры также можно размещать последовательно. Последовательность выводится на дисплей как восстановленный выходной видеосигнал.
[0092] Принимая во внимание вышеизложенное, методики сжатия видео выполняют пространственное (внутри снимка (intra_picture)) предсказание и/или временное (между снимками (inter-picture)) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для видеокодирования на основе блоков видеосегмент (то есть видеоснимок или часть видеоснимка) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в интра-кодированном (I) сегменте снимка кодируются с использованием пространственного предсказания относительно опорных дискретных отсчетов в соседних блоках того же снимка. Видеоблоки в интер-кодированном (P или B) сегменте снимка могут использовать пространственное предсказание относительно опорных дискретных отсчетов в соседних блоках в том же снимке или временное предсказание относительно опорных дискретных отсчетов в других опорных снимках. Снимки могут упоминаться как кадры, а опорные изображения могут упоминаться как опорные кадры.
[0093] Пространственное или временное предсказание приводит к блоку предсказания для блока, который должен быть кодирован. Остаточные данные представляют собой разность в пикселях между исходным кодируемым блоком и блоком предсказания. Интер-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных дискретных отсчетов, формирующих блок предсказания, и остаточными данными, указывающими разность между кодированным блоком и блоком предсказания. Интра-кодированный/декодированный блок кодируется согласно режиму интра-кодирования/декодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, в результате чего получаются остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть просканированы для создания одномерного вектора коэффициентов преобразования, и может быть применено энтропийное кодирование для достижения еще большего сжатия.
[0094] Сжатие изображений и видео быстро развивалось, что привело к появлению различных стандартов кодирования. К таким стандартам видеокодирования относятся ITU-T H.261, Международная организация по стандартизации/Международная электротехническая комиссия (ISO/IEC) MPEG-1 Part 2, ITU-T H.262 или ISO/IEC MPEG-2 Part 2, ITU-T H.263, ISO/IEC MPEG-4 Part 2, Усовершенствованное видеокодирование (AVC), также известное как ITU-T H.264 или ISO/IEC MPEG-4 Part 10, и Высокоэффективное видеокодирование (HEVC), также известное как ITU-T H.265 или MPEG-H Part 2. AVC включает в себя такие расширения, как Масштабируемое видеокодирование (SVC), Многоракурсное видеокодирование (MVC) и Многоракурсное видеокодирование плюс глубина (MVC+D) и 3D AVC (3D-AVC). HEVC включает в себя такие расширения, как Масштабируемое HEVC (SHVC), Многоракурсное HEVC (MV-HEVC) и 3D HEVC (3D-HEVC).
[0095] Существует также новый стандарт видеокодирования под названием Универсальное видеокодирование (VVC), который разрабатывается объединенной группой экспертов по видео (JVET) ITU-T и ISO/IEC. Хотя стандарт VVC имеет несколько рабочих проектов, в частности, один рабочий проект (WD) VVC, здесь упоминается именно B. Bross, J. Chen и S. Liu, «Versatile Video Coding (Draft 5)» ("Универсальное видеокодирование (5-ая проектная версия), JVET-N1001-v3, 13-е собрание JVET, 27 марта 2019 г. (VVC Draft 5).
[0096] Многослойное видеокодирование также называют масштабируемым видеокодированием или видеокодированием с масштабируемостью. Масштабируемость в видеокодировании обычно поддерживается за счет использования методик многослойного кодирования. Многослойный битовый поток содержит базовый слой (BL) и один или более слоев расширения (EL). Пример масштабируемости включает в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (SNR), масштабируемость с несколькими представлениями и т.д. Когда используется технология многослойного кодирования, снимок или его часть могут быть кодированы (1) без использования опорного снимка, т.е. с использованием интра-предсказания; (2) посредством обращения к опорным снимкам, которые находятся на том же слое, т.е. с использованием интер-предсказания; или (3) посредством обращения к опорным снимкам, которые находятся на другом(их) слое(ях), т.е. с использованием межслойного предсказания. Опорный снимок, используемое для межслойного предсказания текущего снимка, называется межслойным опорным снимком (ILRP).
[0097] Фиг.5 является принципиальной схемой, иллюстрирующей пример предсказания 500 на основе слоев, например, как оно выполняется для определения векторов движения (MV) на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или компоненте 421 компенсации движения. Предсказание 500 на основе слоев совместимо с однонаправленным интер-предсказанием и/или двунаправленным интер-предсказанием, но также выполняется между снимками в разных слоях.
[0098] Предсказание 500 на основе слоев применяется между снимками 511, 513 и снимками 515, 517 в разных слоях. В показанном примере снимки 511 и 513 являются частью слоя N+1 532, а снимки 515, 516, 517 и 518 являются частью слоя N 531. Слой, такой как слой N 531 и/или слой N+1 532, является группой снимков, которые все связаны с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности, так далее. В показанном примере слой N+1 532 связан с большим размером изображения, чем слой N 531. Соответственно, снимки 511 и 513 в слое 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). Идентификатор слоя - это элемент данных, который связан со снимком и указывает, что снимок является частью указанного слоя. Соответственно, каждый снимок 511, 513 и 515-518 может быть связано с соответствующим идентификатором слоя, чтобы указать, какой слой N+1 532 или слой N 531 включает в себя соответствующий снимок.
[0099] Снимки 511, 513 и 515-518 в разных слоях 531-532 приспособлены для отображения в альтернативном варианте. Таким образом, снимки 511, 513 и 515-518 в разных слоях 531-532 могут совместно использовать один и тот же временной идентификатор (ID) и могут быть включены в один и тот же AU. Используемый здесь термин AU является набором из одного или более кодированных снимков, связанных с одним и тем же временем отображения для вывода из DPB. Например, декодер может декодировать и отображать снимок 515 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать снимок 511 в текущее время отображения, если требуется больший снимок. Таким образом, снимки 511 и 513 на более высоком слое N+1 532 содержат по существу те же данные изображения, что и соответствующие снимки 515 и 517 на более низком слое N 531 (несмотря на разницу в размере снимка). В частности, снимок 511 содержит по существу те же данные изображения, что и снимок 515, снимок 513 содержит по существу те же данные изображения, что и снимок 517, и т.д.
[00100] Снимки 511, 513 и 515-518 могут быть кодированы посредством ссылки на другие снимки 511, 513-518 в том же слое N 531 или N+1 532. Кодирование снимка со ссылкой на другой снимок на том же слое приводит к интер-предсказанию 523, которое является совместимым однонаправленным интер-предсказанием и/или двунаправленным интер-предсказанием. Интер-предсказание 523 изображено сплошными стрелками. Например, снимок 516 может быть кодирован с использованием интер-предсказания 523 с использованием одного или двух снимков 515 и/или 517 в слое N+1 532 в качестве опорной ссылки, где один снимок используется для однонаправленного интер-предсказания и/или два снимка используются для двунаправленного интер-предсказания. Когда снимок используется в качестве опорного для другого снимка в том же слое при выполнении интер-предсказания 523, этот снимок может называться опорным снимком. Например, снимок 511 может быть опорным снимком, используемым для кодирования снимка 513 в соответствии с интер-предсказанием 523. Интер-предсказание 523 также может называться внутрислойным предсказанием в многослойном контексте. Таким образом, интер-предсказание 523 является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, которые отличаются от текущего снимка, где опорный снимок и текущий снимок находятся в одном слое.
[00101] Снимки 511, 513 и 515-518 также могут быть кодированы посредством ссылки на другие снимки 511, 513 и 515-518 в других слоях. Этот процесс известен как межслойное предсказание 521 и изображен пунктирными стрелками. Межслойное предсказание 521 является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, где текущий снимок и опорный снимок находятся в разных слоях и, следовательно, имеют разные идентификаторы слоя. Например, снимок в нижнем слое N 531 может использоваться в качестве опорного снимка для кодирования соответствующего снимка на более высоком слое N+1 532. В качестве конкретного примера снимок 511 может быть кодирован со ссылкой на снимок 515 в соответствии с межслойным предсказанием 521. В таком случае снимок 515 используется как межслойный опорный снимок. Межслойный опорный снимок является опорным снимком, используемым для межслойного предсказания 521. В большинстве случаев межслойное предсказание 521 ограничено таким образом, что текущий снимок, такое как снимок 511, может использовать только межслойный опорный снимок (снимки), которые включены в один и тот же AU и находятся на более низком слое, например фото 515. Когда доступно множество слоев (например, более двух), межслойное предсказание 521 может кодировать/декодировать текущий снимок на основе множества межслойных опорных снимков на более низких слоях, чем текущий снимок.
[00102] Видеокодер может использовать предсказание 500 на основе слоев для кодирования снимков 511, 513 и 515-518 посредством множества различных комбинаций и/или перестановок интер-предсказания 523 и межслойного предсказания 521. Например, снимок 515 может быть кодирован в соответствии с интра- предсказанием. Затем снимки 516-518 могут быть кодированы в соответствии с интер-предсказанием 523 с использованием снимка 515 в качестве опорного снимка. Кроме того, снимок 511 может быть кодирован в соответствии с межслойным предсказанием 521 с использованием снимка 515 в качестве межслойного опорного снимка. Затем снимок 513 может быть кодирован в соответствии с интер-предсказанием 523 с использованием снимка 511 в качестве опорного снимка. Таким образом, опорный снимок может служить как однослойным опорным снимком, так и межслойным опорным снимком для различных механизмов кодирования. Посредством кодирования снимков более высокого слоя N+1 532 на основе снимков более низкого слоя N 531, более высокий слой N+1 532 может избежать использования интра-предсказания, которое имеет гораздо более низкую эффективность кодирования, чем интер-предсказание 523 и межслойное предсказание 521. Как таковая, низкая эффективность кодирования интра-предсказания может быть ограничена снимками самого маленького/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Снимки, используемые в качестве опорных снимков и/или межслойных опорных снимков, могут быть указаны в записях списка(ов) опорных снимков, содержащихся в структуре списка опорных снимков.
[00103] Каждый AU 506 на Фиг.5 может содержать одно или несколько снимков. Например, один AU 506 может содержать снимки 511 и 515. Другой AU 506 может содержать только снимок 516. Действительно, каждый AU 506 является набором из одного или более кодированных снимков, связанных с одним и тем же временем отображения (например, с одним и тем же временным идентификатором) для вывода из буфера декодированных снимков (DPB) (например, для отображения пользователю). Каждый ограничитель единицы доступа (AUD) 508 является указателем или структурой данных, используемой для указания начала AU (например, AU 506) или границы между AU.
[00104] В одном варианте осуществления AU 506, содержащий снимок в каждом слое, называется полной AU. Примером полной AU является AU 506, содержащий снимки 511 и 515, или AU 506, содержащий снимки 513 и 517. В одном варианте осуществления AU 506, не содержащий снимок в каждом слое, называется неполной AU. Примером неполного AU является AU 506, содержащий снимок 516, или AU 506, содержащий снимок 518. Использование как полных, так и неполных AU в CLVS 540 позволяет разным слоям иметь разную битовую скорость. Например, слой 531 имеет четыре снимка 515-518 по сравнению с двумя снимками 511, 513 слоя 532. Таким образом, слой 531 имеет более высокую битовую скорость по сравнению со слоем 532. В практических вариантах применения в CLVS 540 может быть включено разное количество слоев, и разные слои могут иметь разное количество снимков для поддержки разных битовых скоростей.
[00105] В одном варианте осуществления AU 506 в начале кодированной послойно видеопоследовательности (CLVS) 540 называется AU начала кодированной видеопоследовательности (CVSS). То есть начальный или первый AU 506 в CVS 540 является AU CVSS. В одном варианте осуществления снимки 511, 515 в каждом слое 531, 532 AU 506, обозначенном как AU CVSS, представляют собой снимки начала кодированной послойно видеопоследовательности (CLVSS). То есть AU CVSS содержит снимок CLVSS (например, снимок 515) в одном слое (например, слое N 531) и другой снимок CLVSS (например, снимок 511) в другом слое (например, слое N+1 532). Снимок CLVSS является, например, снимком точки интра-произвольного доступа (IRAP), снимком постепенного обновления декодирования, снимком чистого произвольного доступа (CRA), снимком мгновенного обновления декодера (IDR), снимком доступа с разрывом связи (BLA), или другой тип снимка точки произвольного доступа.
[00106] В одном варианте осуществления некоторые из AU 506 (за исключением AU CVSS) могут содержать снимок IRAP (например, снимок 517) в одном слое (например, слое N 531) и снимок не-IRAP (например, снимок 513) в другом слое (например, слой N+1 532). То есть один и тот же AU содержит снимки как IRAP, так и не-IRAP в разных слоях. В то время как один из AU 506 на Фиг.5 показан, содержащим один снимок IRAP и один снимок не-IRAP, в практических вариантах применения в AU может быть включено различное количество снимков IRAP и не-IRAP, когда AU содержит более двух слоев. Снимки IRAP более подробно обсуждаются ниже.
[00107] Предыдущие семейства видеокодирования H.26x обеспечивали поддержку масштабируемости в отдельном(ых) профиле(ях) от профиля(ов) для однослойного кодирования. Масштабируемое видеокодирование (SVC) - это масштабируемое расширение AVC/H.264, обеспечивающее поддержку пространственной, временной и качественной масштабируемости. Для SVC в каждом макроблоке (MB) в снимках EL сигнализируется флаг, чтобы указать, предсказан ли MB EL с использованием совмещенного блока из нижнего слоя. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации H.264/AVC в своей конструкции. Синтаксис макроблока SVC EL и процесс декодирования отличаются от синтаксиса и процесса декодирования H.264/AVC.
[00108] Масштабируемый HEVC (SHVC) - это расширение стандарта HEVC/H.265, которое обеспечивает поддержку пространственной масштабируемости и масштабируемости качества, многоракурсный HEVC (MV-HEVC) - это расширение HEVC/H.265, которое обеспечивает поддержку многоракурсного масштабирования, а 3D HEVC (3D-HEVC) - это расширение HEVC/H.264, которое обеспечивает поддержку трехмерного (3D) видеокодирования, которое является более продвинутым и более эффективным, чем MV-HEVC. Обратите внимание, что временная масштабируемость включена как неотъемлемая часть однослойного кодека HEVC. В конструкции многослойного расширения HEVC используется идея, согласно которой декодированные снимки, используемые для межслойного предсказания, поступают только из одного и того же единицы доступа (AU (access unit)) и обрабатываются как долгосрочные опорные снимки (LTRP), и им назначаются опорные индексы в списке(-ах) опорных снимков вместе с другими временными опорными снимками в текущем слое. Межслойное предсказание (ILP) достигается в слое единицы предсказания (PU (prediction unit)) посредством установки значения опорного индекса для ссылки на межслойный опорный снимок(-ки) в списке(-ах) опорных снимков.
[00109] Примечательно, что функции повторной дискретизации опорного снимка и пространственного масштабирования требуют повторной дискретизации опорного снимка или его части. Повторная дискретизация опорного снимка (RPR) может быть реализована либо на уровне снимка, либо на уровне блока кодирования. Однако, когда RPR упоминается как функция кодирования, это функция для однослойного кодирования. Даже в этом случае возможно или даже предпочтительно с точки зрения разработки кодека использовать один и тот же фильтр повторной дискретизации как для функции RPR однослойного кодирования, так и для функции пространственной масштабируемости для многослойного кодирования.
[00110] Последняя версия VVC поддерживает многослойное видеокодирование. Битовый поток VVC может включать в себя множество слоев. Все слои могут быть независимыми друг от друга, т.е. каждый слой кодируется без использования межслойного предсказания (ILP). В этом случае слои также называются слоями одновременной передачи. Также возможно, что некоторые слои кодируются с использованием ILP. Флаг в VPS используется для указания того, являются ли слои одновременными или некоторые слои используют ILP. Когда некоторые слои используют ILP, отношения зависимости слоев между слоями также сигнализируются в VPS.
[00111] В отличие от SHVC и MV-HEVC, последний проект VVC не определяет OLS. OLS - это набор слоев, для которых один или более слоев указаны в качестве выходных слоев. Выходной слой - это слой набора выходных слоев, который выводится.
[00112] В последней проектной версии VVC, когда слои являются слоями одновременной передачи, указано, что для декодирования и вывода может быть выбран только один слой. В последнем черновике VVC, когда некоторые слои используют ILP, все слои в битовом потоке указываются для декодирования, но только определенные слои указываются как выходные слои. Выходные слои могут быть указаны как 1) только самый высокий слой, 2) все слои или 3) самый высокий слой плюс набор указанных нижних слоев.
[00113] Фиг.6 является представлением 600 взаимосвязи между снимком 602 точки интра-произвольного доступа (IRAP) относительно начальных снимков 604 и замыкающих снимков 606 в порядке 608 декодирования и порядке 610 представления (также известном как порядок вывода). В одном варианте осуществления снимок 602 IRAP упоминается как снимок с чистым произвольным доступом (CRA) или как снимок мгновенного обновления декодера (IDR) со снимком, декодируемым с произвольным доступом (RADL). В HEVC снимки IDR, снимки CRA и снимки доступа с разрывом связи (BLA) считаются снимками 602 IRAP. Для VVC во время 12-го собрания JVET в октябре 2018 года было решено использовать снимки IDR и CRA в качестве снимков IRAP. В одном варианте осуществления снимки с доступом доступа с разрывом связи (BLA) и постепенным обновлением декодера (GDR) также могут рассматриваться как снимки IRAP. Процесс декодирования кодированной видеопоследовательности всегда начинается с IRAP. Снимки IRAP обеспечивают точку произвольного доступа (RAP).
[00114] Как показано на Фиг.6 начальные снимки 604 (например, снимки 2 и 3) следуют за снимком 602 IRAP в порядке 608 декодирования, но предшествуют снимку 602 IRAP в порядке 610 представления. Замыкающий снимок 606 следует за снимком 602 IRAP как в порядке 608 декодирования, так и в порядке 610 представления. Хотя два начальных снимка 604 и один замыкающий снимок 606 изображены на Фиг.6, специалисты в данной области техники поймут, что больше или меньше начальных снимков 604 и/или замыкающих снимков 606 может присутствовать в порядке 608 декодирования и порядке 610 представления в практических вариантах применения.
[00115] Начальные снимки 604 на Фиг.6, были разделены на два типа, а именно: начальный с пропуском произвольного доступа (RASL) и RADL. Когда декодирование начинается со снимка 602 IRAP (например, снимка 1), снимок RADL (например, снимок 3) может быть правильно декодирован; однако снимок RASL (например, снимок 2) не может быть правильно декодирован. Таким образом, снимок RASL отбрасывается. В свете различия между снимками RADL и RASL тип начального снимка 604, связанный со снимком 602 IRAP, должен быть идентифицирован как RADL или RASL для эффективного и правильного кодирования. В HEVC, когда присутствуют снимки RASL и RADL, ограничено, что для снимков RASL и RADL, которые связаны с одним и тем же снимком 602 IRAP, снимки RASL должны предшествовать снимкам RADL в порядке 610 представления.
[00116] Снимок 602 IRAP обеспечивает следующие две важные функции/преимущества. Во-первых, наличие снимков 602 IRAP указывает, что процесс декодирования может начинаться с этого снимка. Эта функциональность обеспечивает функцию произвольного доступа, при которой процесс декодирования начинается в этой позиции в битовом потоке, не обязательно в начале битового потока, пока в этой позиции присутствует снимок 602 IRAP. Во-вторых, наличие снимка 602 IRAP обновляет процесс декодирования, так что кодированный снимок, начинающийся со снимка 602 IRAP, исключая снимок RASL, кодируется без какой-либо ссылки на предыдущие снимки. Наличие снимка 602 IRAP в битовом потоке, следовательно, предотвратило бы распространение любой ошибки, которая может произойти во время декодирования кодированных снимков до снимка 602 IRAP, на снимок 602 IRAP и те снимки, которые следуют за снимком 602 IRAP в порядке 608 декодирования.
[00117] Хотя снимки 602 IRAP обеспечивают важные функциональные возможности, они снижают эффективность сжатия. Наличие снимка 602 IRAP вызывает всплеск битовой скорости. Это снижение эффективности сжатия связано с двумя причинами. Во-первых, поскольку снимок 602 IRAP является снимком, предсказанным с помощью интра-предсказания, сам снимок потребует относительно большего количества битов для представления по сравнению с другими снимками (например, начальными снимками 604, замыкающими снимками 606), которые являются снимками с интер-предсказанием. Во-вторых, поскольку наличие снимка 602 IRAP нарушает временное предсказание (это потому, что декодер обновляет процесс декодирования, в котором одним из действий процесса декодирования является удаление предыдущих опорных снимков в буфере декодированных снимков (DPB)) снимок 602 IRAP приводит к тому, что кодирование снимков, следующих за снимком 602 IRAP в порядке 608 декодирования, становится менее эффективным (то есть для представления требуется больше битов), потому что они имеют меньше опорных снимков для их кодирования с интер-предсказанием.
[00118] Среди типов снимков, которые считаются снимками 602 IRAP, снимок IDR в HEVC имеет другую сигнализацию и другое выведение по сравнению с другими типами снимков. Некоторые отличия заключаются в следующем.
[00119] Для сигнализации и выведения значения порядкового номера снимка (POC) снимка IDR часть старшего значащего бита (MSB) POC не выводится из предыдущего ключевого снимка, а просто устанавливается равной 0.
[00120] Что касается информации сигнализации, необходимой для управления опорным снимком, то заголовок сегмента снимка IDR не содержит информации, которая должна быть сигнализирована для облегчения управления опорным снимком. Для других типов снимков (например, CRA, Замыкающих (Trailing), с временным доступом к подслою (TSA) и т.д.) необходима такая информация, как набор опорных снимков (RPS), описанная ниже, или другие формы подобной информации (например, списки опорных снимков) для процесса маркировки опорных снимков (т.е. процесса определения статуса опорных снимков в буфере декодированных снимков (DPB), либо используемых для ссылки, либо неиспользуемых для ссылки). Однако для снимка IDR такая информация не должна передаваться, поскольку наличие IDR указывает на то, что процесс декодирования должен просто пометить все опорные снимки в DPB как неиспользуемые в качестве опорных.
[00121] В HEVC и VVC снимкам IRAP и начальным снимкам присваиваются разные типы единиц NAL (NUT), чтобы их можно было легко идентифицировать приложениями системного слоя. Например, средству монтажа видео необходимо понимать типы кодированных снимков без необходимости понимать слишком много деталей синтаксического элемента в кодированном битовом потоке, в частности, для идентификации снимков IRAP из снимков не-IRAP, и для идентификации начальных снимков, включая определение снимков RASL и RADL, из замыкающих снимков. Замыкающие снимки - это снимки, которые связаны со снимком IRAP и следуют за снимком IRAP в порядке вывода. Снимок, связанный с конкретным снимком IRAP, следует за конкретным снимком IRAP в порядке декодирования и предшествует любому другому снимку IRAP в порядке декодирования. Для этого таким приложениям может помочь присвоение IRAP и начальным изображениям собственного типа единицы NAL.
[00122] В HEVC каждому снимку присвоено значение POC, обозначаемое как PicOrderCntVal. POC имеет три основных применения: для уникальной идентификации снимков, для указания положения вывода относительно других снимков в том же CVS и для выполнения масштабирования вектора движения в процессе декодирования слоя видеокодирования нижнего слоя (VCL). Все снимки в одном CVS имеют уникальное значение POC. Снимки из разных CVS могут иметь одно и то же значение POC, но снимки по-прежнему могут быть однозначно идентифицированы, поскольку нет возможности смешивать снимки из одного CVS с любым снимком из другого CVS. В CVS допускаются пропуски в значениях POC. То есть разница значений POC между двумя последовательными в порядке вывода снимками может отличаться более чем на единицу (и фактически величина, на которую могут различаться значения POC для последовательных снимков, может варьироваться произвольно).
[00123] В HEVC значение POC снимка сигнализируется с использованием кодового слова в заголовке сегмента. Диапазон допустимых значений POC составляет от -231 до 231-1, поэтому для сохранения битов в заголовке сегмента сигнализируются только младшие значащие биты значения POC (POC LSB). Количество битов, используемых для POC LSB, может составлять от 4 до 16 и сигнализируется в SPS. Остальные биты являются старшими битами значения POC (POC MSB). Поскольку в заголовке сегмента сообщается только POC LSB, POC MSB для текущего снимка выводится из предыдущего снимка, называемого prevTid0Pic. Чтобы вывод POC работал одинаково, даже когда снимки удалены, prevTid0Pic устанавливается в ближайший предыдущий снимок временного слоя 0, который не является снимком RASL, снимком RADL или не опорным снимком подслоя. Декодер выводит значение POC MSB посредством сравнения значения POC текущего снимка со значением POC снимка prevTid0Pic.
[00124] К сожалению, существующие схемы кодирования имеют недостатки. Например, в SHVC и MV-HEVC смешанные снимки IRAP и не-IRAP могут быть включены в одну и ту же единицу доступа (например, снимок 511 и 515 в AU 506 на Фиг.5), но конструкция очень сложна. Действительно, общий процесс декодирования для этой конструкции указан в SHVC и MV-HEVC с использованием нескольких страниц текста в пункте F.8.1 последнего стандарта HEVC. В тексте используется множество глобальных флагов/переменных/списков, включая NoClrasOutputFlag, LayerInitializedFlag, LayerResetFlag, FirstPicInLayerDecodedFlag, NumPredictedLayers, IdPredictedLayer, IdDirectRefLayer, NumDirectRefLayers, NumActiveRefLayerPics, NumActiveRefLayerPics0, NumActiveRef1 и т.д. Многие другие места в SHVC и MV-HEVC, которые обеспечивают поддержку смешанных снимков IRAP и не-IRAP в единице доступа, также сложны. Это включает в себя процесс выведения POC.
[00125] В данном документе раскрыты методики, которые упрощают кодирование за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS). Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[00126] На Фиг.7 показан битовый видеопоток 750, приспособленный для реализации методики 700 постепенного обновления декодирования (GDR). В данном контексте битовый видеопоток 750 также может называться кодированным битовым видеопотоком, битовым потоком или разновидностью этого. Как показано на Фиг.7, битовый поток 750 содержит набор 752 параметров последовательности (SPS), набор 754 параметров снимка (PPS), заголовок 756 сегмента и данные 758 снимка.
[00127] SPS 752 содержит данные, общие для всех снимков в последовательности снимков (SOP). Напротив, PPS 754 содержит данные, общие для всего снимка. Заголовок 756 сегмента содержит информацию о текущем сегменте, такую как, например, тип сегмента, какой из опорных снимков будет использоваться и т.д. SPS 752 и PPS 754 в общем случае могут называться набором параметров. SPS 752, PPS 754 и заголовок 756 сегмента являются типами единиц слоя сетевой абстракции (NAL). Единица NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на единицы слоя видеокодирования (VCL) и единицы NAL не-VCL. Единицы NAL VCL содержат данные, которые представляют значения дискретных отсчетов в видеоснимках, а единицы NAL не-VCL содержат любую связанную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц NAL VCL) и дополнительная информация расширения (информация о времени и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений дискретных отсчетов в видеоснимках). Специалисты в данной области техники поймут, что битовый поток 750 может содержать другие параметры и информацию в практических вариантах применения.
[00128] Данные 758 изображения на Фиг.7 содержит данные, связанные с кодируемыми или декодируемыми изображениями или видео. Данные 758 изображения могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 750. В одном варианте осуществления данные 758 изображения содержат CVS 708 (или CLVS), содержащие снимок 702 GDR, один или более замыкающих снимков 704 и снимок 706 точки восстановления. В одном варианте осуществления снимок 702 GDR упоминается как снимок начала CVS (CVSS). CVS 708 является кодированной видеопоследовательностью для каждой кодированной послойно видеопоследовательности (CLVS) в битовом видеопотоке 750. Примечательно, что CVS и CLVS одинаковы, когда битовый видеопоток включает в себя один слой. CVS и CLVS отличаются только тогда, когда битовый видеопоток 750 включает в себя множество слоев. В одном варианте осуществления замыкающие снимки 704 могут рассматриваться как форма снимка GDR, поскольку они предшествуют снимку 706 точки восстановления в периоде GDR.
[00129] В одном варианте осуществления снимок 702 GDR, замыкающие снимки 704 и снимок 706 точки восстановления могут задавать период GDR в CVS 708. В одном варианте осуществления порядок декодирования начинается со снимка 702 GDR, продолжается замыкающими снимками 704, а затем переходит к снимку 706 восстановления.
[00130] CVS 708 является серией снимков (или их частей), начинающейся со снимка 702 GDR, и включает в себя все снимки (или их части) до, но не включая, следующего снимка GDR или до конца битового потока 750. Период GDR является серией снимков, начинающейся со снимка 702 GDR, и включает в себя все снимки до снимка 706 точки восстановления включительно. Процесс декодирования для CVS 708 всегда начинается со снимка 702 GDR.
[00131] Как показано на Фиг.7, методика 700 GDR или принцип работает над серией снимков, начиная со снимка 702 GDR и заканчивая снимком 706 точки восстановления. Снимок 702 GDR содержит обновленную/чистую область 710, содержащую блоки, которые все были кодированы с использованием интра-предсказания (т.е. блоки с интра-предсказанием), и необновленную/исправленную область 712, содержащую блоки, которые все были кодированы с использованием интер-предсказания (т.е., блоки с интер-предсказанием).
[00132] Замыкающий снимок 704, непосредственно смежный со снимком 702 GDR, содержит обновленную/чистую область 710, имеющую первую часть 710A, кодированную с использованием интра-предсказания, и вторую часть 710B, кодированную с использованием интер-предсказания. Вторая часть 710B кодируется посредством ссылки на обновленную/чистую область 710, например, предыдущего снимка в пределах периода GDR CVS 708. Как показано, обновленная/чистая область 710 замыкающих снимков 704 расширяется по мере того, как процесс кодирования перемещается или продвигается в согласованном направлении (например, слева направо), что соответственно сжимает необновленную/грязную область 712. В конце концов, снимок 706 точки восстановления, который содержит только обновленную/чистую область 710, получается в результате процесса кодирования. Примечательно, и как будет дополнительно рассмотрено ниже, вторая часть 710B обновленной/чистой области 710, которая кодирована как блоки с интер-предсказанием, может относиться только к обновленной/чистой области 710 в опорном снимке.
[00133] Как показано на Фиг.7, каждый из сегментов снимка 702 GDR, замыкающих снимков 704 и снимка 706 точки восстановления в CVS 708 содержится в своей собственной единице 730 NAL VCL.
[00134] В одном варианте осуществления единица 730 NAL VCL, содержащая снимок 702 GDR в CVS 708, имеет тип единицы NAL GDR (GDR_NUT). То есть, в одном варианте осуществления единица 730 NAL VCL, содержащая снимок 702 GDR в CVS 708, имеет свой собственный уникальный тип единицы NAL относительно замыкающих снимков 704 и снимка 706 точки восстановления. В одном варианте осуществления GDR_NUT позволяет битовому потоку 750 начинаться со снимка 702 GDR вместо того, чтобы битовый поток 750 начинался со снимка точки интра-произвольного доступа (IRAP). Обозначение единицы 730 NAL VCL снимка 702 GDR как GDR_NUT может указывать, например, декодеру, что начальная единица 730 NAL VCL в CVS 708 содержит снимок 702 GDR. В одном варианте осуществления снимок 702 GDR является начальным снимком в CVS 708. В одном варианте осуществления снимок 702 GDR является начальным снимком в периоде GDR.
[00135] Фиг.8 является принципиальной схемой, иллюстрирующей поиск 800 нежелательного движения при использовании ограничения кодера для поддержки GDR. Как показано, поиск 800 движения отображает текущий снимок 802 и опорный снимок 804. Каждый из текущего снимка 802 и опорного снимка 804 включает в себя обновленную область 806, кодированную с интра-предсказанием, обновленную область 808, кодированную с интер-предсказанием, и необновленную область 810. Обновленная область 806, обновленная область 808 и необновленная область 810 аналогичны первой части 710А обновленной/чистой области 710, второй части 710В обновленной/чистой области 710 и необновленной/грязной области 712 на Фиг.7.
[00136] Во время процесса поиска 800 движения кодер ограничен или ему запрещено выбирать какой-либо вектор 812 движения, что приводит к тому, что некоторые дискретные отсчеты опорного блока 814 находятся за пределами обновленной области 806. Это происходит даже тогда, когда опорный блок 814 обеспечивает наилучшие критерии оценки скорости к искажению при предсказании текущего блока 816 в текущем снимке 802. Таким образом, Фиг.8 иллюстрирует причину неоптимальности в поиске движения 800 при использовании ограничения кодера для поддержки GDR.
[00137] Фиг.9 иллюстрирует вариант осуществления битового видеопотока 900. В данном контексте битовый видеопоток 900 также может называться кодированным битовым видеопотоком, битовым потоком или разновидностями этого. Как показано на Фиг.9, битовый поток 900 содержит по меньшей мере одну единицу снимка (PU) 901. PU 901 также может называться единицей доступа к слою. Хотя три из PU 901 показаны на Фиг.9, в практическом варианте применения в битовом потоке 900 может присутствовать другое количество PU 901. Каждый PU 901 является набором единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно один кодированный снимок (например, снимок 914).
[00138] В одном варианте осуществления каждый PU 901 содержит одно или более из следующего: информацию 902 о возможностях декодирования (DCI), набор 904 параметров видео (VPS), набор 906 параметров последовательности (SPS), набор 908 параметров снимка (PPS), заголовок 912 снимка (PH) и снимок 914. Каждое из DCI 902, VPS 904, SPS 906 и PPS 908 в общем случае может называться набором параметров. В одном варианте осуществления другие наборы параметров, не показанные на Фиг.9, также могут быть включены в битовый поток 900, такие как, например, набор параметров адаптации (APS), который является синтаксической структурой, содержащей синтаксические элементы, которые применяются к нулевому количеству или более сегментам, как определено нулевым количеством или более синтаксическими элементами, обнаруженными в заголовках сегментов.
[00139] DCI 902, которая также может называться набором параметров декодирования (DPS) или набором параметров декодера, является синтаксической структурой, содержащей синтаксические элементы, которые применяются ко всему битовому потоку. DCI 902 включает в себя параметры, которые остаются постоянными в течение времени жизни битового видеопотока (например, битового потока 900), что может быть преобразовано во время жизни сеанса. DCI 902 может включать в себя информацию о профиле, слое и подпрофиле для определения точки взаимодействия максимальной сложности, которая гарантированно никогда не будет превышена, даже если в сеансе происходит объединение видеопоследовательностей. Кроме того, она в необязательном порядке включает в себя флаги ограничения, которые указывают, что битовый видеопоток будет ограничивать использование определенных функций, как указано значениями этих флагов. При этом битовый поток может быть помечен как не использующий определенные инструменты, что позволяет, среди прочего, распределять ресурсы в реализации декодера. Как и все наборы параметров, DCI 902 присутствует при первой ссылке и на нее ссылается самое первый снимок в видеопоследовательности, подразумевая, что он должен быть отправлен среди первых единиц NAL в битовом потоке. Хотя в битовом потоке могут находиться множество DCI 902, значение синтаксических элементов в нем не может быть несогласованным при обращении к нему.
[00140] VPS 904 включает в себя зависимость декодирования или информацию для построения набора опорных снимков слоев улучшения. VPS 904 обеспечивает общую перспективу или представление масштабируемой последовательности, включая типы предоставляемых рабочих точек, профиль, слой и слой рабочих точек, и некоторые другие высокослойные свойства битового потока, которые можно использовать как основу для согласования сеанса и выбора контента и т.д.
[00141] SPS 906 содержит данные, общие для всех снимков в последовательности снимков (SOP). SPS 906 является синтаксической структурой, содержащей синтаксические элементы, которые применяются к нулевому количеству или более полным CLVS, что определяется содержимым синтаксического элемента, обнаруженного в PPS, на который ссылается синтаксический элемент, обнаруженный в заголовке каждого снимка. Напротив, PPS 908 содержит данные, общие для всего снимка. PPS 908 является синтаксической структурой, содержащей синтаксические элементы, которые применяются к нулевому количеству или более полным кодированным снимкам, как определено синтаксическим элементом, найденным в заголовке каждого снимка (например, РН 912).
[00142] В одном варианте осуществления SPS 906 содержит первый флаг 930, который является флагом POC MSB, обозначенным как sps_poc_msb_cycle_flag. Когда первый флаг 930 имеет первое значение (например, 1), первый флаг 930 указывает, что заголовок (например, заголовок 912 снимка) содержит второй флаг 940, который является другим флагом POC MSB, обозначенным как ph_poc_msb_cycle_present_flag. Когда первый флаг 930 имеет второе значение (например, 0), первый флаг 930 указывает, что заголовок (например, заголовок 912 снимка) не содержит второй флаг 940. Как используется здесь, второй флаг 940 может упоминаться как синтаксический элемент ph_poc_msb_cycle_present_flag.
[00143] SPS 908 также содержит указатель длины 950 значения POC MSB, когда значение POC MSB содержится в заголовке, относящемся к SPS 906. В одном варианте осуществления указатель длины 950 обозначается как sps_poc_msb_cycle_len_minus1. В одном варианте осуществления sps_poc_msb_cycle_len_minus1 плюс 1 указывает длину в битах значения POC MSB, когда значение POC MSB присутствует в заголовке, относящемся к SPS. В одном варианте осуществления значение указателя находится в диапазоне от нуля (0) до 32-sps_log2_max_pic_order_cnt_lsb_minus4-5 включительно. sps_log2_max_pic_order_cnt_lsb_minus4 задает значение переменной MaxPicOrderCntLsb (например, младший значащий бит порядкового номера снимка), используемой в процессе декодирования для порядкового номера снимка, следующим образом: MaxPicOrderCntLsb=2(sps_log2_max_pic_order_cnt_lsb_minus4+4), где значение sps_log2_max_pic_order_cnt_lsb_minus4 должно находиться в диапазоне от 0 до 12 включительно.
[00144] Второй флаг 940 указывает, присутствует ли в заголовке значение 960 POC MSB. Когда второй флаг 940 имеет первое значение (например, 1), второй флаг 940 указывает, что значение 960 POC MSB присутствует в заголовке (например, в заголовке 912 снимка). Когда второй флаг 940 имеет второе значение (например, 0), второй флаг 940 указывает, что значение 960 POC MSB отсутствует в заголовке. В одном варианте осуществления значение 960 POC MSB может упоминаться как элементы или синтаксический элемент значения POC MSB.
[00145] Значение 960 POC MSB указывает значение цикла POC MSB текущего снимка (например, снимка 914). В одном варианте осуществления значение 960 POC MSB обозначается как ph_poc_msb_cycle_val. Таким образом, значение 960 POC MSB явно сигнализируется в битовом потоке 900 вместо того, чтобы быть выеденным на основе предыдущего снимка. В одном варианте осуществления значение POC MSB, сигнализированное в битовом потоке, используется для получения значения POC. В одном варианте осуществления значение POC определяется посредством объединения значения POC MSB и POC LSB, которые также могут сигнализироваться в битовом потоке 900.
[00146] Каждый кодированный снимок связан с переменной порядкового номера снимка, обозначенной как PicOrderCntVal. PicOrderCntVal выводится следующим образом: PicOrderCntVal=PicOrderCntMsb+ph_pic_order_cnt_lsb, где PicOrderCntMsb - это старший бит POC, а ph_pic_order_cnt_lsb - это младший бит POC.
[00147] Как будет более подробно объяснено ниже, использование вышеупомянутых флагов позволяет использовать несинхронизированные снимки IRAP между слоями. Описанная здесь обработка POC гарантирует, что значения POC всех снимков в пределах AU одинаковы. Для осуществления этого значения POC MSB сигнализируются (вместо выведения) для снимков IRAP, т.е. снимков IDR, CRA и GDR. Это обеспечивает значительно более простую конструкцию для выведения POC по сравнению со смешанным механизмом сброса POC и механизмом сигнализации POC MSB в SHVC и MV-HEVC.
[00148] DCI 902, VPS 904, SPS 906 и PPS 908 содержатся в различных типах единиц слоя сетевой абстракции (NAL). Единица NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на единицы слоя видеокодирования (VCL) и единицы NAL не-VCL. Единицы NAL VCL содержат данные, которые представляют значения дискретных отсчетов в видеоснимках, а единицы NAL не-VCL содержат какую-либо связанную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц NAL VCL) и дополнительная расширенная информация (временная информация и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений дискретных отсчетов в видеоснимках).
[00149] В одном варианте осуществления DCI 902 содержится в единице NAL не-VCL, обозначенном как единица NAL DCI или единица NAL DPS. То есть единица NAL DCI имеет тип единицы NAL DCI (NUT), а единица DPS NAL имеет NUT DPS. В одном варианте осуществления VPS 904 содержится во единице NAL не-VCL, обозначенном как единица NAL VPS. Следовательно, единица NAL VPS имеет NUT VPS. В одном варианте осуществления SPS 906 является единицей NAL не-VCL, обозначенным как единица NAL SPS. Следовательно, единица NAL SPS имеет NUT SPS. В одном варианте осуществления PPS 908 содержится в единице NAL не-VCL, обозначенный как единица NAL PPS. Следовательно, единица NAL PPS имеет NUT PPS.
[00150] РН 912 является синтаксической структурой, содержащей синтаксические элементы, которые применяются ко всем сегментам (например, сегментам 918) кодированного снимка (например, снимка 914). В одном варианте осуществления РН 912 находится в новом типе единицы NAL не-VCL, обозначенного как единица NAL PH. Следовательно, единица NAL PH имеет NUT PH (например, PH_NUT). В одном варианте осуществления в каждый PU 901 входит один и только один РН 912. То есть PU 901 содержит один или единственный РН 912. В одном варианте осуществления ровно одна единица NAL PH присутствует для каждого снимка 914 в битовом потоке 900.
[00151] В одном варианте осуществления единица NAL PH, связанный с PH 912, имеет временной идентификатор (ID) и идентификатор слоя. Временной ID указывает положение единицы NAL PH во времени относительно других единиц NAL PH в битовом потоке (например, битовом потоке 900). Идентификатор слоя указывает слой (например, слой 531 или слой 532), который содержит единицу NAL PH. В одном варианте осуществления временной идентификатор аналогичен POC, но отличается от него. POC однозначно идентифицирует каждый снимок по порядку. В однослойном битовом потоке временной идентификатор и POC будут одинаковыми. В многослойном битовом потоке (например, см. Фиг.5) снимки в одном и том же AU будут иметь разные POC, но один и тот же временной ID.
[00152] В одном варианте осуществления единица NAL PH предшествует единице NAL VCL, содержащей первый сегмент 918 связанного снимка 914. Это устанавливает связь между РН 912 и сегментами 918 снимка 914, связанного с РН 912, без необходимости иметь идентификатор заголовка снимка, сигнализируемого в РН 912 и ссылающегося на заголовок 920 сегмента. Следовательно, можно сделать вывод, что все единицы NAL VCL между двумя PH 912 принадлежат одному и тому же снимку 914 и что снимок 914 связан с первым PH 912 между двумя PH 912. В одном варианте осуществления первый единица NAL VCL, который следует за PH 912, содержит первый сегмент 918 снимка 914, связанный с PH 912.
[00153] В одном варианте осуществления единица NAL PH следует наборам параметров уровня снимка (например, PPS) или наборам параметров более высокого уровня, таким как DCI (она же DPS), VPS, SPS, PPS и т.д., имеющим как временной ID, так и ID слоя меньше, чем временной ID и ID слоя единицы NAL PH, соответственно. Следовательно, эти наборы параметров не повторяются в снимке или единице доступа. Благодаря такому порядку, PH 912 может быть разрешен немедленно. То есть наборы параметров, которые содержат параметры, относящиеся ко всему снимку, располагаются в битовом потоке перед единицей NAL PH. Все, что содержит параметры для части снимка, располагается после единицы NAL PH.
[00154] В одном из вариантов единица NAL PH следует наборам параметров уровня снимка и сообщениям с префиксом дополнительной информации расширения (SEI) или наборам параметров более высокого уровня, таким как DCI (она же DPS), VPS, SPS, PPS, APS, сообщение SEI и т.д.
[00155] В одном варианте осуществления РН 912 может содержать синтаксический элемент (например, флаг и т.д.), который указывает тип снимка для снимка 914, связанного с РН 912. Тип снимка может включать в себя, помимо прочего, следующие типы: снимок мгновенного обновления декодера (IDR), снимок чистого произвольного доступа (CRA), снимок GDR, снимок не-IRAP, которое является снимком не-GDR и содержит только сегменты с интра-предсказанием (I-сегменты), снимок не-IRAP, который является снимком не-GDR и содержит только сегменты с однонаправленным интра-предсказанием (P-сегменты) и I-сегменты, и снимок не-IRAP, который является снимком не-GDR и содержит только сегменты двунаправленного интер-предсказания (B-сегменты), P-сегменты и I-сегменты. Таким образом, один флаг в РН 912 может указывать, являются ли все сегменты (например, сегменты 918) в снимке (например, снимке 914), например, сегментами снимка GDR (например, снимка 702 GDR). Это также поддерживает сигнализацию порядкового номера снимка (POC) точки восстановления для снимка GDR один раз в РН 912, а не в каждом заголовке сегмента (например, заголовке 920 сегмента).
[00156] В одном варианте осуществления один или более синтаксических элементов сигнализируются в РН 912 вместо заголовков 920 сегментов снимка 914, связанного с РН 912. Эти синтаксические элементы представляют собой идентификатор PPS, на который ссылается снимок 914, флаг, указывающий, является ли снимок 914 опорным снимком или нет, цветовую плоскость снимка 914, младший значащий бит POC (LSB) снимка 914, точка восстановления POC, если снимок 914 является снимком GDR (например, снимком 702 GDR), флаг, определяющий, выводятся ли снимки, предшествующие снимку 914, и флаг, определяющий, является ли снимок 914 выходным снимком или нет. Идентификатор PPS является идентификатором, который идентифицирует конкретный PPS для снимка 914. Цветовая плоскость снимка 914 содержит компоненты яркости и цветности (например, Y, Cb и Cr и т.д.) для снимка 914. POC LSB - это бит (или биты), идентифицирующий POC. POC является переменной, которая связана с каждым снимком (например, снимком 914), однозначно идентифицирует связанный снимок среди всех снимков в CLVS и, когда связанный снимок должен быть выведен из DPB, указывает положение связанного снимка в порядке вывода относительно позиций в порядке вывода других снимков в том же CLVS, которые должны выводиться из DPB. POC точки восстановления - это POC, который идентифицирует точку восстановления и, следовательно, снимок точки восстановления.
[00157] Перемещение этих синтаксических элементов из заголовков 920 сегментов в РН 912 позволяет сигнализировать синтаксические элементы один раз для всего снимка 914 вместо повторения синтаксических элементов в каждом заголовке 920 сегмента. Это снижает избыточность и повышает эффективность кодирования.
[00158] Снимок 914 является массивом дискретных отсчетов яркости в монохромном формате или массивом дискретных отсчетов яркости и двумя соответствующими массивами дискретных отсчетов цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. В одном варианте осуществления в каждой PU 901 включено один и только один снимок 914. Таким образом, в каждой PU 901 имеется только один РН 912 и только один снимок 914, соответствующий этому РН 912. То есть PU 901 содержит один или единственный снимок 914.
[00159] Снимок 914 может быть либо кадром, либо полем. Однако в одном CVS 916 либо все снимки 914 являются кадрами, либо все снимки 914 являются полями. CVS 916 является кодированной видеопоследовательностью для каждой кодированной послойно видеопоследовательности (CLVS) в битовом видеопотоке 900. Примечательно, что CVS 916 и CLVS одинаковы, когда битовый видеопоток 900 включает в себя один слой. CVS 916 и CLVS различаются только тогда, когда битовый видеопоток 900 включает в себя несколько слоев (например, как показано на Фиг.5).
[00160] PU 901 вместе могут составлять CLVS. CLVS - это последовательность PU 901 с тем же значением nuh_layer_id, которая состоит в порядке декодирования из PU начала кодированной послойно видеопоследовательности (CLVSS), за которыми следует нулевое количество или более PU 901, которые не являются PU CLVSS, включая все последующие PU 901, вплоть до любого последующего PU 901, который является CLVSS PU, но не включает в себя его. CLVSS PU является PU 901, в котором кодированный снимок (например, снимок 914) является снимком CLVSS. Снимок CLVSS является кодированным снимком, который является снимком IRAP с флагом NoOutputBeforeRecoveryFlag, равным 1, или снимком GDR (например, снимком 702 GDR) с флагом NoOutputBeforeRecoveryFlag, равным 1. В одном варианте осуществления флаг NoOutputBeforeRecoveryFlag для снимка располагается в PPS 908 или другой части PU 901.
[00161] Каждый снимок 914 содержит один или более сегментов 918. Сегмент 918 является целым числом полных клеток или целым числом последовательных полных строк CTU в клетке снимка (например, снимка 914). Каждый сегмент 918 содержится исключительно в одном единице NAL (например, единице NAL VCL). Клетка (tile) (не показана) является прямоугольной областью CTU в конкретном столбце клетки и конкретной строке клетки в снимке (например, снимке 914). CTU (не показан) является CTB дискретных отсчетов яркости, два соответствующих CTB дискретных отсчетов цветности снимка, который имеет три массива дискретных отсчетов, или CTB дискретных отсчетов монохромного снимка или снимка, который кодирован с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. CTB (не показан) является блоком дискретных отсчетов N×N для некоторого значения N, так что разделение компонента на CTB является разбиением. Блок (не показан) является массивом MxN (M столбцов на N строк) дискретных отсчетов (например, пикселей) или массивом MxN коэффициентов преобразования.
[00162] В одном варианте осуществления каждый сегмент 918 содержит заголовок 920 сегмента. Заголовок 920 сегмента является часть кодированного сегмента 918, содержащую элементы данных, относящиеся ко всем клеткам или строкам CTU в клетке, представленной в сегменте 918. То есть заголовок 920 сегмента содержит информацию о сегменте 918, такую как, например, тип сегмента, какой из опорных снимков будет использоваться и т.д.
[00163] Снимки 914 и их сегменты 918 содержат данные, связанные с кодируемыми или декодируемыми снимками или видео. Таким образом, снимки 914 и их сегменты 918 могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 900.
[00164] В одном варианте осуществления каждый снимок 511, 513, 515-518 на Фиг.5 является частью или содержится в PU (например, PU 901) таким же или подобным образом, что и снимок 914, как показано на Фиг.9. Следовательно, каждый AU 506 на Фиг.5 содержит PU в каждом слое. Однако для простоты иллюстрации весь PU 901 на Фиг.9 не изображен на Фиг.5. Вместо этого на Фиг.1 показаны только снимки (например, снимки 511, 513, 515-518) из этих PU. 5.
[00165] В одном варианте осуществления первый или начальный AU 506 CLVS 540 на Фиг.5, который обозначен как AU CVSS, содержит PU (например, PU 901) для каждого слоя (например, слоя 531 и 532). Кроме того, кодированный снимок (например, снимок 511, 513) в каждом из этих PU в AU CVSS является снимком CLVSS. Как отмечалось выше, снимок CLVSS может быть снимком IRAP, снимком GDR или другим снимком точки произвольного доступа. В одном варианте осуществления снимок CLVSS имеет флаг отсутствия вывода до восстановления (также известный как флаг NoOutputBeforeRecovery), установленный равным единице (1), чтобы указать, что конкретные снимки (например, снимки RASL) не выводятся декодером, поскольку они могут быть недекодируемыми. Действительно, такие снимки могут содержать ссылки на снимки, которых нет в битовом потоке.
[00166] В одном варианте осуществления количество слоев в AU CVSS и/или в CLVS (например, CLVS 540) указывается посредством VPS (например, 904).
[00167] Специалисты в данной области техники поймут, что битовый поток 900 может содержать другие параметры и информацию в практических вариантах применения.
[00168] Фиг.10 является вариантом осуществления способа 1000 декодирования, реализуемого видеодекодером (например, видеодекодером 400). Способ 1000 может быть выполнен после того, как битовый поток был прямо или косвенно принят от видеокодера (например, видеокодера 300). Способ 1000 улучшает процесс декодирования за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS), что упрощает кодирование по сравнению с действующими стандартами. Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[00169] На этапе 1002 видеодекодер принимает битовый поток (например, битовый поток 901), включающий в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS) (например, AU 506, обозначенный как AU CVSS). В одном варианте осуществления AU CVSS содержит единицу снимка (PU) (например, PU 901) для каждого слоя (например, слоя 531 и слоя 532). В одном варианте осуществления кодированный снимок (например, кодированный снимок 511 и 515) в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS).
[00170] В одном варианте осуществления видеодекодер ожидает, что кодированный снимок в каждой PU будет снимком CLVSS. Однако, если декодер определяет, что это условие не соответствует действительности, он может обнаружить ошибку, сообщить об ошибке, запросить повторную отправку исправленного битового потока (или его части) или предпринять некоторые другие корректирующие меры, чтобы гарантировать, что принимается согласующийся битовый поток.
[00171] В одном варианте осуществления снимок CLVSS является снимком точки интра-произвольного доступа (IRAP). В одном варианте осуществления снимок CLVSS является снимком постепенного обновления декодирования (GDR). В одном варианте осуществления снимок CLVSS имеет флаг отсутствия вывода до восстановления, равный 1.
[00172] В одном варианте осуществления каждый слой AU CVSS задан набором параметров видео (VPS). То есть VPS указывает, сколько слоев включено в каждый AU CLVS. В одном варианте осуществления AU CVSS является начальной AU кодированной видеопоследовательности (CVS).
[00173] В одном варианте осуществления PU упоминается как единица доступа к слою. В одном варианте осуществления AU CVSS называется полной AU, поскольку каждый слой AU CVSS содержит одну из единиц снимка (PU).
[00174] На этапе 1004 видеодекодер идентифицирует кодированный снимок (например, снимок 914) из одного из слоев на основе значения порядкового номера снимка (POC). На этапе 1006 видеодекодер декодирует кодированный снимок для получения декодированного снимка. После декодирования декодированный снимок может быть использован для генерирования или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и т.д.).
[00175] Фиг.11 является вариантом осуществления способа 1100 кодирования битового видеопотока, реализуемого видеокодером (например, видеокодером 300). Способ 1100 может выполняться, когда снимок (например, из видео) долен быть кодирован в битовый видеопоток и затем передан в видеодекодер (например, видеодекодер 400). Способ 1100 улучшает процесс кодирования за счет использования битового потока, который ограничен таким образом, что каждая единица доступа (AU) к началу кодированной видеопоследовательности (CVSS) является полной AU, и каждый снимок в AU CVSS является снимком начала кодированной послойно видеопоследовательности (CLVSS), что упрощает кодирование по сравнению с действующими стандартами. Это гарантирует, что точка произвольного доступа (RAP) предоставляется для каждого слоя многослойного битового потока в начале каждой кодированной видеопоследовательности (CVS). Таким образом, кодер/декодер (он же «кодек») в кодировании видео улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, получении и/или просмотре видео.
[00176] На этапе 1102 видеокодер вставляет единицу снимка (PU) (например, PU 901), содержащий кодированный снимок (например, кодированный снимок 511 и 515), в каждый слой (например, слой 531 и слой 532) единицы доступа (AU) к началу кодированной видеопоследовательности (CVSS) (например, AU 506, обозначенный как AU CVSS). В одном варианте осуществления кодированный снимок является снимком начала кодированной послойно видеопоследовательности (CLVSS). В одном варианте осуществления видеокодер ограничен таким образом, что кодированный снимок является снимком начала кодированной послойно видеопоследовательности (CLVSS). То есть от видеокодера требуется, чтобы кодированный снимок был снимком начала кодированной послойно видеопоследовательности (CLVSS). Такое ограничение или требование гарантирует, что битовый поток согласуется, например, с VVC или каким-либо другим стандартом, модифицированным, как указано в данном документе. Однако кодер также может быть приспособлен работать в других режимах, где он не ограничен таким образом, например, при работе по другому стандарту или другой версии того же стандарта.
[00177] В одном варианте осуществления снимок CLVSS является снимком точки интра-произвольного доступа (IRAP). В одном варианте осуществления снимок CLVSS является снимком постепенного обновления декодирования (GDR). В одном варианте осуществления снимок CLVSS имеет флаг отсутствия вывода до восстановления, равный 1.
[00178] В одном варианте осуществления каждый слой AU CVSS задан набором параметров видео (VPS). То есть VPS указывает, сколько слоев включено в каждый AU CLVS. В одном варианте осуществления AU CVSS является начальной AU кодированной видеопоследовательности (CVS).
[00179] В одном варианте осуществления PU упоминается как единица доступа к слою. В одном варианте осуществления AU CVSS называется полной AU, поскольку каждый слой AU CVSS содержит одну из единиц снимка (PU).
[00180] На этапе 1104 видеокодер кодирует кодированную послойно видеопоследовательность (CLVS) (например, CLVS 540), включающую в себя AU CVSS, в битовый поток. На этапе 1106 видеокодер сохраняет битовый поток для передачи в видеодекодер. Битовый видеопоток может храниться в памяти до тех пор, пока битовый видеопоток не будет передан в видеодекодер. После приема видеодекодером кодированный битовый видеопоток может быть декодирован (например, как описано выше) для генерации или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и др.).
[00181] Обратите внимание, что описанные здесь решения по-прежнему допускают несинхронизированные снимки IRAP между слоями. Однако для простоты процесс декодирования, начинающийся с AU, содержащего снимок IRAP на самом нижнем слое, но снимок не-IRAP на других слоях, нормативно не определен. Однако до тех пор, пока вариант исполнения допускает несинхронизированные снимки IRAP между слоями, технические преимущества такого разрешения все еще могут быть реализованы на практике с помощью вариантов реализаций.
[00182] Следующий синтаксис и семантика могут быть использованы для реализации раскрытых здесь вариантов осуществления. Следующее описание относится к основному тексту, который является последним проектом спецификации VVC.
[00183] В одном варианте осуществления связанный снимок IRAP (конкретного снимка с nuh_layer_id, равным конкретному значению layerId) является предыдущим снимком IRAP в порядке декодирования с nuh_layer_id, равным layerId (если он присутствует), между которыми нет снимка GDR с nuh_layer_id, равным layerId. nuh_layer_id задает идентификатор слоя, которому принадлежит единица NAL VCL, или идентификатор слоя, к которому применяется единица NAL не-VCL. Значение nuh_layer_id должно находиться в диапазоне от 0 до 55 включительно. Другие значения для nuh_layer_id зарезервированы для будущего использования ITU-T|ISO/IEC.
[00184] Используемый здесь PU также может называться единицей доступа к слою. В одном варианте осуществления единицей доступа к слою чистого произвольного доступа (CRA) является единица доступа к слою, в которой кодированный снимок является снимком CRA. В одном варианте осуществления снимок чистого произвольного доступа (CRA) является снимком IRAP, для которого каждая единица NAL VCL имеет nal_unit_type, равный CRA_NUT. В одном варианте осуществления снимок CRA не использует интер-предсказание в процессе декодирования и может быть первым снимком в битовом потоке в порядке декодирования или может появиться позже в битовом потоке. В одном варианте осуществления снимок CRA может иметь связанные снимки RADL или RASL. Когда снимок CRA имеет флаг NoOutputBeforeRecoveryFlag, равный 1, связанные снимки RASL не выводятся декодером, поскольку они могут быть недекодируемыми, поскольку они могут содержать ссылки на снимки, отсутствующие в битовом потоке.
[00185] В одном варианте осуществления кодированную послойно видеопоследовательность (CLVS) является последовательность PU с одинаковым значением nuh_layer_id, состоящую в порядке декодирования из PU CLVSS, за которой следует нулевое количество или более PU, не являющихся PU CLVSS, включая все последующие PU до любого последующего PU, который является CLVSS PU, но не включает его в себя. В одном варианте осуществления PU CLVSS может быть PU IDR, PU CRA или PU GDR. Значение NoOutputBeforeRecoveryFlag равно 1 для каждого PU IDR и каждого PU CRA, у которого HandleCraAsClvsStartFlag равен 1, и каждого PU CRA или GDR, который является первым PU в слое битового потока в порядке декодирования или первым PU в слое битового потока, который следует за единицей NAL EOS в порядке декодирования.
[00186] В одном варианте осуществления единица доступа к слою начала кодированной послойно видеопоследовательности (CLVSS) является единицей доступа к слою, в которой кодированный снимок является снимком CLVSS. Снимок начала кодированной послойно видеопоследовательности (CLVSS) является кодированным снимком, который является снимком IRAP с NoIncorrectPicOutputFlag, равным 1, или снимком GDR с NoIncorrectPicOutputFlag, равным 1.
[00187] В одном варианте осуществления кодированная видеопоследовательность (CVS): Последовательность единиц доступа, состоящая в порядке декодирования из единицы доступа к CVSS, за которым следует нулевое количество или более единиц доступа, не являющихся единицами доступа к CVSS, включая все последующие единицы доступа вплоть до любого последующего единицы доступа, являющегося единицей доступа к CVSS, но не включающего его в себя.
[00188] В одном варианте осуществления единица доступа к началу кодированной видеопоследовательности (CVSS): Единица доступа, в которой имеется единица доступа к слою для каждого слоя в CVS и кодированный снимок в каждом единице доступа к слою, является снимком CLVSS. Обратите внимание, что для этого требуется, чтобы каждый AU CVSS был полной AU, и каждый снимок в AU CVSS был снимком CLVSS. В одном варианте осуществления единица доступа постепенного обновления декодирования (GDR): Единица доступа, в которой кодированный снимок в каждом присутствующем единице доступа к слою является снимком GDR. В одном варианте осуществления единица доступа к слою постепенного обновления декодирования (GDR): Единица доступа к слою, в которой кодированный снимок является снимком GDR. В одном варианте осуществления снимок постепенного обновления декодирования (GDR): Снимок, для которого каждая единица NAL VCL имеет nal_unit_type, равный GDR_NUT.
[00189] Синтаксис SPS следующий.
seq_parameter_set_rbsp () { Дескриптор
...
log2_max_pic_order_cnt_lsb_minus4 ue(v)
poc_msb_in_rap_pics_flag u(1)
если (poc_msb_in_rap_pics_flag > 0)
poc_msb_len_minus1 ue(v)
...
}
[00190] В одном варианте осуществления указанные выше синтаксические элементы, выделенные полужирным шрифтом, могут быть включены в VPS.
[00191] Синтаксис заголовка сегмента следующий.
slice_header () { Дескриптор
slice_pic_parameter_set_id ue(v)
если (rect_slice_flag | | NumBricksInPic > 1)
slice_address u(v)
если(!rect_slice_flag && !single_brick_per_slice_flag)
num_bricks_in_slice_minus1 ue(v)
non_reference_picture_flag u(1)
slice_type ue(v)
если (separate_colour_plane_flag == 1)
color_plane_id u(2)
slice_pic_order_cnt_lsb u(v)
Если (poc_msb_in_rap_pics_flag && nal_unit_type >= IDR_W_RADL && nal_unit_type <= GDR_NUT)
poc_msb_val u(v)
если (nal_unit_type== GDR_NUT)
recovery_poc_cnt ue(v)
...
}
[00192] В одном варианте осуществления часть условия синтаксиса «&& nal_unit_type >= IDR_W_RADL && nal_unit_type <= GDR_NUT» может быть удалена. То есть сигнал poc_msb_val для сегментов с любым значением nal_unit_type, когда poc_msb_in_rap_pics_flag равен 1.
[00193] В одном варианте осуществления добавляется один флаг на уровне снимка, чтобы обусловить наличие синтаксического элемента poc_msb_val. То есть разрешается кодерам принимать решение о том, сигнализировать или не сигнализировать poc_msb_val отдельно для каждого сегмента снимка IRAP или GDR, когда poc_msb_in_rap_pics_flag равен 1.
[00194] В одном варианте осуществления применяются оба вышеуказанных варианта. В одном варианте осуществления сигнал poc_msb_val с использованием se(v) или ue(v) и удаление синтаксического элемента poc_msb_len_minus1 из синтаксиса SPS.
[00195] Предоставляется семантика заголовка единицы NAL.
[00196] nuh_layer_id задает идентификатор слоя, которому принадлежит единица NAL VCL, или идентификатор слоя, к которому применяется единица NAL не-VCL.
[00197] Значение nuh_layer_id должно быть одинаковым для всех единиц NAL VCL кодированного снимка. Значение nuh_layer_id кодированного снимка или единицы доступа к слою является значением nuh_layer_id единиц NAL VCL кодированного снимка или единицы доступа к слою.
[00198] nal_unit_type указывает тип единицы NAL, т.е. тип структуры данных RBSP, содержащейся в единице NAL.
[00199] Значение nal_unit_type должно быть одинаковым для всех единиц NAL кодированного сегмента снимка. Упоминается, что снимок или единица доступа к слою имеет тот же тип единицы NAL, что и единицы NAL кодированного сегмента снимка или единицы доступа к слою. Обратите внимание, что два приведенных выше параграфа позволяют единицам NAL VCL в AU иметь разные типы единиц NAL, что позволяет смешивать снимки RAP и снимки без RAP в AU. Снимок RAP является снимком IDR, CAR или GDR.
[00200] Значение nal_unit_type должно быть одинаковым для снимков единицы доступа к CVSS.
[00201] Обеспечивается порядок единиц доступа и связи с CVS.
[00202] Битовый поток, соответствующий стандарту, включает в себя один или более CVS. CVS состоит из одного или более единиц доступа. Первая единица доступа к CVS является единицей доступа к CVSS, в котором каждая существующая единица доступа к слою является единицей доступа к слою CLVSS, который является либо единицей доступа к слою IRAP с NoIncorrectPicOutputFlag, равным 1, либо единицей доступа к слою GDR с NoIncorrectPicOutputFlag, равным 1. Каждая единица доступа к CVSS должен иметь снимок на каждом из слоев, присутствующих в CVS. Требованием соответствия битового потока является то, что при наличии каждая единица доступа к слою в следующем единице доступа после единицы доступа, который содержит единицу NAL конца последовательности или единица NAL конца битового потока, должен быть единицей доступа к слою IRAP, который может быть единицей доступа к слою IDR или единицей доступа к слою CRA, или единицей доступа к слою GDR.
[00203] Предоставляется семантика SPS.
[00204] log2_max_pic_order_cnt_lsb_minus4 указывает значение переменной MaxPicOrderCntLsb, которая используется в процессе декодирования для порядкового номера снимка следующим образом:
[00205] MaxPicOrderCntLsb=2 (log2_max_pic_order_cnt_lsb_minus4+4)
[00206] Значение log2_max_pic_order_cnt_lsb_minus4 должно находиться в диапазоне от 0 до 12 включительно.
[00207] Значение poc_msb_in_rap_pics_flag, равное 1, указывает, что синтаксический элемент poc_msb_val сигнализируется для снимков, относящихся к SPS, и для которых единицы NAL VCL имеют nal_unit_type в диапазоне от IDR_W_RADL до GDR_NUT включительно. Значение poc_msb_in_rap_pics_flag, равное 0, указывает, что синтаксический элемент poc_msb_val не сигнализируется для снимков, относящихся к SPS.
[00208] poc_msb_len_minus1 плюс 1 определяет длину в битах синтаксических элементов poc_msb_val, если они присутствуют. Значение poc_msb_len_minus1 должно находиться в диапазоне от 0 до 32 - log2_max_pic_order_cnt_lsb_minus4 - 5 включительно.
[00209] Предоставляется семантика заголовка сегмента.
[00210] 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 включительно.
[00211] poc_msb_val указывает значение POC MSB текущего снимка. Длина синтаксического элемента poc_msb_val равна poc_msb_len_minus1+1 бит.
[00212] Обеспечивается процесс декодирования кодированного снимка.
[00213] PictureOutputFlag устанавливается следующим образом:
[00214] - Если выполняется одно из следующих условий, PictureOutputFlag устанавливается равным 0.
[00215] - текущий снимок является снимком RASL, и NoIncorrectPicOutputFlag связанного с ним снимка IRAP равен 1.
[00216] - gdr_enabled_flag равен 1, и текущий снимок является снимком GDR с NoIncorrectPicOutputFlag, равным 1.
[00217] - gdr_enabled_flag равен 1, текущий снимок связан с снимком GDR с NoIncorrectPicOutputFlag, равным 1, и PicOrderCntVal текущего снимка меньше, чем RpPicOrderCntVal связанного снимка GDR.
[00218] - Текущий снимок не принадлежит выводимому слою.
[00219] - В противном случае PictureOutputFlag устанавливается равным pic_output_flag.
[00220] Предусмотрен процесс декодирования для порядкового номера снимка.
[00221] Результатом этого процесса является PicOrderCntVal, порядковый номер снимка для текущего снимка.
[00222] Каждый кодированный снимок связан с переменной порядкового номера снимка, обозначенной как PicOrderCntVal.
[00223] Когда poc_msb_val отсутствует для снимка и текущий снимок не является снимком CLVSS, переменные prevPicOrderCntLsb и prevPicOrderCntMsb выводятся следующим образом:
[00224] - Пусть prevTid0Pic будет предыдущим снимком в порядке декодирования, которое имеет nuh_layer_id, равный nuh_layer_id текущего снимка, и TemporalId, равный 0, и которое не является снимком RASL или RADL.
[00225] - Переменная prevPicOrderCntLsb устанавливается равной slice_pic_order_cnt_lsb из prevTid0Pic.
[00226] - Переменная prevPicOrderCntMsb устанавливается равной PicOrderCntMsb из prevTid0Pic.
[00227] Переменная PicOrderCntMsb текущего снимка получается следующим образом.
[00228] - Если для снимка присутствует poc_msb_val, PicOrderCntMsb устанавливается равным poc_msb_val * MaxPicOrderCntLsb.
[00229] - В противном случае (poc_msb_val для снимка отсутствует), если текущий снимок является снимком CLVSS, PicOrderCntMsb устанавливается равным 0.
[00230] - В противном случае PicOrderCntMsb выводится следующим образом.
если ((slice_pic_order_cnt_lsb < prevPicOrderCntLsb) &&
((prevPicOrderCntLsb -- slice_pic_order_cnt_lsb) >= (MaxPicOrderCntLsb/2)))
PicOrderCntMsb=prevPicOrderCntMsb+MaxPicOrderCntLsb (8-1)
иначе если((slice_pic_order_cnt_lsb > prevPicOrderCntLsb) &&
((slice_pic_order_cnt_lsb -- prevPicOrderCntLsb) > (MaxPicOrderCntLsb/2)))
PicOrderCntMsb=prevPicOrderCntMsb - MaxPicOrderCntLsb
иначе
PicOrderCntMsb=prevPicOrderCntMsb
[00231] PicOrderCntVal выводится следующим образом.
[00232] PicOrderCntVal=PicOrderCntMsb+slice_pic_order_cnt_lsb (8-2)
[00233] ПРИМЕЧАНИЕ - Все снимки CLVSS, для которых poc_msb_val отсутствует, будут иметь PicOrderCntVal, равный slice_pic_order_cnt_lsb, поскольку для этих снимков PicOrderCntMsb устанавливается равным 0.
[00234] Значение PicOrderCntVal должно находиться в диапазоне от -231 до 231-1 включительно.
[00235] В одном CVS значения PicOrderCntVal для любых двух кодированных снимков с одинаковым значением nuh_layer_id не должны совпадать.
[00236] Все снимки в любом конкретном единице доступа должны иметь одинаковое значение PicOrderCntVal.
[00237] Функция PicOrderCnt(picX) определяется следующим образом:
[00238] PicOrderCnt(picX)=PicOrderCntVal снимка picX (8-3)
[00239] Функция DiffPicOrderCnt(picA, picB) определяется следующим образом:
[00240] DiffPicOrderCnt(picA, picB)=PicOrderCnt(picA) - PicOrderCnt(picB) (8-4)
[00241] Битовый поток не должен содержать данных, результатом которых являются значения DiffPicOrderCnt(picA, picB), используемые в процессе декодирования, которые не находятся в диапазоне от -215 до 215-1 включительно.
[00242] ПРИМЕЧАНИЕ - Пусть X будет текущим снимком, а Y и Z будут двумя другими снимками в том же CVS, Y и Z считаются расположенными в одном и том же направлении порядка вывода от X, когда оба DiffPicOrderCnt(X, Y) и DiffPicOrderCnt(X, Z) положительны или оба отрицательны.
[00243]
[00244] Фиг.12 является принципиальной схемой устройства 1200 видеокодирования (например, видеокодера 300 или видеодекодера 400) в соответствии с вариантом осуществления раскрытия. Устройство 1200 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. Устройство 1200 видеокодирования содержит входные порты 1210 и приемные модули (Rx) 1220 для приема данных; процессор, логический блок или центральный модуль обработки (CPU) 1230 для обработки данных; передающие модули (Tx) 1240 и выходные порты 1250 для передачи данных; и память 1260 для хранения данных. Устройство 1200 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 1210, приемным модулям 1220, передающим модулям 1240 и выходным портам 1250 для обеспечения входа или выхода оптических или электрических сигналов.
[00245] Процессор 1230 реализуется аппаратным обеспечением и программным обеспечением. Процессор 1230 может быть реализован в виде одной или более микросхем CPU, ядер (например, в форме многоядерного процессора), программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 1230 поддерживает связь с входными портами 1210, приемными модулями 1220, передающими модулями 1240, выходными портами 1250 и памятью 1260. Процессор 1230 содержит модуль 1270 кодирования. Модуль 1270 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 1270 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные функции кодека. Следовательно, включение модуля 1270 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1200 видеокодирования и обеспечивает трансформацию устройства 1200 видеокодирования в другое состояние. В качестве альтернативы модуль 1270 кодирования реализуется как инструкции, хранящиеся в памяти 1260 и исполняемые процессором 1230.
[00246] Устройство 1200 видеокодирования/декодирования может также включать в себя устройства 1280 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 1280 I/O могут включать в себя устройства вывода, такие как дисплей, для отображения видеоданных, громкоговорители для вывода аудиоданных и т.д. Устройства 1280 I/O могут также включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[00247] Память 1260 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 1260 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянное запоминающее устройство (ROM), запоминающее устройство с произвольным доступом (RAM), троичное запоминающее устройство с адресацией по содержимому (ТСАМ) и/или статическое запоминающее устройство с произвольным доступом (SRAM).
[00248] Фиг.13 является принципиальной схемой варианта осуществления средства 1300 кодирования. В одном варианте осуществления средство 1300 кодирования реализовано в устройстве 1302 видеокодирования (например, видеокодере 300 или видеодекодере 400). Устройство 1302 видеокодирования включает в себя средство 1301 приема. Средство 1301 приема выполнено с возможностью приема снимка для кодирования или приема битового потока для декодирования. Устройство 1302 видеокодирования включает в себя средство 1307 передачи, соединенное со средством 1301 приема. Средство 1307 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированного изображения в средство отображения (например, одно из устройств 1280 ввода/вывода).
[00249] Устройство 1302 видеокодирования включает в себя средство 1303 хранения. Средство 1303 хранения соединено с по меньшей мере одним из средства 1301 приема или средства 1307 передачи. Средство 1303 хранения выполнено с возможностью хранения инструкций. Устройство 1302 видеокодирования также включает в себя средство 1305 обработки. Средство 1305 обработки соединено со средством 1303 хранения. Средство 1305 обработки выполнено с возможностью исполнения инструкций, хранящихся в средстве хранения, для осуществления способов,.
[00250] Также следует понимать, что этапы иллюстративных способов, изложенных в настоящем документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто иллюстративный. Подобным образом в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.
[00251] Несмотря на то, что в настоящем раскрытии было предоставлено несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и есть намерение не ограничиваться приведенными в данном документе деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
[00252] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, модулями, методиками или способами без отклонения от объема настоящего раскрытия. Другие элементы, показанные или рассмотренные как связанные или непосредственно связанные или сообщающиеся друг с другом, могут быть связаны косвенно или сообщаться через какой-либо интерфейс, устройство или промежуточный компонент, будь то электрически, механически или иным образом. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть осуществлены без отклонения от духа и объема, раскрытых в данном документе.

Claims (20)

1. Способ декодирования, реализуемый видеодекодером, содержащий этапы, на которых:
принимают посредством видеодекодера битовый поток, включающий в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом AU CVSS содержит единицу снимка (PU) для каждого слоя и при этом кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS);
идентифицируют посредством видеодекодера кодированный снимок из одного из слоев на основе значения порядкового номера снимка (POC); и
декодируют посредством видеодекодера кодированный снимок для получения декодированного снимка.
2. Способ по п.1, в котором снимок CLVSS является снимком точки интра-произвольного доступа (IRAP).
3. Способ по п.1, в котором снимок CLVSS является снимком постепенного обновления декодирования (GDR).
4. Способ по п.1, в котором снимок CLVSS связан с флагом отсутствия вывода до восстановления, расположенным в наборе параметров снимка (PPS) у PU, при этом флаг отсутствия вывода до восстановления равен 1.
5. Способ по п.1, в котором каждый слой AU CVSS задан набором параметров видео (VPS).
6. Способ по п.1, в котором AU CVSS является начальной AU кодированной видеопоследовательности (CVS).
7. Способ по п.1, в котором PU называется единицей доступа к слою.
8. Способ по п.1, в котором AU CVSS называется полной AU, поскольку каждый слой AU CVSS содержит одну из единиц снимка (PU).
9. Способ по п.1, дополнительно содержащий этап, на котором отображают кодированный снимок декодированным на дисплее электронного устройства.
10. Декодирующее устройство, содержащее:
приемник, выполненный с возможностью принимать битовый поток, включающий в себя единицу доступа (AU) к началу кодированной видеопоследовательности (CVSS), при этом AU CVSS содержит единицу снимка (PU) для каждого слоя и при этом кодированный снимок в каждой PU является снимком начала кодированной послойно видеопоследовательности (CLVSS);
память, соединенную с приемником, причем память хранит инструкции; и
процессор, соединенный с памятью, при этом процессор выполнен с возможностью исполнять инструкции для предписания декодирующему устройству выполнять способ по любому одному из пп.1-9.
11. Система видеокодирования, содержащая:
кодер и
декодер, соединенный с кодером, причем декодер включает в себя декодирующее устройство по п.10.
12. Машиночитаемый носитель данных, на котором записана программа, причем программа предписывает компьютеру выполнять способ по любому из пп.1-9.
RU2022109857A 2019-09-24 2020-09-16 Поддержка смешанных снимков irar и he-irar в пределах единицы доступа в многослойных битовых видеопотоках RU2822714C9 (ru)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US62/905,141 2019-09-24

Publications (2)

Publication Number Publication Date
RU2822714C1 true RU2822714C1 (ru) 2024-07-11
RU2822714C9 RU2822714C9 (ru) 2024-10-02

Family

ID=

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9654774B2 (en) * 2013-12-12 2017-05-16 Qualcomm Incorporated POC value design for multi-layer video coding
US9854270B2 (en) * 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
RU2653299C2 (ru) * 2014-03-17 2018-05-07 Нокиа Текнолоджиз Ой Способ и устройство для кодирования и декодирования видеоданных
RU2676876C2 (ru) * 2013-10-23 2019-01-11 Квэлкомм Инкорпорейтед Структуры формата файла многоуровневого видео
US10230972B2 (en) * 2012-07-01 2019-03-12 Sharp Kabushiki Kaisha Device for signaling a long-term reference picture in a parameter set
US10362304B2 (en) * 2013-12-26 2019-07-23 Zte Corporation Method and device for coding POC, method and device for decoding POC, and electronic equipment

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10230972B2 (en) * 2012-07-01 2019-03-12 Sharp Kabushiki Kaisha Device for signaling a long-term reference picture in a parameter set
RU2676876C2 (ru) * 2013-10-23 2019-01-11 Квэлкомм Инкорпорейтед Структуры формата файла многоуровневого видео
US9654774B2 (en) * 2013-12-12 2017-05-16 Qualcomm Incorporated POC value design for multi-layer video coding
US9854270B2 (en) * 2013-12-19 2017-12-26 Qualcomm Incorporated Device and method for scalable coding of video information
US10362304B2 (en) * 2013-12-26 2019-07-23 Zte Corporation Method and device for coding POC, method and device for decoding POC, and electronic equipment
RU2653299C2 (ru) * 2014-03-17 2018-05-07 Нокиа Текнолоджиз Ой Способ и устройство для кодирования и декодирования видеоданных

Similar Documents

Publication Publication Date Title
CN114556947B (zh) 避免多层视频码流中的冗余指示
US12081784B2 (en) Support of mixed IRAP and non-IRAP pictures within an access unit in multi-layer video bitstreams
US12069284B2 (en) Signaling of non-picture-level syntax elements at the picture level
US20220159245A1 (en) External Decoding Refresh (EDR) In Video Coding
JP2022540429A (ja) 映像符号化における参照ピクチャリサンプリング用の複数のピクチャサイズおよびコンフォーマンスウインドウの処理
US20220217383A1 (en) Indication Of One Slice Per SubPicture In Subpicture-Based Video Coding
WO2021061490A1 (en) Signaling of dpb parameters for multi-layer video bitstreams
AU2020352905A1 (en) Disallowing unused layers in multi-layer video bitstreams
US12003700B2 (en) Reference picture management in layered video coding
RU2822714C1 (ru) Поддержка смешанных снимков irar и he-irar в пределах единицы доступа в многослойных битовых видеопотоках
RU2822714C9 (ru) Поддержка смешанных снимков irar и he-irar в пределах единицы доступа в многослойных битовых видеопотоках
RU2815736C1 (ru) Поддержка смешанных снимков irap и не-irap в пределах единицы доступа в многослойных битовых потоках видео
RU2828201C2 (ru) Поддержка смешанных снимков irap и не-irap в пределах единицы доступа в многослойных битовых потоках видео
RU2819585C1 (ru) Сигнализация заголовка изображения при кодировании видео
RU2822313C1 (ru) Сигнализация заголовка изображения при кодировании видео
RU2823559C1 (ru) Отклонение неиспользуемых слоев в многослойных видеопотоках
RU2826697C1 (ru) Сигнализация синтаксических элементов на уровне без изображений на уровне изображений
RU2817618C2 (ru) Обработка множества размеров изображения и окон соответствия для передискретизации опорного изображения при кодировании видео