ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0001] В общем, настоящее раскрытие описывает методики для многослойных битовых видеопотоков при видеокодировании. Более конкретно, настоящее раскрытие гарантирует, что ненужные и/или неиспользуемые слои отклоняются в многослойном битовом потоке при видеокодировании.
УРОВЕНЬ ТЕХНИКИ
[0002] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством-получателем распаковки видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0003] Первый аспект относится к способу декодирования, реализуемому видеодекодером, содержащему прием видеодекодером битового видеопотока, включающего в себя набор параметров видео (VPS) и множество слоев, при этом каждый слой включен в по меньшей мере один набор выводимых слоев (OLS), заданный в VPS; и декодирование видеодекодером снимка из одного из множества слоев.
[0004] Данный способ предоставляет методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0005] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок включен в выводимый слой по меньшей мере одного OLS, и при этом каждый слой задан в OLS.
[0006] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает выбор выводимого слоя из по меньшей мере одного OLS для декодирования.
[0007] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает выбор снимка для декодирования из выбранного выводимого слоя.
[0008] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой во множестве слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
[0009] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что по меньшей мере один OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев.
[0010] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что по меньшей мере один OLS содержит более одного выводимого слоя.
[0011] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что для каждого из множества слоев с конкретным значением ID слоя, заданным в VPS, один из слоев в по меньшей мере одном OLS также должен иметь это конкретное значение ID слоя.
[0012] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает отображение декодированного снимка на дисплее электронного устройства.
[0013] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает прием видеодекодером второго битового видеопотока, включающего в себя второй набор параметров видео (VPS) и второе множество слоев, при этом по меньшей мере один слой не включен в по меньшей мере один набор выводимых слоев (OLS), заданный вторым VPS; и в ответ на прием принятие некоторых других корректирующих мер для обеспечения того, чтобы согласующийся битовый поток, соответствующий второму битовому видеопотоку, был принят до декодирования снимка из одного из второго множества слоев.
[0014] Второй аспект относится к способу кодирования битового видеопотока, реализуемому видеокодером. Способ включает в себя способ кодирования, реализуемый видеокодером, причем способ включает генерирование видеокодером множества слоев и набора параметров видео (VPS), задающего один или более наборов выводимых слоев (OLS), при этом видеокодер ограничен таким образом, чтобы каждый слой из множества слоев был включен в по меньшей мере один из OLS, заданных в VPS; кодирование видеокодером множества слоев и VPS в битовый видеопоток; и сохранение видеокодером битового видеопотока для передачи в видеодекодер.
[0015] Данный способ предоставляет методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0016] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый из одного или более OLS содержит один или более выводимых слоев, при этом каждый из выводимых слоев содержит один или более снимков, и при этом ни один слой не исключен из какого-либо из одного или более OLS.
[0017] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой во множестве слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
[0018] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что один из OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев.
[0019] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что для каждого из множества слоев с конкретным значением ID слоя, заданным в VPS, один из слоев в одном или более OLS также должен иметь конкретное значение идентификатора слоя.
[0020] Третий аспект относится к декодирующему устройству. Декодирующее устройство включает в себя декодирующее устройство, содержащее приемник, выполненный с возможностью приема битового видеопотока, включающего в себя набор параметров видео (VPS) и множество слоев, при этом каждый слой включен в по меньшей мере один набор выводимых слоев (OLS), заданный в VPS; память, соединенную с приемником, причем память хранит инструкции; и процессор, соединенный с памятью, и процессор выполнен с возможностью исполнения инструкций для предписания декодирующему устройству декодировать снимок из одного из множества слоев для получения декодированного снимка.
[0021] Декодирующее устройство обеспечивает методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0022] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что снимок включен в выводимый слой по меньшей мере одного OLS, и при этом каждый слой задан в OLS.
[0023] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что процессор дополнительно выполнен с возможностью выбора выводимого слоя из по меньшей мере одного OLS до декодирования снимка.
[0024] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что процессор дополнительно выполнен с возможностью выбора снимка из выводимого слоя после того, как выбран выводимый слой.
[0025] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой во множестве слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
[0026] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что по меньшей мере один OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев.
[0027] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что по меньшей мере один OLS содержит один или более выводимых слоев.
[0028] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что процессор выполнен с возможностью исполнения инструкций для дополнительного предписания декодирующему устройству принимать второй битовый видеопоток, включающий в себя второй набор параметров видео (VPS) и второе множество слоев, при этом по меньшей мере один слой не включен в по меньшей мере один набор выводимых слоев (OLS), заданный вторым VPS; и в ответ на прием второго битового видеопотока принятие некоторых других корректирующих мер для обеспечения того, что согласующийся битовый поток, соответствующий второму битовому видеопотоку, был принят до декодирования снимка из одного из второго множества слоев.
[0029] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что дисплей выполнен с возможностью отображения декодированного снимка.
[0030] Четвертый аспект относится к кодирующему устройству. Кодирующее устройство включает в себя кодирующее устройство, содержащее память, содержащую инструкции; процессор, соединенный с памятью, причем процессор выполнен с возможностью реализации инструкций для предписания кодирующему устройству генерировать множество слоев и набор параметров видео (VPS), задающий один или более наборов выводимых слоев (OLS), при этом видеокодер ограничен таким образом, чтобы каждый слой из множества слоев был включен в по меньшей мере один из OLS, заданных в VPS; кодировать множество слоев и VPS в битовый видеопоток; и передатчик, соединенный с процессором, причем передатчик выполнен с возможностью передачи битового видеопотока в видеодекодер.
[0031] Кодирующее устройство обеспечивает методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0032] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый из одного или более OLS содержит один или более выводимых слоев, и при этом каждый из выводимых слоев содержит один или более снимков.
[0033] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый слой во множестве слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
[0034] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что один из OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев.
[0035] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает, что каждый из множества слоев с конкретным значением идентификатора слоя, заданного в VPS, один из слоев в одном или более OLS также должен иметь конкретное значение ID слоя.
[0036] Пятый аспект относится к устройству кодирования/декодирования. Устройство кодирования/декодирования включает в себя устройство кодирования/декодирования, содержащее приемник, выполненный с возможностью приема снимка для кодирования или приема битового потока для декодирования; передатчик, соединенный с приемником, причем передатчик выполнен с возможностью передачи битового потока в декодер или передачи декодированного снимка на дисплей; память, соединенную с по меньшей мере одним из приемника или передатчика, причем память выполнена с возможностью хранения инструкций; и процессор, соединенный с памятью, причем процессор выполнен с возможностью исполнения инструкций, хранящихся в памяти, для осуществления любого из раскрытых в данном документе способов.
[0037] Устройство кодирования/декодирования обеспечивает методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0038] В необязательном порядке, в любом из предшествующих аспектов другой вариант реализации аспекта предусматривает дисплей, выполненный с возможностью отображения декодированного снимка.
[0039] Шестой аспект относится к системе. Система включает в себя кодер; и декодер, осуществляющий связь с кодером, при этом кодер или декодер включает в себя декодирующее устройство, кодирующее устройство или устройство кодирования/декодирования, раскрытые в настоящем документе.
[0040] Система предоставляет методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0041] Седьмой аспект относится к средству кодирования/декодирования. Средство кодирования/декодирования включает в себя средство приема, выполненное с возможностью приема снимка для кодирования или приема битового потока для декодирования; средство передачи, соединенное со средством приема, средство передачи, выполненное с возможностью передачи битового потока в средство декодирования или передачи декодированного снимка в средство отображения; средство хранения, соединенное с по меньшей мере одним из средства приема или средства передачи, средство хранения выполнено с возможностью хранения инструкций; и средство обработки, соединенное со средством хранения, средство обработки, выполненное с возможностью исполнения инструкций, хранящихся в средстве хранения, для осуществления любого из способов, раскрытых в данном документе.
[0042] Средство кодирования/декодирования обеспечивают методики, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[0043] Для ясности любой из вышеупомянутых вариантов осуществления может быть объединен с любым одним или более другими вышеупомянутыми вариантами осуществления, чтобы создать новый вариант осуществления в пределах объема настоящего раскрытия.
[0044] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0045] Для более полного понимания этого раскрытия теперь сделана ссылка на следующее краткое описание, рассматриваемое совместно с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[0046] Фиг. 1 является блок-схемой последовательности операций примерного способа кодирования/декодирования видеосигнала.
[0047] Фиг. 2 является принципиальной схемой примерной системы кодирования и декодирования (кодека) для видеокодирования.
[0048] Фиг. 3 является принципиальной схемой, иллюстрирующей примерный видеокодер.
[0049] Фиг. 4 является принципиальной схемой, иллюстрирующей примерный видеодекодер.
[0050] Фиг. 5 иллюстрирует пример многослойного кодирования для пространственной масштабируемости.
[0051] Фиг. 6 иллюстрирует пример многослойного кодирования с использованием наборов выводимых слоев (OLS).
[0052] Фиг. 7 иллюстрирует вариант осуществления битового видеопотока.
[0053] Фиг. 8 является вариантом осуществления способа декодирования кодированного битового видеопотока.
[0054] Фиг. 9 является вариантом осуществления способа кодирования кодированного битового видеопотока.
[0055] Фиг. 10 является принципиальной схемой устройства видеокодирования.
[0056] Фиг. 11 является принципиальной схемой варианта осуществления средства кодирования/декодирования.
ПОДРОБНОЕ ОПИСАНИЕ
[0057] Вначале следует понять, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества способов, известных в настоящее время или существующих. Раскрытие никоим образом не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные здесь, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.
[0058] Следующие ниже термины определены следующим образом, если они не используются в данном документе в противоположном контексте. В частности, следующие определения предназначены для дополнительной ясности настоящего раскрытия. Однако в разных контекстах термины могут описываться по-разному. Соответственно, следующие определения следует рассматривать как дополнение и не следует рассматривать как ограничение каких-либо других определений описаний, предоставленных для таких терминов в данном документе.
[0059] Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Снимок - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Снимок, который кодируется или декодируется, может называться текущим снимком для ясности обсуждения. Опорный снимок является снимком, который содержит опорные дискретные отсчеты, которые можно использовать при кодировании других снимков по ссылке в соответствии с интер-предсказанием (межкадровым (inter-prediction)) и/или межслойным предсказанием (inter-layer prediction). Список опорных снимков является списком опорных снимков, используемых для интер-предсказания и/или межслойного предсказания. Некоторые системы видеокодирования используют два списка опорных снимков, которые можно обозначить как первый список опорных снимков и нулевой список опорных снимков. Структура списков опорных снимков является адресуемой синтаксической структурой, которая содержит множество списков опорных снимков. Интер-предсказание является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, который отличается от текущего снимка, где опорный снимок и текущий снимок находятся в одном слое. Запись структуры списка опорных снимков является адресуемым местом в структуре списка опорных снимков, которое указывает опорный снимок, связанный со списком опорных снимков. Заголовок сегмента - это часть кодированного сегмента, содержащая элементы данных, относящиеся ко всем видеоданным в клетке, представленной в сегменте. Набор параметров снимка (PPS) представляет собой набор параметров, который содержит данные, относящиеся ко всему снимку. Более конкретно, PPS - это синтаксическая структура, содержащая синтаксические элементы, которые применяются к нулевому количеству или более целым кодированным снимкам, как определено синтаксическим элементом, найденным в каждом заголовке снимка. Набор параметров последовательности (SPS) - это набор параметров, который содержит данные, относящиеся к последовательности. Единица (единичный блок) доступа (AU) представляет собой набор из одного или более кодированных снимков, связанных с одним и тем же временем отображения (например, одним и тем же порядковым номером снимка) для вывода из буфера декодированных снимков (DPB) (например, для отображения пользователю). Разделитель единиц доступа (AUD) - это указатель или структура данных, используемая для обозначения начала AU или границы между AU. Декодированная видеопоследовательность - это последовательность снимков, которые были восстановлены декодером при подготовке к отображению пользователю.
[0060] Единица слоя сетевой абстракции (NAL) представляет собой синтаксическую структуру, содержащую данные в форме полезной нагрузки необработанной байтовой последовательности (RBSP), указание типа данных и перемежающиеся по желанию байтами предотвращения эмуляции. Единица NAL слоя видеокодирования (VCL) представляет собой единицу NAL, кодированную для содержания видеоданных, таких как кодированный сегмент снимка. Единица NAL не-VCL представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на согласованность или другие операции. Слой представляет собой набор единиц NAL VCL, которые совместно используют заданную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.), и связанных единиц NAL не-VCL. Единицы NAL VCL слоя могут совместно использовать конкретное значение идентификатора слоя заголовка единицы NAL (nuh_layer_id). Кодированный снимок представляет собой кодированное представление снимка, содержащего единицы NAL VCL с конкретным значением идентификатора слоя заголовка единицы NAL (nuh_layer_id) в единице доступа (AU) и содержащего все единицы дерева кодирования (CTU) снимка. Декодированный снимок представляет собой снимок, созданный посредством применения процесса декодирования к кодированному снимку.
[0061] Набор выводимых слоев (OLS) - это набор слоев, для которых один или более слоев заданы в качестве выводимого(ых) слоя(ев). Выводимый слой представляет собой слой, предназначенный для вывода (например, на дисплей). Нулевой (0-й) OLS - это OLS, который содержит только самый нижний слой (слой с самым нижним идентификатором слоя) и, следовательно, содержит только выводимый слой. Набор параметров видео (VPS) - это единичный блок данных, содержащий параметры, относящиеся ко всему видео. Межслойное предсказание - это механизм кодирования текущего снимка на текущем слое посредством ссылки на опорный снимок в опорном слое, где текущий снимок и опорный снимок включены в одну и ту же AU, а опорный слой включает в себя более низкий nuh_layer_id, чем текущий слой.
[0062] В настоящем документе используются следующие аббревиатуры: Блок дерева кодирования (CTB), Единичный блок (единица) дерева кодирования (CTU), Единичный блок кодирования (CU), Кодированная видеопоследовательность (CVS), Объединенная группа экспертов по видео (JVET), Набор клеток с ограничением движения (MCTS), Максимальная единица передачи (MTU), Слой сетевой абстракции (NAL), Порядковый номер снимка (POC), Набор параметров снимка (PPS), Полезная нагрузка необработанной байтовой последовательности (RBSP), Набор параметров последовательности (SPS), Универсальное видеокодирование (VVC) и Рабочий проект (WD).
[0063] Фиг. 1 является блок-схемой примерного рабочего способа 100 кодирования/декодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования обычно отражает процесс кодирования, чтобы декодер мог последовательно восстанавливать видеосигнал.
[0064] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например видеокамерой, и кодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудио составляющую, так и видео составляющую. Видео составляющая содержит серию кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или дискретными отсчетами яркости), и цвета, который упоминается как компоненты цветности (или дискретные отсчеты цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[0065] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при Высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единицы дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единицы CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.
[0066] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться интер-предсказание и/или интра-предсказание. Интер-предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как стол, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, стол описывается один раз, и соседние кадры могут обращаться к опорному кадру. Механизмы сопоставления с образцом могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в нескольких кадрах. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, интер-предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[0067] Интра-предсказание кодирует блоки в общем кадре. Интра-предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зеленого цвета на части дерева имеет тенденцию располагаться рядом с аналогичными участками зеленого цвета. Интра-предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим прямого течения (Direct Current (DC)). Направленные режимы указывают, что текущий блок подобен/совпадает с дискретными отсчетами соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскости) может быть интерполирована на основе соседних блоков на краях строки. Фактически, планарный режим указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок подобен/совпадает со средним значением, связанным с дискретными отсчетами всех соседних блоков, связанных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки интра-предсказания могут представлять блоки изображения как различные значения режима реляционного предсказания вместо фактических значений. Кроме того, блоки интер-предсказания могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые отличия хранятся в остаточных блоках. К остаточным блокам могут применяться преобразования для дальнейшего сжатия файла.
[0068] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Обсуждаемое выше предсказание на основе блоков может привести к созданию изображений с блочностью в декодере. Кроме того, схема предсказания на основе блоков может кодировать блок, а затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры с адаптивным смещением дискретного отсчета (SAO) к блокам/кадрам. Эти фильтры уменьшают такие артефакты блокировки, чтобы можно было точно восстановить кодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.
[0069] После того, как видеосигнал разделен, сжат и отфильтрован, полученные данные кодируются в битовом потоке на этапе 109. Битовый поток включает в себя данные, описанные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разбиения, данные предсказания, остаточные блоки и различные флаги, предоставляющие инструкции кодирования для декодера. Битовый поток может храниться в памяти для передачи декодеру по запросу. Битовый поток также может быть передан широковещательным и/или многоадресным образом во множество декодеров. Создание битового потока - это итеративный процесс. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на Фиг. 1 представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса видеокодирования конкретным порядком.
[0070] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разбиений для кадров на этапе 111. Разбиение должно соответствовать результатам разбиения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многократный выбор вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении(ях). Для сигнализации конкретного выбора может использоваться большое количество бинарных элементов (бинов). В данном контексте бинарный элемент - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые варианты, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых вариантов (например, один бинарный элемент для двух вариантов, два бинарных элемента для трех-четырех вариантов и т.д.) Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого поднабора допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых вариантов аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.
[0071] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для генерации остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разбиением. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, сгенерированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разбиения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.
[0072] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[0073] Фиг. 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 буфера декодированных снимков. Теперь будут описаны эти компоненты.
[0074] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в единицы кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) цветоразности красного (Cr) и блок(-и) цветоразности синего (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки интра-режима, компонент 227 анализа управления фильтрами и компонент 221 оценки движения для сжатия.
[0075] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разбиением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Данные управления также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[0076] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для интер-предсказания. Кадр или сегмент разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.
[0077] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими показателями разности. HEVC использует несколько кодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть кодирован как единица предсказания (PU), содержащая данные предсказания, и/или единицу преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PU и TU, используя анализ скорости к искажению в качестве части процесса оптимизации скорости к искажению. Например, компонент 221 оценки движения может определять несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорости к искажению. Наилучшие характеристики соотношения скорости к искажению уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).
[0078] В некоторых примерах система 200 кодека может вычислять значения для положений суб-целочисленных пикселей опорных снимков, сохраненных в компоненте 223 буфера декодированных снимков. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного снимка. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с интер-кодированием посредством сравнения положения PU с положением блока предсказания опорного снимка. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для форматирования заголовка и компонент 231 CABAC для кодирования и движения в компонент 219 компенсации движения.
[0079] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок посредством вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.
[0080] Разделенный видеосигнал 201 также отправляется компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы интер-предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки интра-режима определяет режим интра-предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки интра-режима выбирает соответствующий режим интра-предсказания для кодирования текущего блока из множества проверенных режимов интра-предсказания. Выбранные режимы интра-предсказания затем направляются в компонент 231 форматирования заголовка и CABAC для кодирования.
[0081] Например, компонент 215 оценки интра-режима вычисляет значения скорости к искажению, используя анализ скорости к искажению для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скорости к искажению среди тестированных режимов. Анализ соотношения скорости к искажению обычно определяет величину искажения (или ошибки) между кодированным блоком и исходным не кодированным блоком, который был кодирован для создания кодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания кодированного блока. Компонент 215 оценки интра-режима вычисляет отношения скорости к искажению для различных кодированных блоков, чтобы определить, какой режим интра-предсказания показывает наилучшее значение скорости к искажению для блока. Кроме того, компонент 215 оценки интра-режима может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорости к искажению (RDO).
[0082] Компонент 217 интра-предсказания может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки интра-режима, когда он реализован в кодере, или считывать остаточный блок из битового потока, когда реализован в декодере. Остаточный блок включает в себя разность в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут работать как с компонентами яркости, так и с компонентами цветности.
[0083] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения коэффициентов остаточного преобразования. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение масштабного коэффициента к остаточной информации, так что разная частотная информация квантуется с разной степенью детализации, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения битовой скорости (битрейта). Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена посредством регулировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке.
[0084] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[0085] Компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 интра-предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на Фиг. 2, компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.
[0086] При работе в качестве кодера отфильтрованный блок восстановленного изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных снимков для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных снимков сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей в качестве части выходного видеосигнала. Компонент 223 буфера декодированных снимков может быть любым устройством памяти, способным хранить блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[0087] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть кодированы с использованием энтропийного кодирования. Например, информация может быть кодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования кодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.
[0088] Фиг. 3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Разделенный видеосигнал 301 затем сжимается и кодируется в битовый поток компонентами кодера 300.
[0089] В частности, разделенный видеосигнал 301 пересылается в компонент 317 интра-предсказания для интра-предсказания. Компонент 317 интра-предсказания может быть по существу аналогичным компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для интер-предсказания на основе опорных блоков в компоненте 323 буфера декодированных снимков. Компонент 321 компенсации движения может быть по существу аналогичным компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 интра-предсказания и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 масштабирования и квантования преобразования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе со связанными данными управления) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[0090] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Контурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтрами и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как обсуждалось в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных снимков для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных снимков может быть по существу аналогичен компоненту 223 буфера декодированных снимков.
[0091] Фиг. 4 - это блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 рабочего способа 100. способа 400. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[0092] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы предоставить контекст для интерпретации дополнительных данных, кодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[0093] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 интра-предсказания для восстановления в блоки изображения на основе операций интра-предсказания. Компонент 417 интра-предсказания может быть аналогичен компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. В частности, компонент 417 интра-предсказания использует режимы предсказания, чтобы найти опорный блок в кадре, и применяет остаточный блок к результату для восстановления блоков изображения с интра-предсказанием. Восстановленные блоки изображения с интра-предсказанием и/или остаточные блоки и соответствующие данные интер-предсказания пересылаются в компонент 423 буфера декодированных снимков через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных снимков и компонент 225 внутриконтурных фильтров соответственно. Компонент 425 внутриконтурных фильтров фильтрует блоки восстановленных изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных снимков. Восстановленные блоки изображения из компонента 423 буфера декодированных снимков пересылаются в компонент 421 компенсации движения для интер-предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерации блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть отправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных снимков. Компонент 423 буфера декодированных снимков продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть преобразованы в кадры через информацию о разбиении. Такие кадры также можно размещать последовательно. Последовательность выводится на дисплей как восстановленный выходной видеосигнал.
[0094] Принимая во внимание вышеизложенное, методики сжатия видео выполняют пространственное (внутри снимка (intra_picture)) предсказание и/или временное (между снимками (inter-picture)) предсказание для уменьшения или устранения избыточности, присущей видеопоследовательностям. Для видеокодирования на основе блоков видеосегмент (то есть видеоснимок или часть видеоснимка) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видеоблоки в интра-кодированном (I) сегменте снимка кодируются с использованием пространственного предсказания относительно опорных дискретных отсчетов в соседних блоках того же снимка. Видеоблоки в интер-кодированном (P или B) сегменте снимка могут использовать пространственное предсказание относительно опорных дискретных отсчетов в соседних блоках в том же снимке или временное предсказание относительно опорных дискретных отсчетов в других опорных снимках. Снимки могут упоминаться как кадры, а опорные изображения могут упоминаться как опорные кадры. POC представляет собой переменную, связанную с каждым снимком, которая однозначно идентифицирует связанный снимок среди всех снимков в видеопоследовательности кодированного слоя (CLVS), указывает, когда соответствующий снимок должен быть выведен из DPB, и указывает позицию связанного снимка в порядке вывода относительно позиций порядка вывода других снимков в том же CLVS, которые должны выводиться из DPB. Флаг - это переменная или однобитовый синтаксический элемент, который может принимать одно из двух возможных значений: 0 и 1.
[0095] Пространственное или временное предсказание приводит к блоку предсказания для блока, который должен быть кодирован. Остаточные данные представляют собой разность в пикселях между исходным кодируемым блоком и блоком предсказания. Интер-кодированный блок кодируется в соответствии с вектором движения, который указывает на блок опорных дискретных отсчетов, формирующих блок предсказания, и остаточными данными, указывающими разность между кодированным блоком и блоком предсказания. Интра-кодированный блок кодируется согласно режиму интра-кодирования и остаточным данным. Для дальнейшего сжатия остаточные данные могут быть преобразованы из пиксельной области в область преобразования, в результате чего получаются остаточные коэффициенты преобразования, которые затем можно квантовать. Квантованные коэффициенты преобразования, первоначально размещенные в двумерном массиве, могут быть просканированы для создания одномерного вектора коэффициентов преобразования, и может быть применено энтропийное кодирование для достижения еще большего сжатия.
[0096] Сжатие изображений и видео быстро развивалось, что привело к появлению различных стандартов кодирования. К таким стандартам видеокодирования относятся 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).
[0097] Существует также новый стандарт видеокодирования под названием Универсальное видеокодирование (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).
[0098] Масштабируемость в видеокодировании обычно поддерживается за счет использования методик многослойного кодирования. Многослойный битовый поток содержит базовый слой (BL) и один или более слоев расширения (EL). Пример масштабируемости включает в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (SNR), масштабируемость с несколькими представлениями и т.д. Когда используется технология многослойного кодирования, снимок или его часть могут быть кодированы (1) без использования опорного снимка, т.е. с использованием интра-предсказания; (2) посредством обращения к опорным снимкам, которые находятся на том же слое, т.е. с использованием интер-предсказания; или (3) посредством обращения к опорным снимкам, которые находятся на другом(их) слое(ях), т.е. с использованием межслойного предсказания. Опорный снимок, используемое для межслойного предсказания текущего снимка, называется межслойным опорным снимком (ILRP).
[00099] Фиг. 5 является принципиальной схемой, иллюстрирующей пример предсказания 500 на основе слоев, например, как оно выполняется для определения векторов движения (MV) на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или компоненте 421 компенсации движения. Предсказание 500 на основе слоев совместимо с однонаправленным интер-предсказанием и/или двунаправленным интер-предсказанием, но также выполняется между снимками в разных слоях.
[00100] Предсказание 500 на основе слоев применяется между снимками 511, 512, 513 и 514 и снимками 515, 516, 517 и 518 в разных слоях. В показанном примере снимки 511, 512, 513 и 514 являются частью слоя N+1 532, а снимки 515, 516, 517 и 518 являются частью слоя N 531. Слой, такой как слой N 531 и/или слой N+1 532, является группой снимков, которые все связаны с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности, так далее. В показанном примере слой N+1 532 связан с большим размером изображения, чем слой N 531. Соответственно, снимки 511, 512, 513 и 514 в слое N+1 532 имеют больший размер снимка (например, большую высоту и ширину и, следовательно, больше дискретных отсчетов), чем снимки 515, 516, 517 и 518 в слое N 531 в этом примере. Однако такие снимки могут быть разделены между слоем N+1 532 и слоем N 531 по другим характеристикам. Хотя показаны только два слоя, слой N+1 532 и слой N 531, набор снимков может быть разделен на любое количество слоев на основе связанных характеристик. Слой N+1 532 и слой N 531 также могут обозначаться идентификатором слоя (ID). Идентификатор слоя - это элемент данных, который связан со снимком и указывает, что снимок является частью указанного слоя. Соответственно, каждый снимок 511-518 может быть связано с соответствующим идентификатором слоя, чтобы указать, какой слой N+1 532 или слой N 531 включает в себя соответствующий снимок.
[00101] Снимки 511-518 в разных слоях 531-532 приспособлены для отображения в альтернативном варианте. Таким образом, снимки 511-518 в разных слоях 531-532 могут совместно использовать один и тот же временной идентификатор (ID) и могут быть включены в одну и ту же AU. Используемый здесь термин AU является набором из одного или более кодированных снимков, связанных с одним и тем же временем отображения для вывода из DPB. Например, декодер может декодировать и отображать снимок 515 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать снимок 511 в текущее время отображения, если требуется больший снимок. Таким образом, снимки 511-514 на более высоком слое N+1 532 содержат по существу те же данные изображения, что и соответствующие снимки 515-518 на более низком слое N 531 (несмотря на разницу в размере снимка). В частности, снимок 511 содержит по существу те же данные изображения, что и снимок 515, снимок 512 содержит по существу те же данные изображения, что и снимок 516, и т.д.
[00102] Снимки 511-518 могут быть кодированы посредством ссылки на другие снимки 511-518 в том же слое N 531 или N+1 532. Кодирование снимка со ссылкой на другой снимок на том же слое приводит к интер-предсказанию 523, которое является совместимым однонаправленным интер-предсказанием и/или двунаправленным интер-предсказанием. Интер-предсказание 523 изображено сплошными стрелками. Например, снимок 513 может быть кодирован с использованием интер-предсказания 523 с использованием одного или двух из снимков 511, 512 и/или 514 в слое N+1 532 в качестве опорной ссылки, где один снимок используется для однонаправленного интер-предсказания и/или два снимка являются опорными для двунаправленного интер-предсказания. Кроме того, снимок 517 может быть кодирован с использованием интер-предсказания 523 с использованием одного или двух из снимков 515, 516 и/или 518 в слое N 531 в качестве опорного, где один снимок используется для однонаправленного интер-предсказания и/или два снимка являются опорными для двунаправленного интер-предсказания. Когда снимок используется в качестве опорного для другого снимка в том же слое при выполнении интер-предсказания 523, этот снимок может называться опорным снимком. Например, снимок 512 может быть опорным снимком, используемым для кодирования снимка 513 в соответствии с интер-предсказанием 523. Интер-предсказание 523 также может называться внутрислойным предсказанием в многослойном контексте. Таким образом, интер-предсказание 523 является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, которые отличаются от текущего снимка, где опорный снимок и текущий снимок находятся в одном слое.
[00103] Снимки 511-518 также могут быть кодированы посредством ссылки на другие снимки 511-518 в других слоях. Этот процесс известен как межслойное предсказание 521 и изображен пунктирными стрелками. Межслойное предсказание 521 является механизмом кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, где текущий снимок и опорный снимок находятся в разных слоях и, следовательно, имеют разные идентификаторы слоя. Например, снимок в нижнем слое N 531 может использоваться в качестве опорного снимка для кодирования соответствующего снимка на более высоком слое N+1 532. В качестве конкретного примера снимок 511 может быть кодирован со ссылкой на снимок 515 в соответствии с межслойным предсказанием 521. В таком случае снимок 515 используется как межслойный опорный снимок. Межслойный опорный снимок является опорным снимком, используемым для межслойного предсказания 521. В большинстве случаев межслойное предсказание 521 ограничено таким образом, что текущий снимок, такое как снимок 511, может использовать только межслойный опорный снимок (снимки), которые включены в одну и ту же AU и находятся на более низком слое, например фото 515. Когда доступно множество слоев (например, более двух), межслойное предсказание 521 может кодировать/декодировать текущий снимок на основе множества межслойных опорных снимков на более низких уровнях, чем текущий снимок.
[00104] Видеокодер может использовать предсказание 500 на основе слоев для кодирования снимков 511-518 посредством множества различных комбинаций и/или перестановок интер-предсказания 523 и межслойного предсказания 521. Например, снимок 515 может быть кодирован в соответствии с интра-предсказанием. Затем снимки 516-518 могут быть кодированы в соответствии с интер-предсказанием 523 с использованием снимка 515 в качестве опорного снимка. Кроме того, снимок 511 может быть кодирован в соответствии с межслойным предсказанием 521 с использованием снимка 515 в качестве межслойного опорного снимка. Затем снимки 511-518 могут быть кодированы в соответствии с интер-предсказанием 523 с использованием снимка 511 в качестве опорного снимка. Таким образом, опорный снимок может служить как однослойным опорным снимком, так и межслойным опорным снимком для различных механизмов кодирования. Посредством кодирования снимков более высокого слоя N+1 532 на основе снимков более низкого слоя N 531, более верхний слой N+1 532 может избежать использования интра-предсказания, которое имеет гораздо более низкую эффективность кодирования, чем интер-предсказание 523 и межслойное предсказание 521. Как таковая, низкая эффективность кодирования интра-предсказания может быть ограничена снимками самого маленького/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Снимки, используемые в качестве опорных снимков и/или межслойных опорных снимков, могут быть указаны в записях списка(ов) опорных снимков, содержащихся в структуре списка опорных снимков.
[00105] Каждая AU 506 на Фиг. 5 может содержать одно или несколько снимков. Например, одна AU 506 может содержать снимки 511 и 515. Другая AU 506 может содержать снимки 512 и 516. Действительно, каждая AU 506 является набором из одного или более кодированных снимков, связанных с одним и тем же временем отображения (например, с одним и тем же временным идентификатором) для вывода из буфера декодированных снимков (DPB) (например, для отображения пользователю). Каждый AUD 508 является указателем или структурой данных, используемой для указания начала AU (например, AU 508) или границы между AU.
[00106] Предшествующие семейства видеокодирования H.26x обеспечивали поддержку масштабируемости в отдельном(ых) профиле(ях) из профиля(ей) для однослойного кодирования. Масштабируемое видеокодирование (SVC) - это масштабируемое расширение AVC/H.264, обеспечивающее поддержку пространственной, временной масштабируемости и масштабируемости качества. Для SVC в каждом макроблоке (MB) в снимках EL сигнализируется флаг, чтобы указать, предсказан ли MB EL с использованием совмещенного блока из нижнего слоя. Предсказание из совмещенного блока может включать в себя текстуру, векторы движения и/или режимы кодирования. Реализации SVC не могут напрямую повторно использовать немодифицированные реализации H.264/AVC в своем осуществлении. Синтаксис макроблока SVC EL и процесс декодирования отличаются от синтаксиса и процесса декодирования H.264/AVC.
[00107] Масштабируемое 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)) посредством установки значения опорного индекса для ссылки на межслойный опорный снимок(-ки) в списке(-ах) опорных снимков.
[00108] Примечательно, что функции повторной дискретизации опорного снимка и пространственного масштабирования требуют повторной дискретизации опорного снимка или его части. Повторная дискретизация опорного снимка (RPR) может быть реализована либо на уровне снимка, либо на уровне блока кодирования. Однако, когда RPR упоминается как функция кодирования, это функция для однослойного кодирования. Даже в этом случае возможно или даже предпочтительно с точки зрения разработки кодека использовать один и тот же фильтр повторной дискретизации как для функции RPR однослойного кодирования, так и для функции пространственной масштабируемости для многослойного кодирования.
[00109] Фиг. 6 иллюстрирует пример предсказания 600 на основе слоев с использованием наборов выводимых слоев (OLS), например, выполняемого для определения MV на этапе 105 сжатия блока, этапе 113 декодирования блока, компоненте 221 оценки движения, компоненте 219 компенсации движения, компоненте 321 компенсации движения и/или компоненте 421 компенсации движения. Предсказание 500 на основе слоев совместимо с однонаправленным интер-предсказанием и/или двунаправленным интер-предсказанием, но также выполняется между снимками в разных слоях. Предсказание на основе слоев с Фиг. 6 аналогичен показанному на Фиг. 5. Поэтому для краткости полное описание предсказания на основе слоев не повторяется.
[00110] Некоторые из слоев кодированной видеопоследовательности (CVS) 690 на Фиг. 6 включены в OLS. OLS - это набор слоев, для которых один или более слоев заданы в качестве выводимых слоев. Выводимый слой - это слой OLS, который выводится. На Фиг. 6 показаны три различных OLS, а именно OLS 1, OLS 2 и OLS 3. Как показано, OLS 1 включает в себя слой N 631 и слой N+1 632. OLS 2 включает в себя слой N 631, слой N+1 632, слой N+2 633 и слой N+1 634. OLS 3 включает в себя слой N 631, слой N+1 632 и слой N+2 633. Несмотря на то, что показаны три OLS, в практических приложениях может использоваться разное количество OLS.
[00111] Каждый из различных OLS может содержать любое количество слоев. Различные OLS генерируются с целью согласования возможностей кодирования различных устройств, имеющих различные возможности кодирования. Например, OLS 1, который содержит только два слоя, может быть создан для работы с мобильным телефоном с относительно ограниченными возможностями кодирования. С другой стороны, OLS 2, который содержит четыре слоя, может быть создан для работы с телевизором с большим экраном, который способен декодировать верхние слои, чем мобильный телефон. OLS 3, который содержит три слоя, может быть создан для работы с персональным компьютером, портативным компьютером или планшетным компьютером, которые могут декодировать верхние слои, чем мобильный телефон, но не могут декодировать самые верхние слои, такие как телевизор с большим экраном.
[00112] Все слои на Фиг. 6 могут быть независимы друг от друга. То есть каждый слой может быть кодирован без использования межслойного предсказания (ILP). В этом случае слои называются слоями одновременной передачи. Один или более слоев на Фиг. 6 также могут быть кодированы с использованием ILP. О том, являются ли слои слоями одновременной передачи или некоторые из слоев кодированы с использованием ILP, сигнализирует флаг в наборе параметров видео (VPS), который будет более подробно обсуждаться ниже. Когда некоторые слои используют ILP, отношения зависимости слоев между слоями также сигнализируются в VPS.
[00113] В одном варианте осуществления, когда слои являются слоями одновременной передачи, для декодирования и вывода выбирается только один слой. В одном варианте осуществления, когда некоторые слои используют ILP, все слои (например, весь битовый поток) задаются для декодирования, и конкретные слои среди слоев задаются как выводимые слои. Выводимый слой или слои могут быть, например, 1) только самым верхним слоем, 2) всеми слоями или 3) самым верхним слоем плюс набор указанных нижних слоев. Например, когда самый верхний слой плюс набор указанных нижних слоев назначаются для вывода посредством флага в VPS, слой N+3 634 (который является самым верхним слоем) и слои N 631 и N+1 632 (которые являются нижними слоями) из OLS 2 выводятся.
[00114] Все еще ссылаясь на Фиг. 6, некоторые слои не включены ни в один из OLS. Например, слой N+4 635 не содержится ни в одном из OLS 1, OLS 2 и OLS 3. Такие слои называются неиспользуемыми слоями. К сожалению, SHVC и MV-HEVC позволяют включать такие неиспользуемые слои в многослойные битовые видеопотоки, что приводит к излишней нагрузке на ресурсы кодирования и снижению эффективности кодирования.
[00115] В данном документе раскрыты способы, которые отклоняют неиспользуемые слои в многослойных битовых видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[00116] Фиг. 7 иллюстрирует вариант осуществления битового видеопотока 700. В данном контексте битовый видеопоток 700 также может называться кодированным битовым видеопотоком, битовым потоком или различными вариантами этого. Как показано на Фиг. 7, битовый поток 700 содержит по меньшей мере одна единицу снимка (PU) 701. Хотя три из PU 701 показаны на Фиг. 7, различное количество PU 701 может присутствовать в битовом потоке 700 в практических вариантах применения. Каждая PU 701 представляет собой набор единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно один кодированный снимок (например, снимок 714).
[00117] В одном варианте осуществления каждая PU 701 содержит одно или более из следующего: информацию о возможностях декодирования (DCI) 702, набор параметров видео (VPS) 704, набор параметров последовательности (SPS) 706, набор параметров снимка (PPS) 708, заголовок снимка (PH) 712 и снимок 714. Каждое из DCI 702, VPS 704, SPS 706 и PPS 708 в общем случае может называться набором параметров. В одном варианте осуществления другие наборы параметров, не показанные на Фиг. 7, также могут быть включены в битовый поток 700, такой как, например, набор параметров адаптации (APS), который представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевому количеству или более сегментам, как определено нулевым количеством или более синтаксическими элементами, обнаруженными в заголовках сегментов.
[00118] DCI 702, которая также может называться набором параметров декодирования (DPS) или набором параметров декодера, представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всему битовому потоку. DCI 702 включает в себя параметры, которые остаются постоянными в течение времени жизни битового видеопотока (например, битового потока 700), что может быть преобразовано во время жизни сеанса. DCI 702 может включать в себя информацию о профиле, уровне и подпрофиле для определения точки взаимодействия максимальной сложности, которая гарантированно никогда не будет превышена, даже если в сеансе происходит сращивание видеопоследовательностей. Кроме того, она в необязательном порядке включает в себя флаги ограничения, которые указывают, что битовый видеопоток будет ограничен в использовании конкретных функций, как указано значениями этих флагов. При этом битовый поток может быть помечен как не использующий конкретные инструменты, что позволяет, среди прочего, распределять ресурсы в реализации декодера. Как и все наборы параметров, DCI 702 присутствует при первой ссылке к ней и на нее ссылается самый первый снимок в видеопоследовательности, подразумевая, что она должна быть отправлена среди первых единиц NAL в битовом потоке. Хотя в битовом потоке могут находиться несколько DCI 702, значение синтаксических элементов в них не может быть несогласованным при обращении к ним.
[00119] VPS 704 включает в себя зависимость декодирования или информацию для построения набора опорных снимков слоев улучшения. VPS 704 обеспечивает общую перспективу или представление масштабируемой последовательности, включая типы предоставляемых рабочих точек, профиль, ярус и уровень рабочих точек, и некоторые другие высокоуровневые свойства битового потока, которые можно использовать как основу для согласования сеанса и выбора контента и т.д.
[00120] В одном варианте осуществления, когда указано, что некоторые из слоев используют ILP, VPS 704 указывает, что общее количество OLS, заданное в VPS, равно количеству слоев, указывает, что i-й OLS включает в себя слои с индексами слоя от 0 до i, включительно, и указывает, что для каждого OLS выводится только самый верхний слой в OLS.
[00121] В одном варианте осуществления VPS 704 включает в себя синтаксис и семантику, соответствующие OLS в битовом видеопотоке и/или CLVS. Следующий синтаксис и семантика, соответствующие VPS 704, могут использоваться для реализации раскрытых в данном документе вариантов осуществления.
[00122] Синтаксис для VPS 704 может быть следующим.
[00123] Семантика для VPS 704 может быть следующей. В одном варианте осуществления VPS 704 включает в себя один или более флагов и параметров, указанных ниже.
[00124] Полезная нагрузка необработанной байтовой последовательности (RBSP) VPS должна быть доступна для процесса декодирования до того, как на нее будет сделана ссылка, она должна быть включена по меньшей мере в одну единицу доступа с TemporalId, равным 0, или предоставлена через внешние средства, а единица NAL VPS, содержащая RBSP VPS, должна иметь nuh_layer_id, равный vps_layer_id[0]. nuh_layer_id задает идентификатор слоя, которому принадлежит единица NAL VCL, или идентификатор слоя, к которому применяется единица NAL не-VCL. Значение nuh_layer_id должно находиться в диапазоне от 0 до 55, включительно. TemporalId - это идентификатор, используемый для уникальной идентификации конкретной единицы NAL относительно других единиц NAL. Значение TemporalId должно быть одинаковым для всех единиц VCL NAL в AU. Значение TemporalId кодированного снимка, PU или AU является значением TemporalId единиц NAL VCL кодированного снимка, PU или AU.
[00125] Все единицы NAL VPS с конкретным значением vps_video_parameter_set_id в CVS должны иметь одинаковое содержимое. vps_video_parameter_set_id предоставляет идентификатор VPS для ссылки другими синтаксическими элементами. vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждом CVS, относящемся к VPS. vps_max_sub_layers_minus1 плюс 1 задает максимальное количество временных подслоев, которые могут присутствовать в каждом CVS, относящемся к VPS. Значение vps_max_sub_layers_minus1 должно находиться в диапазоне от 0 до 6, включительно.
[00126] vps_all_independent_layers_flag, равный 1, задает, что все слои в CVS кодируются независимо без использования межслойного предсказания. vps_all_independent_layers_flag, равный 0, указывает, что один или более слоев в CVS могут использовать межслойное предсказание. Если он отсутствует, предполагается, что значение vps_all_independent_layers_flag равно 1. Когда vps_all_independent_layers_flag равен 1, предполагается, что значение vps_independent_layer_flag[i] равно 1. Когда vps_all_independent_layers_flag равен 0, предполагается, что значение vps_independent_layer_flag[0] равно 1.
[00127] vps_layer_id[i] указывает значение nuh_layer_id i-го слоя. Для любых двух неотрицательных целых значений m и n, когда m меньше n, значение vps_layer_id[m] должно быть меньше, чем vps_layer_id[n]. vps_independent_layer_flag[i], равный 1, указывает, что слой с индексом i не использует межслойное предсказание. vps_independent_layer_flag[i], равный 0, указывает, что слой с индексом i может использовать межслойное предсказание, а vps_layer_dependency_flag[i] присутствует в VPS. Если он отсутствует, предполагается, что значение vps_independent_layer_flag[i] равно 1.
[00128] vps_direct_dependency_flag[i][j], равный 0, указывает, что слой с индексом j не является непосредственным опорным слоем для слоя с индексом i. vps_direct_dependency_flag [i][j], равный 1, указывает, что слой с индексом j является непосредственным опорным слоем для слоя с индексом i. Когда vps_direct_dependency_flag[i][j] отсутствует для i и j в диапазоне от 0 до vps_max_layers_minus1, включительно, предполагается, что он равен 0.
[00129] Переменная DirectDependentLayerIdx[i][j], задающая j-й непосредственно зависимый слой от i-го слоя, выводится следующим образом.
если(i=1; i < vps_max_layers_minus1; i++)
если(!vps_independent_layer_flag[i])
если(j=i, k=0; j >= 0; j- -)
если(vps_direct_dependency_flag[i][j])
DirectDependentLayerIdx[i][k++]=j
[00130] Переменная GeneralLayerIdx[i], задающая индекс слоя у слоя с nuh_layer_id, равным vps_layer_id[i], выводится следующим образом.
если(i=0; i <= vps_max_layers_minus1; i++)
GeneralLayerIdx [vps_layer_id [i]]=i
[00131] Значение each_layer_is_an_ols_flag, равное 1, задает, что каждый набор выводимых слоев содержит только один слой, и каждый слой в битовом потоке сам по себе является набором выводимых слоев, причем единственный включенный слой является единственным выводимым слоем. each_layer_is_an_ols_flag равный 0 означает, что набор выводимых слоев может содержать более одного слоя. Если vps_max_layers_minus1 равен 0, предполагается, что значение значения each_layer_is_an_ols_flag равно 1. В противном случае, когда vps_all_independent_layers_flag равен 0, предполагается, что значение each_layer_is_an_ols_flag равно 0.
[00132] ols_mode_idc, равный 0, указывает, что общее количество OLS, заданных VPS, равно vps_max_layers_minus1+1, i-й OLS включает в себя слои с индексами слоев от 0 до i, включительно, и для каждого OLS только самый верхний слой в OLS выводится. ols_mode_idc, равный 1, указывает, что общее количество OLS, заданных VPS, равно vps_max_layers_minus1+1, i-й OLS включает в себя слои с индексами слоев от 0 до i, включительно, и для каждого OLS все слои в OLS являются выводимыми. Значение ols_mode_idc, равное 2, указывает, что общее количество OLS, указанное VPS, передается в явном виде, и для каждого OLS выводятся самый верхний слой и явно указанный набор нижних слоев в OLS. Значение ols_mode_idc должно находиться в диапазоне от 0 до 2, включительно. Значение 3 ols_mode_idc зарезервировано для будущего использования ITU-T | ISO/IEC. Когда vps_all_independent_layers_flag равен 1, а each_layer_is_an_ols_flag равен 0, предполагается, что значение ols_mode_idc равно 2.
[00133] num_output_layer_sets_minus1 плюс 1 указывает общее количество OLS, указанное VPS, когда ols_mode_idc равно 2.
[00134] Переменная TotalNumOlss, указывающая общее количество OLS, указанных VPS, выводится следующим образом:
если(vps_max_layers_minus1==0)
TotalNumOlss=1
иначе если(each_layer_is_an_ols_flag || ols_mode_idc == 0 | | ols_mode_idc== 1)
TotalNumOlss=vps_max_layers_minus1+1
иначе если(ols_mode_idc== 2)
TotalNumOlss=num_output_layer_sets_minus1+1
[00135] layer_included_flag[i][j] указывает, включен ли j-й слой (т. е. слой с nuh_layer_id, равным vps_layer_id[j]) в i-й OLS, когда ols_mode_idc равен 2. layer_included_flag[i][j] значение, равное 1, указывает, что j-й слой включен в i-й OLS. layer_included_flag[i][j], равный 0, указывает, что j-й слой не включен в i-й OLS.
[00136] Переменная NumLayersInOls[i], задающая количество слоев в i-м OLS, и переменная LayerIdInOls[i][j], задающая значение nuh_layer_id j-го слоя в i-м OLS, выводятся следующим образом.
NumLayersInOls[0]=1
LayerIdInOls[0][0]=vps_layer_id[0]
если(i=1, i < TotalNumOlss; i++) {
если(each_layer_is_an_ols_flag) {
NumLayersInOls[i]=1
LayerIdInOls[i][0]=vps_layer_id[i]
} иначе если(ols_mode_idc== 0 || ols_mode_idc== 1 ) {
NumLayersInOls[i]=i+1
если(j=0; j < NumLayersInOls[i]; j++)
LayerIdInOls[i][j]=vps_layer_id[j]
} иначе если(ols_mode_idc== 2) {
если(k=0, j=0; k <= vps_max_layers_minus1; k++)
если(layer_included_flag[i][k])
LayerIdInOls[i][j++]=vps_layer_id[k]
NumLayersInOls[i]=j
}
[00137] Переменная OlsLayeIdx[i][j], указывающая индекс слоя OLS слоя с nuh_layer_id, равным LayerIdInOls[i][j], выводится следующим образом.
если(i=0, i < TotalNumOlss; i++)
для j=0; j < NumLayersInOls[i]; j++)
OlsLayeIdx[i][LayerIdInOls[i][j]]=j
[00138] Самый нижний слой в каждом OLS должен быть независимым слоем. Другими словами, для каждого i в диапазоне от 0 до TotalNumOlss - 1, включительно, значение vps_independent_layer_flag[GeneralLayerIdx[LayerIdInOls[i][0]]] должно быть равно 1.
[00139] Каждый слой должен быть включен в по меньшей мере один OLS, заданный в VPS. То есть для каждого слоя с конкретным значением nuh_layer_id nuhLayerId, равный одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, включительно, должна быть по меньшей мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOlss - 1, включительно, а j находится в диапазоне NumLayersInOls[i] - 1, включительно, так что значение LayerIdInOls[i][j] равно nuhLayerId.
[00140] Любой слой в OLS должен быть выводимым слоем OLS или (непосредственным или косвенным) опорным слоем выводимого слоя OLS.
[00141] vps_output_layer_flag[i][j] указывает, будет ли выводиться j-й слой в i-м OLS, когда ols_mode_idc равен 2. vps_output_layer_flag[i], равный 1, указывает, что j-й слой в i-м OLS является выводимым. vps_output_layer_flag[i], равный 0, указывает, что j-й слой в i-м OLS не выводится. Когда vps_all_independent_layers_flag равен 1, а each_layer_is_an_ols_flag равен 0, предполагается, что значение vps_output_layer_flag[i] равно 1.
[00142] Переменная OutputLayerFlag[i][j], для которой значение 1 указывает, что выводится j-й слой в i-м OLS, а значение 0 указывает, что j-й слой в i-м OLS не выводится, выводится следующим образом.
если(i=0, i < TotalNumOlss; i++) {
OutputLayerFlag [i][NumLayersInOls [i] - 1]=1
если(j=0; j < NumLayersInOls[i] - 1; j++)
если(ols_mode_idc[i]== 0)
OutputLayerFlag[i][j]=0
иначе если(ols_mode_idc[i]== 1)
OutputLayerFlag[i][j]=1
иначе если(ols_mode_idc[i]== 2)
OutputLayerFlag[i][j]=vps_output_layer_flag[i][j]
}
[00143] ПРИМЕЧАНИЕ. 0-й OLS содержит только самый нижний слой (т. е. слой с nuh_layer_id, равным vps_layer_id[0]), а для 0-го OLS выводится только включенный слой.
[00144] vps_constraint_info_present_flag, равный 1, указывает, что синтаксическая структура general_constraint_info() присутствует в VPS. vps_constraint_info_present_flag, равный 0, указывает, что синтаксическая структура general_constraint_info() отсутствует в VPS.
[00145] vps_reserved_zero_7bits должен быть равен 0 в битовых потоках, соответствующих этой версии этого проекта VVC. Другие значения для vps_reserved_zero_7bits зарезервированы для будущего использования ITU-T|ISO/IEC. В одном варианте осуществления декодеры должны игнорировать значение vps_reserved_zero_7bits.
[00146] general_hrd_params_present_flag, равный 1, указывает, что синтаксические элементы num_units_in_tick и time_scale, и синтаксическая структура general_hrd_parameters() присутствуют в синтаксической структуре RBSP SPS. Значение general_hrd_params_present_flag, равное 0, указывает, что синтаксические элементы num_units_in_tick и time_scale, и синтаксическая структура general_hrd_parameters() отсутствуют в синтаксической структуре RBSP SPS.
[00147] num_units_in_tick - это количество единиц времени тактового генератора, работающего на частоте time_scale Hz, что соответствует одному приращению (называемому тактом) счетчика тактов. num_units_in_tick должно быть больше 0. Такт тактового генератора в секундах равен отношению num_units_in_tick к time_scale. Например, когда частота снимков видеосигнала составляет 25 Гц, time_scale может быть равен 27 000 000, а num_units_in_tick может быть равен 1 080 000, и, следовательно, такт тактового генератора может быть равен 0,04 секунды.
[00148] time_scale - это количество единиц времени, проходящих за одну секунду. Например, система координат времени, которая измеряет время с помощью тактового генератора с частотой 27 МГц, имеет time_scale 27 000 000. Значение time_scale должно быть больше 0.
[00149] Значение vps_extension_flag, равное 0, указывает, что в синтаксической структуре RBSP VPS нет синтаксических элементов vps_extension_data_flag. vps_extension_flag, равный 1, указывает, что в синтаксической структуре RBSP VPS присутствуют синтаксические элементы vps_extension_data_flag.
[00150] vps_extension_data_flag может иметь любое значение. Его наличие и значение не влияют на соответствие декодера профилям, указанным в этой версии данного документа. Декодеры, соответствующие этой версии настоящего документа, должны игнорировать все синтаксические элементы vps_extension_data_flag.
[00151] SPS 706 содержит данные, общие для всех снимков в последовательности снимков (SOP). SPS 706 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевому количеству или более полным CLVS, что определяется содержанием синтаксического элемента, обнаруженного в PPS, на который ссылается синтаксический элемент, обнаруженный в заголовке каждого снимка. Напротив, PPS 708 содержит данные, общие для всего снимка. PPS 708 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются к нулевому количеству или более полным кодированным снимкам, как определено элементом синтаксиса, найденным в заголовке каждого снимка (например, РН 712).
[00152] DCI 702, VPS 704, SPS 706 и PPS 708 содержатся в различных типах единиц слоя сетевой абстракции (NAL). Единица NAL - это синтаксическая структура, содержащая указание типа данных, которым следует следовать (например, кодированные видеоданные). Единицы NAL подразделяются на единицы слоя видеокодирования (VCL) и единицы NAL не-VCL. Единицы NAL VCL содержат данные, которые представляют значения дискретных отсчетов в видеоснимках, а единицы NAL не-VCL содержат любую связанную дополнительную информацию, такую как наборы параметров (важные данные, которые могут применяться к ряду единиц NAL VCL) и дополнительная информация расширения (информация о времени и другие дополнительные данные, которые могут повысить удобство использования декодированного видеосигнала, но не являются необходимыми для декодирования значений дискретных отсчетов в видеоснимках).
[00153] В одном варианте осуществления DCI 702 содержится в единице NAL не-VCL, обозначенном как единица NAL DCI или единица NAL DPS. То есть единица NAL DCI имеет тип единицы NAL DCI (NUT), а единица NAL DPS имеет DPS NUT. В одном варианте осуществления VPS 704 содержится в единице NAL не-VCL, обозначенном как единица NAL VPS. Следовательно, единица NAL VPS имеет NUT VPS. В одном варианте осуществления SPS 706 представляет собой единицу NAL не-VCL, обозначенную как единица NAL SPS. Следовательно, единица NAL SPS имеет SPS NUT. В одном варианте осуществления PPS 708 содержится в единице NAL не-VCL, обозначенном как единица NAL PPS. Следовательно, единица NAL PPS имеет PPS NUT.
[00154] РН 712 представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем сегментам (например, сегментам 718) кодированного снимка (например, снимку 714). В одном варианте осуществления РН 712 находится в новом типе единицы NAL не-VCL, обозначенной как единица NAL PH. Следовательно, единица NAL PH имеет PH NUT (например, PH_NUT). В одном варианте осуществления в каждую PU 701 включен один и только один РН 712. То есть PU 701 содержит один или единственный РН 712. В одном варианте осуществления ровно одна единица NAL PH присутствует для каждого снимка 701 в битовом потоке 700.
[00155] В одном варианте осуществления единица NAL PH, связанная с PH 712, имеет временной идентификатор и идентификатор слоя. Идентификатор временного идентификатора указывает позицию единицы NAL PH во времени относительно других единиц NAL PH в битовом потоке (например, битовом потоке 701). Идентификатор слоя указывает слой (например, слой 531 или слой 532), который содержит единицу NAL PH. В одном варианте осуществления временной идентификатор аналогичен POC, но отличается от него. POC однозначно идентифицирует каждый снимок по порядку. В однослойном битовом потоке временной идентификатор и POC будут одинаковыми. В многослойном битовом потоке (например, см. Фиг. 5) снимки в одном и том же AU будут иметь разные POC, но один и тот же временной ID.
[00156] В одном варианте осуществления единица NAL PH предшествует единице NAL VCL, содержащей первый сегмент 718 связанного снимка 714. Это устанавливает связь между РН 712 и сегментами 718 снимка 714, ассоциированного с РН 712, без необходимости иметь идентификатор заголовка снимка, сигнализируемый в РН 712 и ссылающийся на заголовок 720 сегмента. Следовательно, можно сделать вывод, что все единицы NAL VCL между двумя PH 712 принадлежат одному и тому же снимку 714 и что снимок 714 связан с первым PH 712 между двумя PH 712. В одном варианте осуществления первая единица NAL VCL, которая следует за PH 712, содержит первый сегмент 718 снимка 714, связанный с PH 712.
[00157] В одном варианте осуществления единица NAL PH следует наборам параметров на уровне снимка (например, PPS) или наборам параметров более высокого уровня, таким как DCI (он же DPS), VPS, SPS, PPS и т. д., имеющим как временной ID и ID слоя меньше, чем временной ID и ID слоя единицы NAL PH, соответственно. Следовательно, эти наборы параметров не повторяются в снимке или единице доступа. Благодаря такому порядку PH 712 может быть решен немедленно. То есть наборы параметров, которые содержат параметры, относящиеся ко всему снимку, располагаются в битовом потоке перед единицей NAL PH. Все, что содержит параметры для части снимка, располагается после единицы NAL PH.
[00158] В одном из вариантов единица NAL PH следует за наборами параметров на уровне снимка и сообщениям префиксной дополнительной информации расширения (SEI) или наборам параметров более высокого уровня, таким как DCI (он же DPS), VPS, SPS, PPS, APS, сообщение SEI и т.д.
[00159] Снимок 714 представляет собой массив дискретных отсчетов яркости в монохромном формате или массив дискретных отсчетов яркости и два соответствующих массива дискретных отсчетов цветности в цветовом формате 4:2:0, 4:2:2 и 4:4:4. В одном варианте осуществления в каждую PU 701 включен один и только один снимок 714. Таким образом, в каждом PU 701 имеется только один РН 712 и только один снимок 714, соответствующий этому РН 712. То есть PU 701 содержит единственный или одиночный снимок 714.
[00160] Снимок 714 может быть либо кадром, либо областью. Однако в одном CVS 716 либо все снимки 714 являются кадрами, либо все снимки 714 являются областями. CVS 716 представляет собой кодированную видеопоследовательность для каждой кодированной послойно видеопоследовательности (CLVS) в битовом видеопотоке 700. Примечательно, что CVS 716 и CLVS одинаковы, когда битовый видеопоток 700 включает в себя один слой. CVS 716 и CLVS различаются только тогда, когда битовый видеопоток 700 включает в себя множество слоев (например, как показано на Фиг. 5 и 6).
[00161] Каждый снимок 714 содержит один или более сегментов 718. Сегмент 718 представляет собой целое число полных клеток или целое число последовательных полных строк CTU в клетке снимка (например, снимка 714). Каждый сегмент 718 содержится исключительно в одной единице NAL (например, единице NAL VCL). Клетка (не показана) представляет собой прямоугольную область CTU в конкретном столбце клеток и конкретной строке клеток в снимке (например, снимке 714). CTU (не показан) представляет собой CTB дискретных отсчетов яркости, два соответствующих CTB из дискретных отсчетов цветности снимка, который имеет три массива дискретных отсчетов, или CTB из дискретных отсчетов монохромного снимка или снимка, который кодирован с использованием трех отдельных цветовых плоскостей и синтаксических структур, используемых для кодирования дискретных отсчетов. CTB (не показан) представляет собой блок N×N дискретных отсчетов для некоторого значения N, так что разделение компонента на CTB представляет собой разбиение. Блок (не показан) представляет собой массив MxN (M столбцов на N строк) дискретных отсчетов (например, пикселей) или массив MxN коэффициентов преобразования.
[00162] В одном варианте осуществления каждый сегмент 718 содержит заголовок 720 сегмента. Заголовок 720 сегмента является частью кодированного сегмента 718, содержащего элементы данных, относящиеся ко всем клеткам или строкам CTU внутри клетки, представленной в сегменте 718. То есть заголовок 720 сегмента содержит информацию о сегменте 718, такую как, например, тип сегмента, какой из опорных снимков будет использоваться и т.д.
[00163] Снимки 714 и их сегменты 718 содержат данные, связанные с кодируемыми или декодируемыми снимками или видео. Таким образом, снимки 714 и их сегменты 718 могут просто называться полезной нагрузкой или данными, переносимыми в битовом потоке 700.
[00164] Специалисты в данной области техники поймут, что битовый поток 700 может содержать другие параметры и информацию в практических вариантах применения.
[00165] Фиг. 8 представляет собой вариант осуществления способа 800 декодирования, реализуемого видеодекодером (например, видеодекодером 400). Способ 800 может выполняться после того, как битовый поток был непосредственно или косвенно принят от видеокодера (например, видеокодера 300). Способ 800 улучшает процесс декодирования, отклоняя ненужные слои в многослойных видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[00166] На этапе 802 видеодекодер принимает битовый видеопоток, включающий в себя VPS (например, VPS 704) и множество слоев (например, слой N 631, слой N+1 632 и т. д.). В одном варианте осуществления каждый слой включен в по меньшей мере один OLS (например, OLS 1, OLS 2 и т. д.), заданный в VPS. То есть для каждого слоя с конкретным значением nuh_layer_id nuhLayerId, равный одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, включительно, должна быть по меньшей мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOlss - 1, включительно, а j находится в диапазоне NumLayersInOls[i] - 1, включительно, так что значение LayerIdInOls[i][j] равно nuhLayerId.
[00167] В одном варианте осуществления видеодекодер ожидает, что каждый слой будет включен в по меньшей мере один OLS (например, OLS 1, OLS 2 и т.д.), заданный в VPS, как описано выше, на основе VVC или какого-либо другого стандарта. Однако, если декодер определяет, что это условие не соответствует действительности, он может обнаружить ошибку, сообщить об ошибке, запросить повторную отправку исправленного битового потока (или его части) или предпринять некоторые другие корректирующие меры для обеспечения того, чтобы был принят согласующийся битовый поток.
[00168] nuh_layer_id сигнализируется в битовом потоке и используется для определения nuhLayerId. Каждый из nuh_layer_id и nuhLayerId содержит идентификатор (ID), используемый для уникальной идентификации слоя. vps_layer_id[k] используется для указания идентификаторов слоя в VPS 704. vps_max_layers_minus1 используется для указания максимального количества слоев в OLS. TotalNumOlss используется для указания общего количества OLS, включенных в CLVS и/или битовый поток. Наконец, NumLayersInOls указывает количество слоев в OLS.
[00169] В одном варианте осуществления каждый слой, доступный для кодера, задан в VPS, принятом декодером. То есть VPS, принятый декодером, задает каждый слой, независимо от того, включен ли каждый слой в OLS, принятый декодером. В одном варианте осуществления каждый OLS, сгенерированный кодером, задается в VPS, принятом декодером. То есть VPS, принятый декодером, определяет каждый OLS, независимо от того, принят ли этот OLS декодером.
[00170] В одном варианте осуществления каждый слой из множества слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL. В одном варианте осуществления по меньшей мере один OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев. В одном варианте осуществления по меньшей мере один OLS содержит один или более выводимых слоев. В одном варианте осуществления для каждого из множества слоев с конкретным значением идентификатора слоя, заданного в VPS, один из слоев в по меньшей мере одном OLS также должен иметь конкретное значение идентификатора слоя.
[00171] На этапе 804 видеодекодер декодирует снимок (например, снимок 615) из одного из множества слоев. В одном варианте осуществления снимок включен в выводимый слой по меньшей мере одного OLS.
[00172] В одном варианте осуществления способ 800 дополнительно включает в себя выбор выводимого слоя из по меньшей мере одного OLS до декодирования. В одном варианте осуществления способ 800 дополнительно включает в себя выбор снимка из выводимого слоя после того, как выбран выводимый слой.
[00173] После того, как снимок декодирован, он может быть использован для генерирования или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и т.д.)).
[00174] Фиг. 9 представляет собой вариант осуществления способа 900 кодирования битового видеопотока, реализуемого видеокодером (например, видеокодером 300). Способ 900 может выполняться, когда снимок (например, из видео) должен быть кодирован в битовый видеопоток и затем передан в видеодекодер (например, видеодекодер 400). Способ 900 улучшает процесс кодирования, отклоняя ненужные слои в многослойных видеопотоках. То есть любой слой, не используемый в по меньшей мере одном наборе выводимых слоев (OLS), ограничен от включения в многослойные битовые потоки. Это позволяет избежать лишней информации в процессе кодирования и повышает эффективность кодирования. Таким образом, кодер/декодер (он же «кодек») в видеокодировании улучшен по сравнению с текущими кодеками. С практической точки зрения улучшенный процесс видеокодирования предлагает пользователю лучшие возможности использования при отправке, приеме и/или просмотре видео.
[00175] На этапе 902 видеокодер генерирует множество слоев (например, слой N 631, слой N+1 632 и т. д.) и VPS (например, VPS 704), задающих один или более OLS (например, OLS 1, OLS 2 и так далее). В одном варианте осуществления каждый слой из множества слоев включен в по меньшей мере один из OLS, заданных в VPS. То есть для каждого слоя с конкретным значением nuh_layer_id nuhLayerId, равный одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, включительно, должна быть по меньшей мере одна пара значений i и j, где i находится в диапазоне от 0 до TotalNumOlss - 1, включительно, а j находится в диапазоне NumLayersInOls[i] - 1, включительно, так что значение LayerIdInOls[i][j] равно nuhLayerId. В одном варианте осуществления видеокодер ограничен таким образом, чтобы каждый слой из множества слоев был включен в по меньшей мере один из OLS, заданных в VPS. То есть от видеокодера требуется, чтобы каждый слой из множества слоев был включен в по меньшей мере один из OLS, заданных в VPS. Такое ограничение или требование гарантирует, что битовый поток согласуется, например, с VVC или каким-либо другим стандартом, модифицированным, как указано в данном документе. Однако кодер также может быть способен работать в других режимах, где он не ограничен таким образом, например, при работе по другому стандарту или другой версии того же стандарта.
[00176] nuh_layer_id сигнализируется в битовом потоке и используется для определения nuhLayerId. Каждый из nuh_layer_id и nuhLayerId содержит идентификатор (ID), используемый для уникальной идентификации слоя. vps_layer_id[k] используется для указания идентификаторов слоя в VPS 704. vps_max_layers_minus1 используется для указания максимального количества слоев в OLS. TotalNumOlss используется для указания общего количества OLS, включенных в CLVS и/или битовый поток. Наконец, NumLayersInOls указывает количество слоев в OLS.
[00177] В одном варианте осуществления каждый из одного или более OLS содержит один или более выводимых слоев, при этом каждый из выводимых слоев содержит один или более снимков. В одном варианте осуществления каждый слой во множестве слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
[00178] В одном варианте осуществления один из OLS содержит два выводимых слоя, и при этом один из двух выводимых слоев ссылается на другой из двух выводимых слоев. В одном варианте осуществления для каждого из множества слоев с конкретным значением идентификатора слоя, заданного в VPS, один из слоев в одном или более OLS также должен иметь конкретное значение идентификатора слоя.
[00179] В одном варианте осуществления гипотетический опорный декодер (HRD), расположенный в кодере, будет проверять все слои и OLS. Когда HRD находит слой, которого нет ни в одном OLS, как описано в данном документе, тогда HRD возвращает ошибку теста на согласованность. То есть тест на согласованность HRD гарантирует отсутствие неиспользуемых слоев. Следовательно, кодер кодирует в соответствии с требованием отсутствия неиспользуемых слоев, но HRD обеспечивает выполнение этого требования.
[00180] На этапе 904 видеокодер кодирует множество слоев и VPS в битовый видеопоток. На этапе 906 видеокодер сохраняет битовый видеопоток для передачи в видеодекодер. Битовый видеопоток может храниться в памяти до тех пор, пока битовый видеопоток не будет передан в видеодекодер. После приема видеодекодером кодированный битовый видеопоток может быть декодирован (например, как описано выше) для генерирования или создания изображения или видеопоследовательности для отображения пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, ноутбука, персонального компьютера и др.).
[00181] Фиг. 10 является принципиальной схемой устройства 1000 видеокодирования (например, видеокодера 300 или видеодекодера 400) в соответствии с вариантом осуществления раскрытия. Устройство 1000 видеокодирования подходит для реализации раскрытых вариантов осуществления, которые описаны в данном документе. Устройство 1000 видеокодирования содержит входные порты 1010 и приемные модули (Rx) 1020 для приема данных; процессор, логический блок или центральный модуль обработки (CPU) 1030 для обработки данных; передающие модули (Tx) 1040 и выходные порты 1050 для передачи данных; и память 1060 для хранения данных. Устройство 1000 видеокодирования также может содержать компоненты преобразования оптических сигналов в электрические (OE) и компоненты преобразования электрических сигналов в оптические (EO), подключенные к входным портам 1010, приемным модулям 1020, передающим модулям 1040 и выходным портам 1050 для обеспечения входа или выхода оптических или электрических сигналов.
[00182] Процессор 1030 реализуется аппаратным обеспечением и программным обеспечением. Процессор 1030 может быть реализован в виде одной или более микросхем CPU, ядер (например, в форме многоядерного процессора), программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 1030 поддерживает связь с входными портами 1010, приемными модулями 1020, передающими модулями 1040, выходными портами 1050 и памятью 1060. Процессор 1030 содержит модуль 1070 кодирования. Модуль 1070 кодирования реализует раскрытые варианты осуществления, описанные выше. Например, модуль 1070 кодирования реализует, обрабатывает, подготавливает или обеспечивает различные функции кодека. Следовательно, включение модуля 1070 кодирования обеспечивает существенное улучшение функциональных возможностей устройства 1000 видеокодирования и обеспечивает трансформацию устройства 1000 видеокодирования в другое состояние. В качестве альтернативы модуль 1070 кодирования реализуется как инструкции, хранящиеся в памяти 1060 и исполняемые процессором 1030.
[00183] Устройство 1000 видеокодирования/декодирования может также включать в себя устройства 1080 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 1080 I/O могут включать в себя устройства вывода, такие как дисплей, для отображения видеоданных, громкоговорители для вывода аудиоданных и т.д. Устройства 1080 I/O могут также включать в себя устройства ввода, такие как клавиатура, мышь, шаровой манипулятор и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[00184] Память 1060 содержит один или более дисков, ленточных накопителей и твердотельных накопителей и может использоваться в качестве устройства хранения данных с переполнением, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы. Память 1060 может быть энергозависимой и/или энергонезависимой и может представлять собой постоянное запоминающее устройство (ROM), запоминающее устройство с произвольным доступом (RAM), троичное запоминающее устройство с адресацией по содержимому (ТСАМ) и/или статическое запоминающее устройство с произвольным доступом (SRAM).
[00185] Фиг. 11 является принципиальной схемой варианта осуществления средства 1100 кодирования. В одном варианте осуществления средство 1100 кодирования реализовано в устройстве 1102 видеокодирования (например, видеокодере 300 или видеодекодере 400). Устройство 1102 видеокодирования включает в себя средство 1101 приема. Средство 1101 приема выполнено с возможностью приема снимка для кодирования или приема битового потока для декодирования. Устройство 1102 видеокодирования включает в себя средство 1107 передачи, соединенное со средством 1101 приема. Средство 1107 передачи выполнено с возможностью передачи битового потока в декодер или передачи декодированного изображения в средство отображения (например, одно из устройств 1080 ввода/вывода).
[00186] Устройство 1102 видеокодирования включает в себя средство 1103 хранения. Средство 1103 хранения соединено с по меньшей мере одним из средства 1101 приема или средства 1107 передачи. Средство 1103 хранения выполнено с возможностью хранения инструкций. Устройство 1102 видеокодирования также включает в себя средство 1105 обработки. Средство 1105 обработки соединено со средством 1103 хранения. Средство 1105 обработки выполнено с возможностью исполнения инструкций, хранящихся в средстве хранения, для осуществления способов.
[00187] Также следует понимать, что этапы иллюстративных способов, изложенных в настоящем документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто иллюстративный. Подобным образом в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть исключены или объединены в способах, соответствующих различным вариантам осуществления настоящего раскрытия.
[00188] Несмотря на то, что в настоящем раскрытии было предоставлено несколько вариантов осуществления, следует понимать, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не ограничительные, и есть намерение не ограничиваться приведенными в данном документе деталями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
[00189] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, модулями, методиками или способами без отклонения от объема настоящего раскрытия. Другие элементы, показанные или рассмотренные как связанные или непосредственно связанные или сообщающиеся друг с другом, могут быть связаны косвенно или сообщаться через какой-либо интерфейс, устройство или промежуточный компонент, будь то электрически, механически или иным образом. Другие примеры изменений, замен и переделок могут быть установлены специалистом в данной области техники и могут быть осуществлены без отклонения от духа и объема, раскрытых в данном документе.
название | год | авторы | номер документа |
---|---|---|---|
OLS ДЛЯ МНОГОРАКУРСНОЙ МАСШТАБИРУЕМОСТИ | 2020 |
|
RU2822508C1 |
ОГРАНИЧЕНИЯ ВРЕМЕННОГО ИДЕНТИФИКАТОРА ДЛЯ СООБЩЕНИЙ SEI | 2020 |
|
RU2823614C1 |
OLS ДЛЯ ПРОСТРАНСТВЕННОЙ МАСШТАБИРУЕМОСТИ И МАСШТАБИРУЕМОСТИ ПО SNR | 2020 |
|
RU2822990C1 |
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS | 2020 |
|
RU2820076C1 |
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ | 2020 |
|
RU2821429C1 |
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAR И HE-IRAR В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ | 2020 |
|
RU2822714C1 |
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ | 2020 |
|
RU2824781C1 |
УКАЗАНИЕ ТОЧКИ ПРОИЗВОЛЬНОГО ДОСТУПА И ВЫВОД ИЗОБРАЖЕНИЯ В КОДИРОВАННОМ ВИДЕОПОТОКЕ | 2021 |
|
RU2787579C1 |
СПОСОБ ВЫВОДА НАБОРА СЛОЕВ ДЛЯ МНОГОСЛОЙНОГО ВИДЕОПОТОКА | 2020 |
|
RU2807213C1 |
СПОСОБ ДЛЯ РЕЖИМА НАБОРА ВЫХОДНЫХ УРОВНЕЙ | 2021 |
|
RU2781173C1 |
Изобретение относится к видеокодированию. Техническим результатом является повышение эффективности кодирования посредством отклонения ненужных и/или неиспользуемых слоев в многослойном битовом потоке при видеокодировании. Результат достигается тем, что принимают видеодекодером битовый видеопоток, включающий в себя набор параметров видео (VPS) и множество слоев, причем каждый слой включен в по меньшей мере один набор выводимых слоев (OLS), заданный в VPS; и обеспечивают декодирование видеодекодером снимка из одного из множества слоев. При этом способ кодирования включает в себя генерирование видеокодером множества слоев и набора параметров видео (VPS), задающего один или более наборов выводимых слоев (OLS), при этом каждый слой из множества слоев включен в по меньшей мере один из OLS, заданный в VPS; кодирование видеокодером множества слоев и VPS в битовый видеопоток и сохранение видеокодером битового видеопотока для передачи в видеодекодер. 14 н. и 10 з.п. ф-лы, 11 ил.
1. Способ декодирования, реализуемый видеодекодером, при этом способ содержит этапы, на которых:
принимают посредством видеодекодера битовый видеопоток, включающий в себя набор параметров видео (VPS) и множество слоев, при этом каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS; и
декодируют посредством видеодекодера снимок из одного из множества слоев.
2. Способ по п.1, в котором снимок включен в выводимый слой из упомянутого по меньшей мере одного OLS, при этом каждый слой задан в OLS.
3. Способ по п.1 или 2, дополнительно содержащий этап, на котором выбирают выводимый слой из упомянутого по меньшей мере одного OLS для декодирования.
4. Способ по любому из пп.1-3, дополнительно содержащий этап, на котором выбирают снимок для декодирования из выбранного выводимого слоя.
5. Способ по любому из пп.1-4, в котором каждый слой из множества слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
6. Способ кодирования, реализуемый видеокодером, при этом способ содержит этапы, на которых:
генерируют посредством видеокодера множество слоев и набор параметров видео (VPS), задающий один или более наборов выводимых слоев (OLS), при этом видеокодер ограничен таким образом, что каждый слой из множества слоев – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество OLS, заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS;
кодируют посредством видеокодера множество слоев и VPS в битовый видеопоток.
7. Способ по п.6, в котором каждый из одного или более OLS содержит один или более выводимых слоев, причем каждый из выводимых слоев содержит один или более снимков, при этом ни один слой не исключен из какого-либо из одного или более OLS.
8. Декодирующее устройство, содержащее:
приемник, выполненный с возможностью принимать битовый видеопоток, включающий в себя набор параметров видео (VPS) и множество слоев, при этом каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS;
память, соединенную с приемником, причем память хранит инструкции; и
процессор, соединенный с памятью, причем процессор выполнен с возможностью исполнения инструкций для предписания декодирующему устройству декодировать снимок из одного из множества слоев для получения декодированного снимка.
9. Декодирующее устройство по п.8, при этом снимок включен в выводимый слой упомянутого по меньшей мере одного OLS, и каждый слой задан в OLS.
10. Декодирующее устройство по п.8 или 9, в котором процессор дополнительно выполнен с возможностью выбирать выводимый слой из упомянутого по меньшей мере одного OLS до декодирования снимка.
11. Декодирующее устройство по любому из пп.8-10, в котором процессор дополнительно выполнен с возможностью выбирать снимок из выводимого слоя после того, как выбран выводимый слой.
12. Декодирующее устройство по любому из пп.8-11, при этом каждый слой из множества слоев содержит набор единиц слоя сетевой абстракции (NAL) слоя видеокодирования (VCL), все из которых имеют конкретное значение идентификатора (ID) слоя, и связанных единиц NAL не-VCL.
13. Кодирующее устройство, содержащее:
память, содержащую инструкции;
процессор, соединенный с памятью, причем процессор выполнен с возможностью реализации инструкций для предписания кодирующему устройству:
генерировать множество слоев и набор параметров видео (VPS), задающий один или более наборов выводимых слоев (OLS), при этом видеокодер ограничен таким образом, что каждый слой из множества слоев – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество OLS, заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS,
кодировать множество слоев и VPS в битовый видеопоток.
14. Кодирующее устройство по п.13, при этом каждый из одного или более OLS содержит один или более выводимых слоев, и каждый из выводимых слоев содержит один или более снимков.
15. Устройство кодирования/декодирования, содержащее:
приемник, выполненный с возможностью принимать снимок для кодирования или принимать битовый поток для декодирования;
передатчик, соединенный с приемником, причем передатчик выполнен с возможностью передавать битовый поток в декодер или передавать декодированное изображение на дисплей;
память, соединенную с по меньшей мере одним из приемника или передатчика, причем память выполнена с возможностью хранить инструкции; и
процессор, соединенный с памятью, при этом процессор выполнен с возможностью исполнять инструкции, хранящиеся в памяти, для осуществления способа по любому из пп.1-5 и по п.6 или 7.
16. Кодер, содержащий схемы обработки для осуществления способа по п.6 или 7.
17. Декодер, содержащий схемы обработки для осуществления способа по любому одному из пп.1-5.
18. Машиночитаемый носитель, содержащий программный код для выполнения способа по любому одному из пп.1-7.
19. Терминал, причем терминал содержит один или более процессоров, память и интерфейс связи, и память и интерфейс связи подсоединены к одному или более процессорам, причем терминал сообщается с другим устройством через интерфейс связи, при этом память приспособлена для хранения кода компьютерной программы, причем код компьютерной программы содержит инструкции, и когда один или более процессоров исполняют инструкции, терминал выполняет способ по любому одному из пп.1-7.
20. Устройство для хранения битового потока, причем устройство содержит по меньшей мере один запоминающий носитель и по меньшей мере один интерфейс связи, при этом по меньшей мере один интерфейс связи выполнен с возможностью приема или передачи битового потока, причем по меньшей мере один запоминающий носитель приспособлен для хранения битового потока, при этом битовый поток содержит набор параметров видео (VPS) и множество слоев, причем каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS.
21. Способ сохранения битового потока, содержащий этапы, на которых:
принимают или передают битовый поток через интерфейс связи;
сохраняют битовый поток на одном или более запоминающих носителях,
при этом битовый поток содержит набор параметров видео (VPS) и множество слоев, причем каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS.
22. Устройство для передачи битового потока, причем устройство содержит:
по меньшей мере один запоминающий носитель, приспособленный для хранения по меньшей мере одного битового потока, причем данный битовый поток содержит набор параметров видео (VPS) и множество слоев, при этом каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS;
по меньшей мере один процессор, выполненный с возможностью получать один или более битовых потоков с одного из по меньшей мере одного запоминающего носителя и передавать эти один или более битовых потоков в устройство-получатель.
23. Способ передачи битового потока, содержащий этапы, на которых:
сохраняют по меньшей мере один битовый поток на по меньшей мере одном запоминающем носителе, причем данный битовый поток содержит набор параметров видео (VPS) и множество слоев, при этом каждый слой – со значением nuh_layer_id (nuhLayerId), равным одному из vps_layer_id[k] для k в диапазоне от 0 до vps_max_layers_minus1, причем vps_layer_id[k] задает значение nuh_layer_id k-го слоя, vps_max_layers_minus1 плюс 1 задает максимально допустимое количество слоев в каждой кодированной видеопоследовательности (CVS), относящейся к VPS, значение LayerIdInOls[i][j] равно nuhLayerId, где i – в диапазоне от 0 до TotalNumOlss − 1 и j – в диапазоне от NumLayersInOls[i] − 1, при этом TotalNumOlss задает общее количество наборов выводимых слоев (OLS), заданных посредством VPS, причем NumLayersInOls[i] задает количество слоев в i-м OLS, при этом LayerIdInOls[i][j] задает значение nuh_layer_id j-го слоя в i-м OLS;
получают один или более битовых потоков с одного из по меньшей мере одного запоминающего носителя; и
передают эти один или более битовых потоков в устройство-получатель.
24. Система для обработки битового потока, содержащая кодирующее устройство по п.13 или 14, одно или более запоминающих устройств и декодирующее устройство по любому одному из пп.8-12, при этом одно или более запоминающих устройств используются для хранения одного или более видеопотоков.
US 2019082184 A1, 2019.03.14 | |||
US 2017006300 A1, 2017.01.05 | |||
US 2017111650 A1, 2017.04.20 | |||
US 2017019673 A1, 2017.01.19 | |||
US 2017347026 A1, 2017.11.30 | |||
US 10136150 B2, 2018.11.20 | |||
US 9788007 B2, 2017.10.10 | |||
US 2016191931 A1, 2016.06.30 | |||
US 2015373346 A1, 2015.12.24 | |||
Способ и устройство для кодирования видеоинформации | 2013 |
|
RU2612577C2 |
US 2018115787 A1, 2018.04.26. |
Авторы
Даты
2024-07-24—Публикация
2020-09-15—Подача