ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО Российский патент 2024 года по МПК H04N19/70 H04N19/423 H04N19/172 H04N19/136 H04N19/187 

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

Область техники, к которой относится изобретение

В общем, настоящее изобретение описывает технологию для многослойных потоков данных видео при кодировании видео. Более конкретно, настоящее изобретение описывает технологию исключения избыточности при передаче в виде сигнализации параметров, соответствующих слоям в многослойных битовых потоках, при кодировании видео.

Уровень техники

Количество данных видео, необходимое для описания даже относительно короткого видеоролика, может быть значительным, что может привести к затруднениям, когда нужно передавать данные в виде потока или другим способом через сеть связи с ограниченной полосой пропускания. Вследствие этого, данные видео обычно сжимают перед тем, как передать их по современным телекоммуникационным сетям. Размер видеоролика также может представлять проблему, когда этот видеоролик сохраняют в запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства для сжатия видео часто используют в источнике программное обеспечение и/или аппаратуру для кодирования данных перед их передачей или сохранением в запоминающем устройстве, тем самым уменьшая количество данных, необходимых для представления изображений цифрового видео. Затем сжатые данные в пункте назначения принимает устройство для декомпрессии (расширения) видео, которое декодирует эти данные видео. При ограниченности ресурсов сетей связи и постоянно растущих требованиях к достижению все более высокого качества видео, необходимо разработать усовершенствованные способы сжатия и расширения (декомпрессии) видео, которые позволили бы повысить коэффициент сжатия при минимальном или вообще отсутствующем ущербе для качества изображения.

Сущность изобретения

Первый аспект относится к способу, реализуемому декодирующим устройством для видео, этот способ содержит: прием, декодирующим устройством для видео, битового потока видео, содержащего несколько слоев, имеющих подслои, и набор параметров видео (video parameter set (VPS)), имеющий первый флаг первой величины, где этот первый флаг первой величины специфицирует, что временной идентификатор (temporal identifier (ID)) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (decoded picture buffer (DPB)) и временной идентификатор (ID) представления самого верхнего подслоя для параметров обновления гипотетического декодера (hypothetical decoder refresh (HRD)) не присутствуют в наборе VPS и признаются равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных в наборе VPS; получение, декодирующим устройством для видео, информации уровней, параметров декодера HRD и параметров буфера DPB, соответствующих временному идентификатору ID представления самого верхнего подслоя из набора VPS; и декодирование, посредством декодирующего устройства для видео, изображения из одного из этой совокупности нескольких слоев для получения декодированного изображения.

Этот способ предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (profile, tier, and level (PTL)), одинаковые параметры гипотетического эталонного декодера (hypothetical reference decoder (HRD)) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что максимальное число подслоев находится в диапазоне от одного до семи, и при этом первая величина равна единице, и вторая величина равна нулю.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что параметры декодера HRD. записанные в i-й синтаксической структуре ols_timing_hrd_parameters( ), находятся в наборе VPS или в наборе параметров последовательности (sequence parameter set (SPS)).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что изображение декодируют с использованием одного или обоих факторов – информации уровней и/или параметров буфера DPB.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что изображение декодируют без использования параметров декодера HRD.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает представление декодированного изображения на дисплее электронного устройства.

Второй аспект относится к способу кодирования, осуществляемому кодирующим устройством для видео, этот способ содержит: генерацию, посредством кодирующего устройства для видео, нескольких слоев, имеющих подслои, и набора параметров видео (VPS), включая первый флаг; установление, посредством кодирующего устройства для видео, первого флага, равного первой величине, для спецификации, что временной идентификатор (ID) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (DPB), и временной идентификатор (ID) представления самого верхнего подслоя для параметров обновления гипотетического декодера (HRD) не присутствуют в наборе VPS и должны быть признаны равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных в наборе VPS; кодирование, посредством кодирующего устройства для видео, указанной совокупности нескольких слоев и набора VPS и превращение в битовый поток видео; и сохранение, кодирующим устройством для видео, битового потока видео для передачи декодирующему устройству для видео.

Этот способ предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что максимальное число подслоев находится в диапазоне от одного до семи.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS, и параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает определение, является ли битовый поток видео, который был кодирован, соответствующим, с использованием параметров декодера HRD.

Третий аспект относится к декодирующему устройству, содержащему: приемник, конфигурированный для приема битового потока видео, содержащего несколько слоев, имеющих подслои, и набор параметров видео (VPS), содержащий первый флаг первой величины, где этот первый флаг первой величины специфицирует, что временной идентификатор (ID) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (DPB) и временной идентификатор (ID) представления самого верхнего подслоя параметров обновления гипотетического декодера (HRD) не присутствуют в наборе VPS и признаются равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных в наборе VPS; и процессор, соединенный с указанным запоминающим устройством, этот процессор конфигурирован для выполнения команд с целью управления декодирующим устройством для: получения информации уровней, параметров декодера HRD и параметров буфера DPB, соответствующих временному идентификатору ID представления самого верхнего подслоя из набора VPS; и декодирования изображения из одного из указанной совокупности нескольких слоев с целью получения декодированного изображения.

Это декодирующее устройство предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что максимальное число подслоев находится в диапазоне от одного до семи.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS, и параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что изображение декодируют с использованием одного или обоих факторов – информации уровней и/или параметров буфера DPB.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что дисплей конфигурирован для представления декодированного изображения.

Четвертый аспект относится к кодирующему устройству, содержащему: запоминающее устройство, сохраняющее команды; процессор, соединенный с этим запоминающим устройством, этот процессор конфигурирован для выполнения команд, в соответствии с которыми кодирующее устройство: генерирует совокупность нескольких слоев, имеющих подслои, и набор параметров видео (VPS), содержащий первый флаг; устанавливает первую величину этого первого флага для специфицирования, что временной идентификатор (TemporalID) представления самого верхнего подслоя для информации уровней, параметров буфера декодированного изображения (DPB) и параметров обновления гипотетического декодера (HRD) не присутствует в наборе VPS и должен быть признан равным максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS; и кодирует совокупность нескольких слоев и набор VPS для превращения в битовый поток видео; и передатчик, соединенный с процессором, этот передатчик конфигурирован для передачи битового потока видео декодирующему устройству для видео.

Это кодирующее устройство предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что максимальное число подслоев находится в диапазоне от одного до семи.

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

В качестве опции, в любом из предшествующих аспектов, другой вариант реализации такого аспекта предлагает, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS, и параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

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

Эта аппаратура кодирования предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

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

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

Эта система предлагает технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

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

Эти средства для кодирования предлагают технологию, обеспечивающую, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут повторно передаваться в виде сигнализации для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

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

Эти и другие признаки будут лучше поняты из последующего подробного описания, рассматриваемого в сочетании с прилагаемыми чертежами и Формулой изобретения.

Краткое описание чертежей

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

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

Фиг. 2 представляет упрощенную схему примера системы кодирования и декодирования (кодек) для кодирования видео.

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

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

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

Фиг. 6 иллюстрирует пример многослойного кодирования с использованием выходных множеств слоев (output layer set (OLS)).

Фиг. 7 иллюстрирует пример многослойной последовательности видео, конфигурированной для временной масштабируемости.

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

Фиг. 9 представляет один из вариантов способа декодирования кодированного битового потока видео.

Фиг. 10 представляет один из вариантов способа кодирования кодированного битового потока видео.

Фиг. 11 представляет упрощенную схему кодирующего устройства для видео.

Фиг. 12 представляет упрощенную схему одного из вариантов средств для кодирования.

Подробное описание

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

Приведенные ниже термины определены следующим образом, если только они не используются здесь в противоположном контексте. В частности, последующие определения предназначены для внесения дополнительной ясности в настоящее изобретение. Однако эти термины могут быть описаны по-разному в различных контекстах. Соответственно, следующие определения должны считаться дополнительными, и их не следует рассматривать в качестве ограничений для каких-либо других определений таких терминов здесь.

Битовый поток представляет собой последовательность битов, содержащую данные видео, сжатые для передачи между кодирующим устройством и декодирующим устройством. Кодирующее устройство представляет собой устройство, конфигурированное для использования процедур кодирования с целью сжатия данных видео и преобразования их в битовый поток. Декодирующее устройство представляет собой устройство, конфигурированное для использования процедур декодирования с целью реконструкции данных видео из битового потока для представления на дисплее. Изображение представляет собой массив отсчетов яркостной составляющей и/или массив отсчетов цветностной составляющей, образующие кадр или поле кадра. Изображение, кодируемое или декодируемое в текущий момент, может, для ясности обсуждения, называться текущим изображением. Опорное изображение представляет собой изображение, содержащее опорные отсчеты, которые могут быть использованы при кодировании других изображений по ссылкам в соответствии с межкадровым прогнозированием и/или внутрикадровым прогнозированием. Список опорных изображений представляет собой список таких опорных изображений, используемых для внутрикадрового прогнозирования и/или межкадрового прогнозирования. Некоторые системы кодирования видео используют два списка опорных изображений, которые могут быть обозначены как список один (1) опорных изображений и список нуль (0) опорных изображений. Структура списка опорных изображений, представляет собой адресуемую синтаксическую структуру, которая содержит несколько списков опорных изображений.

Параметры профиль, ярус и уровень (PTL) представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру profile_tier_level( )), несущую указания профиля, яруса и/или информации уровней. Параметры PTL могут быть обозначены синтаксической структурой profile_tier_level( ).

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

Заголовок среза представляет собой часть кодированного среза, содержащего элементы данных, относящиеся ко всем данным видео в пределах плитки, представленной в этом срезе. Набор параметров изображения (picture parameter set (PPS)) представляет собой набор параметров, содержащий данные, относящиеся ко всему изображению. Более конкретно, набор PPS представляет собой синтаксическую структуру, содержащую синтаксические элементы, применимые к нулевому или большему числу полных кодированных изображений, как это определено синтаксическим элементом, находящимся в каждом заголовке изображения. Набор параметров последовательности (sequence parameter set (SPS)) представляет собой набор параметров, относящихся к последовательности изображений. Единица доступа (access unit (AU)) представляет собой группу из одного или нескольких кодированных изображений, ассоциированных с одним и тем же моментом времени представления на дисплее, (например, с одним и тем же порядковым номером изображения) для вывода из буфера декодированного изображения (DPB) (например, для представления пользователю на дисплее). Разделитель единиц доступа (access unit delimiter (AUD)) представляет собой индикатор или структуру данных, используемую для обозначения начала единицы AU или границы между единицами AU. Декодированная последовательность видео представляет собой последовательность изображений, которые были реконструированы декодирующим устройством в ходе подготовки к представлению пользователю на дисплее.

Единица слоев сетевой абстракции (NAL) представляет собой синтаксическую структуру, содержащую данные в форме первичной байтовой последовательности данных (Raw Byte Sequence Payload (RBSP)), индикацию типа данных и байты для предотвращения эмуляции, которые рассеяны по желанию. Единица NAL слоя кодирования видео (video coding layer (VCL)) представляет собой единицу NAL, кодированную так, чтобы содержать данные видео, такие как кодированный срез изображения. Единица не-VCL NAL представляет собой единицу NAL, содержащую данные не-видео, такие как синтаксис и/или параметры, которые поддерживают декодирование данных видео, характеристики проверки соответствия или другие операции. Слой представляет собой группу единиц VCL NAL, которые совместно используют специфицированную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.п.), и ассоциированных с ними единиц не-VCL NAL. Единицы VCL NAL в слое могут совместно использовать конкретную величину идентификатора (nuh_layer_id) заголовка единиц NAL слоя. Кодированное изображение представляет собой кодированное представление изображения, содержащее единицы VCL NAL с конкретной величиной идентификатора (nuh_layer_id) заголовка единиц NAL слоя в пределах одной единицы доступа (AU), и содержащее все единицы дерева кодирования (coding tree unit (CTU)) соответствующего изображения. Декодированное изображения представляет собой изображение, полученное в результате применения процедуры декодирования к кодированному изображению.

Выходное множество слоев (output layer set (OLS)) представляет собой множество слоев, для которого один или несколько слоев специфицирован (ы) в качестве выходного слоя (ев). Выходной слой представляет собой слой, назначенный для передачи на выход (вывода) (например, для вывода к дисплею). Нулевое (0-е) множество OLS представляет собой множество OLS, содержащее только самый нижний (самого низкого порядка) слой (слой с наименьшим идентификатором слоя), и, следовательно, содержащее только один выходной слой. Набор параметров видео (video parameter set (VPS)) представляет собой единицу данных, содержащую параметры, относящиеся к полному видео. Межслойное прогнозирование представляет собой механизм кодирования текущего изображения в текущем слое с привязкой к опорному изображению в опорном слое, где текущее изображение и опорное изображение включены в одну и ту же единицу AU, а опорный слой имеет меньшую величину идентификатора nuh_layer_id, чем текущий слой.

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

Масштабируемый по времени битовый поток представляет собой битовый поток, кодированный в виде нескольких слоев, создающих изменяющееся разрешение по времени/частоту кадров (например, каждый слой кодирован для поддержки отличной от других слоев частоты кадров). Подслой, представляет собой масштабируемый по времени слой масштабируемого по времени битового потока, содержащий единицы VCL NAL с конкретным значением временного идентификатора и ассоциированные с ними единицы не-VCL NAL. Например, временной подслой представляет собой слой, содержащий данные видео, ассоциированные с некой специфицированной частотой кадров. Представление по подслоям является подмножеством битового потока, содержащим единицы NAL конкретного подслоя и подслоев более низкого порядка. Следовательно, один или несколько временных подслоев можно комбинировать для получения представления по подслоям, которое может быть декодировано, результатом чего является последовательность видео со специфицированной частотой кадров. Индекс множества OLS представляет собой индекс, однозначно идентифицирующий соответствующее множество OLS. Временной идентификатор (TemporalID или временной ID) представляет собой элемент данных, указывающий данные, соответствующие некой временной позиции в последовательности видео. Величина идентификатора TemporalId должна быть одинаковой для всех единиц VCL NAL в одной единице AU. Величина идентификатора TemporalId для кодированного изображения, единицы PU или единицы AU является величиной идентификатора TemporalId единиц VCL NAL из этого кодированного изображения, единицы PU или единицы AU. Величина идентификатора TemporalId для представления подслоя является наибольшей величиной временного идентификатора TemporalId всех единиц VCL NAL в этом представлении подслоя.

Представление самого верхнего подслоя является представлением подслоя, наиболее удаленного от базового подслоя. Иными словами, ни одного другого подслоя нет над, за пределами или выше этого представления самого верхнего подслоя.

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

Декодер HRD представляет собой модель декодирующего устройства, оперирующего в кодирующем устройстве, которая проверяет изменчивость битовых потоков, генерируемых в процессе кодирования, с целью удостовериться в соответствии со специфицированными ограничениями. Тест соответствия битового потока представляет собой тест для определения, соответствует ли кодированный битовый поток стандарту, такому как стандарт универсального видео кодирования (Versatile Video Coding (VVC)). Параметры декодера HRD представляют собой синтаксические элементы, инициализирующие и/или определяющие рабочие условия декодера HRD. Параметры декодера HRD на уровне последовательности представляют собой параметры декодера HRD, применимые к полной кодированной последовательности видео. Максимальный временной идентификатор ID декодера HRD (hrd_max_tid[i]) специфицирует временной идентификатор ID представления самого верхнего подслоя, для которого параметры декодера HRD содержатся в параметрах декодера HRD для i-го множества OLS. Синтаксическая структура общих параметров декодера HRD (general_hrd_parameters) представляет собой синтаксическую структуру, содержащую параметры декодера HRD на уровне последовательности. Рабочая точка (operation point (OP)) представляет собой временное подмножество множества OLS, идентифицированное индексом OLS и самым большим временным идентификатором ID. Тестируемая точка (OP under test (targetOp)) представляет собой точку OP, выбранную для тестирования соответствия в декодере HRD. Целевое множество OLS представляет собой множество OLS, выбранное для выделения из битового потока. Флаг присутствия параметров декодера HRD для единицы декодирования (decoding_unit_hrd_params_present_flag) представляет собой флаг, указывающий, работают ли соответствующие параметры декодера HRD на уровне единиц декодирования (decoding unit (DU)) на уровне единицы AU. Буфер кодированного изображения (coded picture buffer (CPB)) представляет собой буфер обратного магазинного типа в декодере HRD, содержащий кодированные изображения в порядке декодирования для использования в процессе удостоверения соответствия битового потока. Буфер декодированного изображения (DPB) представляет собой буфер для сохранения декодированных изображений с целью использования в качестве опоры, переупорядочения вывода и/или задержки вывода.

Параметры буфера декодированного изображения (DPB) представляют собой синтаксическую структуру, предоставляющую размер буфера DPB и, в качестве опции, информацию о максимальном числе переупорядоченных изображений и максимальной задержке. Максимальное число переупорядоченных изображений и информация о максимальной задержке (maximum picture reorder number and maximum latency) могут быть коллективно обозначены акронимом MRML.

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

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

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

На этапе 103, видео разбивают на блоки. Процедура разбиения содержит подразделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, в стандарте высокоэффективного видео кодирования (HEVC) (также известном под названиями H.265 и MPEG-H Part 2) кадр может быть сначала разделен на единицы дерева кодирования (CTU), которые представляют собой блоки заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Эти единицы CTU содержат отсчеты обеих – яркостной и цветностной, составляющих. Деревья кодирования могут быть использованы для разделения единиц CTU на блоки и затем рекурсивного дальнейшего подразделения этих блоков до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, яркостные составляющие кадра могут быть подвергнуты подразделению до тех пор, пока не будут получены индивидуальные блоки, имеющие относительно однородные яркостные величины. Далее, цветностные составляющие кадра могут быть подразделены до тех пор, пока не будут получены индивидуальные блоки, имеющие относительно однородные цветовые величины. Соответственно, механизмы разбиения варьируются в зависимости от контента кадров видео.

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

Способ внутрикадрового прогнозирования кодирует блоки в общем кадре. Способ внутрикадрового прогнозирования извлекает преимущества из того факта, что яркостная и цветностные составляющие имеют тенденцию группироваться в одном кадре. Например, площадка зеленого цвета на участке дерева имеет тенденцию располагаться рядом с аналогичными площадками зеленого цвета. Способ внутрикадрового прогнозирования использует большое число направленных режимов прогнозирования (например, тридцать три в стандарте кодирования HEVC), планарный режим и режим постоянного тока (DC). Направленные режимы указывают, что текущий блок подобен/является таким же, как отсчеты из соседнего блока в соответствующем направлении. Планарный режим, указывает, что ряд блоков вдоль строки/столбца (например, плоскость) может быть интерполирован на основе соседних блоков на краях строки. Планарный режим, по существу, обозначает плавный переход яркости/цвета по строке/столбцу с использованием относительно постоянной крутизны изменения величин. Наконец, DC-режим используется для сглаживания границ и обозначает, что некий блок подобен/является таким же, как средняя величина, ассоциированная с отсчетами из всех соседних блоков, ассоциированных с угловыми направлениями направленных режимов прогнозирования. Соответственно, блоки с внутрикадровым прогнозированием могут представлять блоки изображения в виде разнообразных относительных величин режимов прогнозирования вместо фактических величин. Далее, блоки с внутрикадровым прогнозированием могут представлять блоки изображения в виде величин векторов движения вместо фактических величин. В любом случае, блоки прогнозирования могут, в некоторых ситуациях, неточно представлять блоки изображения. Любые различия сохраняются в блоках остатка. К этим блокам остатка могут быть применены преобразования для дальнейшего сжатия файла.

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

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

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

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

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

На фиг. 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 буфера декодированного изображения. Эти компоненты будут теперь рассмотрены.

Прошедший разбиение сигнал 201 видео представляет собой захваченную последовательность видео, которая была разбита на блоки пикселей в соответствии с деревом кодирования. Дерево кодирования использует различные режимы разбиения для подразделения блока пикселей на блоки пикселей меньшего размера. Эти блоки меньшего размера могут быть далее подразделены на еще меньшие блоки. Такие блоки могут называться узлами дерева кодирования. Имеющие больший размер материнские узлы разбивают на имеющие меньший размер дочерние узлы. Число раз, когда производится подразделение узла, называется глубиной узла/дерева кодирования. Разделенные блоки могут быть в некоторых случаях включены в единицы кодирования (CU). Например, единица CU может быть подразделением единицы CTU, содержащим блок яркостной составляющей, блок (и) красной разностной цветностной составляющей (Cr) и блок (и) разностной цветностной составляющей (Cb) вместе с соответствующими синтаксическими командами для единицы CU. Совокупность режимов разбиения может содержать двоичное дерево (binary tree (BT)), троичное дерево (triple tree (TT)) и дерево квадратов или четвертичное дерево (quad tree (QT)), используемые для разбиения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разбиения. Прошедший разбиение сигнал 201 видео направляют компоненту 211 общего управления кодирующим устройством, компоненту 213 преобразовательного масштабирования и квантования, компоненту 215 оценки внутрикадрового прогнозирования, компоненту 227 анализа управления фильтрами и компоненту 221 оценки движения для сжатия.

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

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

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

В некоторых примерах, система 200 кодека может вычислять величины для субцелочисленных позиций пикселей в опорных изображениях, сохраняемых в компоненте 223 буфера декодированного изображения. Например, система 200 кодека для видео может интерполировать величины в позициях четверть пикселя, в позициях одна восьмая пикселя или в других дробных позициях пикселей в опорном изображении. Поэтому, компонент 221 оценки движения могут осуществить поиск движения относительно позиций полных пикселей и позиций дробных пикселей и передать на выход вектор движения с точностью до дробных пикселей. Этот компонент 221 оценки движения вычисляет вектор движения для единицы PU видео блока в срезе, кодированном в режиме межкадрового прогнозирования, путем сравнения положения единицы PU с положением блока прогнозирования в опорном изображении. Компонент 221 оценки движения передает на выход вычисленный вектор движения в качестве данных движения компоненту 231 форматирования заголовка и кодирования CABAC для кодирования и для компенсации движения компоненту 219 компенсации движения.

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

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

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

Компонент 217 внутрикадрового прогнозирования может генерировать блок остатка из блока прогнозирования на основе выбранных режимов внутрикадрового прогнозирования, определяемых компонентом 215 оценки внутрикадрового прогнозирования, когда это осуществляется в кодирующем устройстве, или считывать блок остатка из битового потока, когда это осуществляется в декодирующем устройстве. Этот блок остатка содержит разности величин между блоком прогнозирования и исходным блоком, представленные в виде матрицы. Блок остатка затем передают компоненту 213 преобразовательного масштабирования и квантования. Компонент 215 оценки внутрикадрового прогнозирования и компонент 217 внутрикадрового прогнозирования могут работать и с яркостными, и с цветностными составляющими.

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

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

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

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

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

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

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

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

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

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

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

Помня об изложенном выше, технологии сжатия видео осуществляют пространственное (внутрикадровое) прогнозирование и/или временное (межкадровое прогнозирование) для уменьшения или устранения избыточности присущей последовательностям видео. Для кодирования видео на блочной основе, срез видео (т.е. изображение видео или часть изображения видео) может быть разбит на видео блоки, которые могут также называться блоками дерева, блоками дерева кодирования (CTB), единицами дерева кодирования (CTU), единицами кодирования (CU) и/или узлами кодирования. Видео блоки в срезе с внутрикадровым кодированием (I) в изображении кодируют с использованием пространственного прогнозирования относительно опорных отсчетов в соседних блоках того же самого изображения. Видео блоки в срезе изображения с межкадровым кодированием (P или B) могут быть кодированы с использованием пространственного прогнозирования относительно опорных отсчетов в соседних блоках того же самого изображения или временного прогнозирования относительно опорных отсчетов в других опорных изображениях. Изображения могут называться кадрами и/или картинами, а опорные изображения могут называться опорными кадрами и/или картинами. Порядковый номер POC представляет собой переменную, которая ассоциирована с каждым изображением, которая однозначно идентифицирует ассоциированное с ней изображение среди совокупности всех изображений в кодированной последовательности слоев видео (coded layer video sequence (CLVS)), указывает, что ассоциированное изображение следует передать на выход из буфера DPB, и обозначает позицию ассоциированного с ней изображения в порядке передачи на выход относительно позиций в порядке передачи на выход других изображений из той же самой последовательности CLVS, каковые (изображения) должны быть переданы на выход из буфера DPB. Флаг представляет собой переменную или одноразрядный синтаксический элемент, который может принимать одно из двух возможных значений: 0 и 1.

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

Технология сжатия изображений и видео испытывает в настоящее время быстрый рост, что ведет к появлению разнообразных стандартов кодирования. К таким стандартам кодирования видео относятся разработанный сектором ITU-T стандарт H.261, разработанный Международной организацией по стандартизации/Международной электротехнической комиссией (International Organization for Standardization/International Electrotechnical Commission (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, стандарт Усовершенствованного видео кодирования (Advanced Video Coding (AVC)), также известный как ITU-T H.264 или ISO/IEC MPEG-4 Part 10, и стандарт Высокоэффективного видео кодирования (High Efficiency Video Coding (HEVC)), также известный как ITU-T H.265 или MPEG-H Part 2. Стандарт AVC имеет такие расширения как Масштабируемое видео кодирование (Scalable Video Coding (SVC)), Многовидовое видео кодирование (Multiview Video Coding (MVC)) и Многовидовое видео кодирование плюс глубина (Multiview Video Coding plus Depth (MVC+D)), а также трехмерный стандарт (3D) AVC (3D-AVC). Стандарт HEVC содержит такие расширения как Масштабируемое кодирование HEVC (Scalable HEVC (SHVC)), Многовидовое кодирование HEVC (Multiview HEVC (MV-HEVC)) и 3D HEVC (3D-HEVC).

Имеется также новый стандарт кодирования видео, называющийся Универсальное видео кодирование (Versatile Video Coding (VVC)), разрабатываемый Объединенной группой экспертов в области видео (JVET), созданной организациями ITU-T и ISO/IEC. Хотя стандарт кодирования VVC имеет несколько рабочих проектов, настоящий документ ссылается только на один из этих Рабочих проектов (Working Draft (WD)) стандарта VVC, а именно B. Bross, J. Chen, and S. Liu, “Versatile Video Coding (Draft 5),” JVET-N1001-v3, 13th JVET Meeting, March 27, 2019 (VVC Draft 5).

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

На фиг. 5 представлена упрощенная схема, иллюстрирующая пример прогнозирования 500 на основе слоев, например, как это осуществляется для определения векторов движения (motion vector (MV)) на этапе 105 сжатия блоков, на этапе 113 сжатия блоков, в компоненте 221 оценки движения, в компоненте 219 компенсации движения и/или в компоненте 421 компенсации движения. Процедура 500 прогнозирования на основе слоев совместима с однонаправленным межкадровым прогнозированием и/или двунаправленным межкадровым прогнозированием, но также осуществляется между изображениями, находящимися в разных слоях.

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

Изображения 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, и т.д.

Изображения 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 представляет собой механизм кодирования отсчетов текущего изображения с использованием в качестве опоры указанных отсчетов в опорном изображении, отличном от текущего изображения, где эти опорное изображение и текущее изображение находятся в одном и том же слое.

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

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

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

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

Масштабируемое кодирование HEVC (scalable HEVC (SHVC)) представляет собой расширение стандарта кодирования HEVC/H.265, создающее поддержку для пространственной масштабируемости и масштабируемости по качеству, многовидовое кодирование HEVC (MV-HEVC) представляет собой расширение стандарта кодирования HEVC/H.265, создающее поддержку для многовидовой масштабируемости, и кодирование 3D HEVC (3D-HEVC) представляет собой расширение стандарта кодирования HEVC/H.264, создающее поддержку для трехмерного (3D) кодирования видео, которое является более совершенным и более эффективным, чем кодирование MV-HEVC. Отметим, что временная масштабируемость включена в качестве интегральной части кодека для однослойного кодирования HEVC. Структура многослойного расширения кодирования HEVC используют идею, что декодированные изображения, используемые для межслойного прогнозирования, поступают из той же самой единицы доступа (AU) и рассматриваются в качестве долговременных опорных изображений (long-term reference picture (LTRP)), и этим изображениям присваивают опорные индексы в списке (ах) опорных изображений вместе с другими временными опорными изображениями в текущем слое. Процедура межслойного прогнозирования (inter-layer prediction (ILP)) осуществляется на уровне единиц прогнозирования (PU) путем установления величины опорного индекса для ссылки на межслойное опорное изображение (я) в списке (ах) опорных изображений.

В частности, обе функции – редискретизация опорного изображении и пространственная масштабируемость, требуют редискретизации опорного изображения или его части. Процедура редискретизации опорного изображения (reference picture resampling (RPR)) может быть реализована либо на уровне изображения, либо на уровне блока кодирования. Однако, когда редискретизацию RPR рассматривают в качестве функции кодирования, она является функцией однослойного кодирования. Даже если так, можно или даже предпочтительно с точки зрения структуры кодека использовать один и тот же редискретизирующий фильтр и для функции редискретизации RPR при однослойном кодировании, и для функции пространственной масштабируемости при многослойном кодировании.

Фиг. 6 иллюстрирует пример процедуры 600 прогнозирования на основе слоев, использующей выходные множества слоев (OLS), например, как это осуществляется для определения векторов MV на этапе 105 сжатия блоков, этапе 113 декодирования блоков, в компоненте 221 оценки движения, в компоненте 219 компенсации движения, в компоненте 321 компенсации движения и/или в компоненте 421 компенсации движения. Процедура 600 прогнозирования на основе слоев совместима с однонаправленным межкадровым прогнозированием и/или с двунаправленным межкадровым прогнозированием, но также осуществляется между изображениями в разных слоях. Процедура прогнозирования на основе слоев, показанная на фиг. 6, аналогична процедуре, показанной на фиг. 5. Поэтому, для краткости, полное описание процедуры прогнозирования на основе слоев повторено не будет.

Некоторые слои из кодированной последовательности 690 видео (CVS), показанной на фиг. 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+3 634. Множество OLS 3 содержит Слой N 631, Слой N+1 632 и Слой N+2 633. Несмотря на то, что показаны три множества OLS, в практических приложениях может быть использовано другое число множеств OLS. Другие слои, такие как Слой N+4 635, не включены в иллюстрируемые множества OLS (например, множества OLS 1, 2 и 3), но доступны для включения в другие множества OLS.

Каждое из разных множеств OLS может содержать любое число слоев. Разные множества OLS генерируют с целью аккомодации кодирующих возможностей разнообразных других устройств, имеющих разные кодирующие возможностей. Например, множество OLS 1, содержащее только два слоя, может быть сформировано для аккомодации мобильного телефона с относительно ограниченными кодирующими возможностями. С другой стороны, множество OLS 2, содержащее четыре слоя, может быть сформировано для аккомодации широкоэкранного телевизора, способного декодировать более высокие слои, чем мобильный телефон. Множество OLS 3, которое содержит три слоя, может быть сформировано для аккомодации персонального компьютера, портативного компьютера или планшетного компьютера, которые могут быть способны декодировать более высокие слои, чем мобильный телефон, но не могут декодировать самые высокие слои, как это может делать широкоэкранный телевизор.

Слои, показанные на фиг. 6, могут быть все независимы один от другого. Иными словами, каждый слой может быть кодирован без использования межслойного прогнозирования (ILP). В этом случае, слои называются одиночными слоями. Один или несколько слоев, показанных на фиг. 6, могут быть также кодированы с использованием прогнозирования ILP. Являются ли эти слои одиночными слоями, или кодируют ли некоторые из этих слоев с использованием прогнозирования ILP, сигнализируют посредством флага в наборе параметров видео (VPS), который будет более полно обсуждаться ниже. Когда некоторые слои используют прогнозирование ILP, соотношения зависимости между слоями также сигнализируют в наборе VPS.

В одном из вариантов, когда слои являются одиночными слоями, только один слой выбирают для декодирования и передачи на выход. В одном из вариантов, когда некоторые слои используют прогнозирование ILP, все слои (например, полный битовый поток) специфицируют, как подлежащие декодированию, и некоторые слои из этой совокупности слоев специфицируют в качестве выходных слоев. Выходной слой или слои могут представлять собой, например, 1) только самый верхний слой, 2) все слои или 3) самый верхний слой плюс множество обозначенных более низких слоев. Например, когда указанные самый верхний слой плюс множество обозначенных более низких слоев назначены для передачи на выход посредством флага в наборе VPS, на выход передают слой N+3 634 (который является самым верхним слоем) и слои N 631 и N+1 632 (являющиеся более низкими слоями) из множества OLS 2.

Как показано на фиг. 6, каждый слой содержит любое число изображений. Например, Слой N 631 содержит изображения 615-618, Слой N+1 632 содержит изображения 611-614, Слой N+2 633 содержит изображения 641-644, Слой N+3 634 содержит изображения 651-654, и Слой N+4 635 содержит изображения 661-664.

На фиг. 7 представлена упрощенная схема, иллюстрирующая пример многослойной последовательности 700 видео, конфигурированной для временной масштабируемости. Эта многослойная последовательность 700 видео может быть кодирована посредством кодирующего устройства, такого как система 200 кодека и/или кодирующее устройство 300, и декодирована посредством декодирующего устройства, такого как система 200 кодека и/или декодирующее устройство 400, например, в соответствии со способом 100. Эта многослойная последовательность 700 видео включена сюда для описания другого примера применения слоев в кодированной последовательности видео. Например, многослойная последовательность 700 видео может быть использована в качестве отдельного варианта или может быть комбинирована с технологиями, рассмотренными в отношении прогнозирования 500 или 600 на основе слоев.

Такая многослойная последовательность 700 видео содержит подслои 710, 720 и 730. Подслой представляет собой масштабируемый по времени слой в масштабируемом по времени битовом потоке, который содержит единицы VCL NAL (например, изображения) с конкретным значением временного идентификатора, равно как ассоциированные с ними единицы не-VCL NAL (например, поддерживающие параметры). Подслой 710 может называться базовым слоем, а подслои 720 и 730 могут называться расширительными слоями. Как показано, подслой 710 содержит изображения 711 с первой частотой кадров, например, тридцать кадров в секунду. Подслой 710 представляет собой базовый слой, поскольку этот подслой 710 имеет базовую/самую низкую частоту кадров. Подслой 720 содержит изображения 721, которые смещены во времени относительно изображений 711 в подслое 710. В результате подслой 710 и подслой 720 можно комбинировать, вследствие чего частота кадров комбинации подслоев становится коллективно выше частоты кадров одного подслоя 710. Например, подслой 710 и подслой 720 могут иметь комбинированную частоту кадров шестьдесят кадров в секунду. Соответственно, подслой 720 увеличивает частоту кадров подслоя 710. Далее, подслой 730 содержит изображения 731, которые также смещены во времени относительно изображений 721 и 711 в подслоях 720 и 710. Это позволяет комбинировать подслой 730 с подслоями 720 и 710 для дальнейшего расширения подслоя 710. Например, подслои 710, 720 и 730 могут иметь комбинированную частоту кадров, равную девяносто кадров в секунду.

Представление 740 по подслоям может быть создано динамически посредством комбинирования подслоев 710, 720 и/или 730. Представление 740 по подслоям представляет собой подмножество битового потока, содержащее единицы NAL конкретного подслоя и более низких подслоев. В показанном примере, представление 740 по подслоям содержит изображения 741, представляющие собой комбинированные изображения 711, 721 и 731 из подслоев710, 720 и 730. Соответственно, многослойная последовательность 700 видео может быть масштабирована во времени до нужной частоты кадров путем выбора представления 740 по подслоям, содержащего необходимую группу подслоев 710, 720 и/или 730. Представление 740 по подслоям может быть создано с использованием множества OLS, которое содержит подслои 710, 720 и/или 730 в качестве слоев. В таком случае, представление 740 по подслоям выбирают в качестве выходного слоя. Таким образом, временная масштабируемость является одним из ряда механизмов, которые могут быть осуществлены с использованием многослойных механизмов.

В одном из вариантов, каждый из подслоев 710, 720 и 730 ассоциирован с временным идентификатором (ID), который может быть обозначен как идентификатор TemporalID. Например, подслой 710 может иметь идентификатор TemporalID 755, подслой 720 может иметь идентификатор TemporalID 757 и подслой 730 может иметь идентификатор TemporalID 759. Эти идентификаторы TemporalID 755, 757 и 759 могут быть использованы для однозначной идентификации каждого из подслоев.

В одном из вариантов, синтаксический элемент, обозначенный как vps_max_sublayers_minus1, плюс 1 специфицирует максимальное число временных подслоев (например, подслои 710, 720, 730, и т.д.), которые могут присутствовать в слое (например, в слое 631, 632, и т.д.), специфицированном набором VPS. В одном из вариантов, значение элемента vps_max_sublayers_minus1 должно быть в диапазоне от 0 до 6, включительно. Поэтому, многослойная последовательность 700 видео содержит максимальное число подслоев в диапазоне от одного до семи.

В примере, показанном на фиг. 7, подслой 730 представляет собой подслой, наиболее удаленный от подслоя 710, который является базовым подслоем. Иными словами, ни один из подслоев, показанных на фиг. 7, не находится над, за пределами или выше подслоя 730. Поэтому, подслой 730, показанный на фиг. 7, может называться представлением самого верхнего подслоя.

Стандарты кодирования видео, такие как HEVC, SHVC, MV-HEVC и VVC, специфицируют и сообщают в виде сигнализации профиль, ярус и уровень. Профили, ярусы и уровни специфицируют ограничения на потоки битов данных и, следовательно, пределы функциональных возможностей, необходимых для декодирования этих битовых потоков. Профили, ярусы и уровни могут также быть использованы для индикации точек взаимодействия между индивидуальными реализациями декодирующих устройств. Профиль представляет собой определенный набор инструментов кодирования, используемый для создания совместимого или соответствующего битового потока. Каждый профиль специфицирует подмножество алгоритмических функций и пределов, которые должны поддерживаться всеми декодирующими устройствами, соответствующими этому профилю.

Уровень представляет собой набор ограничений для битового потока (например, максимальная скорость передачи отсчетов яркостной составляющей, максимальная скорость передачи битов данных для некоторого разрешения, и т.п.). Иными словами, уровень представляет собой набор ограничений, указывающих требуемые характеристики декодирующего устройства для воспроизведения битового потока, имеющего специфицированный профиль.

Уровни разделены на два яруса: Главный (Main) и Высокий (High). Главный ярус является более низким ярусом по сравнению с Высоким ярусом. Эти ярусы были введены для работы с приложениями, отличающимися одно от другого с точки зрения максимальной скорости передачи битов данных. Главный ярус был разработан для большинства приложений, тогда как Высокий ярус был создан для приложений с очень высокими требованиями. Набор ограничений и/или ярусов, соответствующих уровням, может называться здесь информацией уровней.

Каждый уровень яруса специфицирует набор предельных значений, которые могут быть приняты синтаксическими элементами конкретного стандарта (например, стандарта HEVC, VVC). Один и тот же набор из дефиниций яруса и уровня используется для всех профилей, однако индивидуальные варианты реализации могут поддерживать различные ярусы и в пределах одного яруса разные уровни для каждого поддерживаемого профиля. Для любого конкретного профиля, уровень яруса в общем случае соответствует конкретной процессорной нагрузке декодирующего устройства и возможностям запоминающего устройства.

При использовании стандарта кодирования HEVC, репрезентативный пример уровней и ярусов для различных профилей приведен в таблице 1 ниже.

Таблица 1

Уровень Макс. скорость передачи битов данных для главного варианта
4:4:4 12 профиль
(1000 бит/с)
Макс. скорость передачи битов данных для высокой пропускной способности
4:4:4 16 профиль для внутрикадр. прогнозирования
(1000 бит/с)
Пример разрешения изображения при наивысшей частоте кадров
(MaxDPBsize)
Главный ярус Высокий ярус Главный ярус Высокий ярус 5.2 180,000 720,000 5,760,000 23,040,000 4,096×2,160@120.0 6 180,000 720,000 5,760,000 23,040,000 8,192×4,320@30.0 6.1 180,000 720,000 11,520,000 46,080,000 8,192×4,320@60.0 6.2 720,000 2,400,000 23,040,000 76,800,000 8,192×4,320@120.0

Параметры профиля, яруса и уровня (PTL) представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру profile_tier_level( )), которая предоставляет указания профиля, яруса и/или уровня, как это приведено в таблице выше. Параметры буфера декодированного изображения (DPB) представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру dpb_parameters( )), которая предоставляет размер буфера DPB и, в качестве опции, информацию о максимальном числе переупорядоченных изображений и максимальной задержке. Максимальное число переупорядоченных изображений и информация о максимальной задержке могут быть коллективно обозначены акронимом MRML. Параметры декодера HRD представляют собой синтаксическую структуру (например, i-ю синтаксическую структуру ols_timing_hrd_parameters( )), которая инициализирует и/или определяет рабочие условия декодера HRD. Ниже приведены дальнейшие подробности и специфика относительно одного или нескольких объектов – параметров PTL, параметров буфера DPB и параметров декодера HRD.

В одном из вариантов, максимальное число переупорядоченных изображений обозначено dpb_max_num_reorder_pics[ i ], и этот параметр специфицирует максимально допустимое число изображений во множестве OLS, которые могут предшествовать любому изображению в этом множестве OLS в порядке декодирования и следовать за этим изображением в порядве передачи на выход, когда идентификатор Htid равен i. Величина числа dpb_max_num_reorder_pics[ i ] должна быть в диапазоне от 0 dpb_max_dec_pic_buffering_minus1[ i ], включительно. Когда i больше 0, число dpb_max_num_reorder_pics[ i ] должно быть не меньше чем dpb_max_num_reorder_pics[ i − 1 ]. Когда число dpb_max_num_reorder_pics[ i ] не присутствует для индекса i в диапазоне от 0 до MaxSubLayersMinus1 − 1, включительно, из-за того, что флаг subLayerInfoFlag равен 0, это число признают равным dpb_max_num_reorder_pics[ MaxSubLayersMinus1 ]. Идентификатор Htid представляет собой переменную, идентифицирующую самый верхний временной подслой, подлежащий декодированию.

Параметр dpb_max_dec_pic_buffering_minus1[ i ] плюс 1 специфицирует максимальный требуемый размер буфера DPB в единицах буферов для хранения изображений, когда идентификатор Htid равен i. Величина параметра dpb_max_dec_pic_buffering_minus1[ i ] должна быть в диапазоне от 0 до MaxDpbSize − 1, включительно, где величина MaxDpbSize соответствует тому, как это специфицировано в подстатье A.4.2 в стандарте кодирования VVC. Когда i больше 0, величина dpb_max_dec_pic_buffering_minus1[ i ] должна быть не меньше чем dpb_max_dec_pic_buffering_minus1[ i − 1 ]. Когда параметр dpb_max_dec_pic_buffering_minus1[ i ] не присутствует для индекса i в диапазоне от 0 до MaxSubLayersMinus1 − 1, включительно, из-за того, что флаг subLayerInfoFlag равен 0, этот параметр признают равным dpb_max_dec_pic_buffering_minus1[ MaxSubLayersMinus1 ].

В одном из вариантов, информацию о максимальной задержке обозначают dpb_max_latency_increase_plus1[ i ]. Величина параметра dpb_max_latency_increase_plus1[ i ] не равная 0 используется для вычисления величины MaxLatencyPictures[ i ], которая специфицирует максимальное число изображений во множестве OLS, какие могут предшествовать любому изображению в этом множестве OLS в порядке выхода и следовать за этим изображением в порядке декодирования, когда идентификатор Htid равен i.

MaxLatencyPictures[ i ] = dpb_max_num_reorder_pics[ i ] + dpb_max_latency_ increase_plus1[ i ] – 1.

К сожалению, информацию уровней (и возможно другие параметры PTL), параметры декодера HRD и параметры буфера DPB приходится передавать в виде сигнализации для каждого из слоев (например, слоев 631, 632, и т.д.) в многослойном битовом потоке, даже если эти параметры PTL, параметры декодера HRD и/или параметры буфера DPB являются одинаковыми для одного или нескольких слоев (например, когда все слои имеют по одинаковому числу подслоев). Поэтому одни и те же параметры приходится многократно передавать в виде сигнализации в многослойном битовом потоке, что вызывает избыточность и неэффективность в процессе кодирования.

Предлагаемые здесь способы обеспечивают, что многократная передача в виде сигнализации параметров профиля, яруса и уровня (PTL), параметров гипотетического эталонного декодера (HRD) и параметров буфера декодированного изображения (DPB) не производится для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

Фиг. 8 иллюстрирует один из вариантов битового потока 800 видео. Как используется здесь, битовый поток 800 может также называться кодированным битовым потоком видео, битовым потоком или каким-либо другим вариантом этого термина. Как показано на фиг. 8, битовый поток 800 содержит по меньшей мере одну единицу 801 изображения (picture unit (PU)). Хотя на фиг. 8 показаны три единицы PU 801, в практических приложениях в битовом потоке 800 данных может присутствовать другое число единиц PU 801. Каждая единица PU 801 представляет собой группу единиц NAL, которые ассоциированы одна с другими в соответствии со специфицированным правилом классификации, являются последовательными в порядке декодирования и содержат точно одно кодированное изображение (например, изображение 814).

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

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

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

В одном из вариантов, набор VPS 804 содержит флаг 850. В одном из вариантов, флаг 850 обозначен как vps_default_ptl_dpb_hrd_max_tid_flag. Флаг 850 может быть установлен или иметь первую величину (например, единица) или вторую величину (например, нуль). Когда 850 не присутствует, его величину признают равной 1. Флаг 850, имеющий первую величину, специфицирует, что синтаксические элементы vps_ptl_max_tid[ i ], vps_dpb_max_tid[ i ] и vps_hrd_max_tid[ i ] не присутствуют в наборе VPS 804 и их признают равными величине по умолчанию vps_max_sublayers_minus1. Иными словами, временной идентификатор (tid) для представления самого верхнего подслоя (например, подслоя 730), соответствующего параметрам профиля, яруса, уровня (PTL), параметрам буфера декодированного изображения (DPB) и параметрам гипотетического эталонного декодера (HRD), не присутствует в наборе VPS 804.

Параметр vps_ptl_max_tid[ i ] специфицирует идентификатор TemporalId для представления самого верхнего подслоя (например, подслоя 730), для которого информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS 804, и идентификатор TemporalId представления самого верхнего подслоя, присутствующий во множествах OLS с индексом OLS, равным olsIdx, так что параметр vps_ols_ptl_idx[ olsIdx ] равен i.

Параметр vps_dpb_max_tid[ i ] специфицирует идентификатор TemporalId представления самого верхнего подслоя (например, подслоя 730), для которого параметры буфера DPB могут присутствовать в i-й синтаксической структуре dpb_parameters( ) в наборе VPS 804. Величина параметра vps_dpb_max_tid[ i ] должна быть в диапазоне от 0 до vps_max_sublayers_minus1, включительно. Когда этот параметр vps_dpb_max_tid[ i ] не присутствует, его признают равным vps_max_sublayers_minus1.

Параметр vps_hrd_max_tid[ i ] специфицирует идентификатор TemporalId для представления самого верхнего подслоя (например, подслоя 730), для которого параметры декодера HRD содержатся в i-й синтаксической структуре ols_timing_hrd_parameters( ). В одном из вариантов, эта i-я синтаксическая структура ols_timing_hrd_parameters( ) присутствует в наборе VPS 804 или в наборе параметров последовательности (SPS) 806. Величина параметра vps_hrd_max_tid[ i ] должна быть в диапазоне от 0 до vps_max_sublayers_minus1, включительно. Когда этот параметр vps_hrd_max_tid[ i ] не присутствует, его признают равным vps_max_sublayers_minus1.

Параметр vps_max_sublayers_minus1 плюс 1 специфицирует максимальное число временных подслоев (например, подслои 710, 720, 730), которые могут присутствовать в слое (например, в слоях 631, 632, 633, и т.д.), специфицированном набором VPS 804. В одном из вариантов, величина параметра vps_max_sublayers_minus1 находится в диапазоне от 0 до 6, включительно. Таким образом, максимальное число подслоев находится в диапазоне от одного до семи. Иными словами, в многослойном битовом потоке могут присутствовать от одного до семи подслоев в зависимости от значения параметра vps_max_sublayers_minus1.

Флаг 850, имеющий вторую величину, специфицирует, что синтаксические элементы vps_ptl_max_tid[ i ], vps_dpb_max_tid[ i ], и vps_hrd_max_tid[ i ] присутствуют в наборе VPS 804. Иными словами, в наборе VPS 804 присутствует временной идентификатор (tid) для представления самого верхнего подслоя (например, подслоя 730), соответствующего параметрам профиль, ярус, уровень (PTL), параметрам буфера декодированного изображения (DPB) и параметрам гипотетического эталонного декодера (HRD).

В одном из вариантов, флаг 850 обозначен как vps_all_layers_same_num_sublayers_flag. Этот флаг 850 может быть установлен или иметь первую величину (например, единицу) или вторую величину (например, нуль). Флаг 850, имеющий первую величину, специфицирует, что число временных подслоев является одинаковым для всех слоев в каждой кодированной последовательности видео (CVS) 816 в соответствии с набором VPS 804. Флаг 850, имеющий вторую величину, специфицирует, что слои в каждой последовательности CVS 816, в соответствии с набором VPS 804, могут иметь или могут не иметь одинаковое число временных подслоев. Когда флаг 850 не присутствует, его признают равным 1. В одном из вариантов, имя и семантика флага 850 изменяются от vps_all_layers_same_num_sublayers_flag к vps_default_ptl_dpb_hrd_max_tid_flag, чтобы только управлять синтаксисом набора VPS, не требуя, чтобы число подслоев было одинаковым для всех слоев.

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

В одном из вариантов, набор VPS 804 и/или набор SPS 806 содержит следующие синтаксис и семантику набора SPS для реализации одного или нескольких рассматриваемых здесь вариантов.

Синтаксис набора VPS содержит следующее.

Синтаксис первичной байтовой последовательности данных (RBSP) в наборе SPS содержит следующее.

Синтаксис буфера DPB содержит следующее.

Синтаксис параметров декодера HRD содержит синтаксис общих параметров декодера HRD, синтаксис параметров OLS HRD и синтаксис параметров декодера HRD для подслоя.

Синтаксис общих параметров декодера HRD содержит следующее.

Синтаксис параметров OLS HRD содержит следующее.

Синтаксис параметров декодера HRD для подслоя содержит следующее.

Семантика набора VPS является следующей.

Параметр vps_max_layers_minus1 плюс 1 специфицирует максимально допустимое число слоев в каждой последовательности CVS согласно набору VPS.

Параметр vps_max_sub_layers_minus1 плюс 1 специфицирует максимальное число подслоев, которые могут присутствовать в каждой последовательности CVS согласно набору VPS. Значение параметра vps_max_sub_layers_minus1 должна быть в диапазоне от 0 до 6, включительно.

Флаг vps_all_layers_same_num_sub_layers_flag равный 1 специфицирует, что число временных подслоев является одинаковым для всех слоев в каждой последовательности CVS согласно набору VPS. Флаг vps_all_layers_same_num_sub_layers_flag равный 0 специфицирует, что слои в каждой последовательности CVS согласно набору VPS могут или не могут иметь одинаковое число временных подслоев. Когда этот флаг vps_all_layers_same_num_sub_layers_flag не присутствует, его признают равным 1.

Флаг 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.

Флаг 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.

Переменную DirectDependentLayerIdx[ i ][ j ], специфицирующую j-ый зависимый от направления слой для i-го слоя, и переменную LayerUsedAsRefLayerFlag[ j ], специфицирующую, используется ли слой с индексом j в качестве опорного слоя каким-либо другим слоем, определяют следующим образом:

for( i = 0; i <= vps_max_layers_minus1; i++ )
LayerUsedAsRefLayerFlag[ j ] = 0
for( i = 1; i < vps_max_layers_minus1; i++ )
if( !vps_independent_layer_flag[ i ] )
for( j = i − 1, k = 0; j >= 0; j− − )
if( vps_direct_dependency_flag[ i ][ j ] ) {
DirectDependentLayerIdx[ i ][ k++ ] = j
LayerUsedAsRefLayerFlag[ j ] = 1
}

Переменную GeneralLayerIdx[ i ], специфицирующую индекс слоя с идентификатором nuh_layer_id равным vps_layer_id[ i ], определяют следующим образом:

for( i = 0; i <= vps_max_layers_minus1; i++ )
GeneralLayerIdx[ vps_layer_id[ i ] ] = i

Флаг 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.

Параметр 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.

Параметр num_output_layer_sets_minus1 плюс 1 специфицирует общее число множеств OLS, специфицированных набором VPS, когда параметр ols_mode_idc равен 2.

Переменную TotalNumOlss, специфицирующую общее число множеств OLS, специфицированных набором VPS, определяют следующим образом:

if( vps_max_layers_minus1 = = 0 )
TotalNumOlss = 1
else if( each_layer_is_an_ols_flag | | ols_mode_idc = = 0 | | ols_mode_idc = = 1 )
TotalNumOlss = vps_max_layers_minus1 + 1
else if( ols_mode_idc = = 2 )
TotalNumOlss = num_output_layer_sets_minus1 + 1

Флаг 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.

Переменную NumLayersInOls[ i ], специфицирующую число слоев в i-ом множестве OLS, и переменную LayerIdInOls[ i ][ j ], специфицирующую величину идентификатора nuh_layer_id для j-ого слоя в i-ом множестве OLS, определяют следующим образом:

NumLayersInOls[ 0 ] = 1
LayerIdInOls[ 0 ][ 0 ] = vps_layer_id[ 0 ]
for( i = 1, i < TotalNumOlss; i++ ) {
if( each_layer_is_an_ols_flag ) {
NumLayersInOls[ i ] = 1
LayerIdInOls[ i ][ 0 ] = vps_layer_id[ i ]
} else if( ols_mode_idc = = 0 | | ols_mode_idc = = 1 ) {
NumLayersInOls[ i ] = i + 1
for( j = 0; j < NumLayersInOls[ i ]; j++ )
LayerIdInOls[ i ][ j ] = vps_layer_id[ j ]
} else if( ols_mode_idc = = 2 ) {
for( k = 0, j = 0; k <= vps_max_layers_minus1; k++ )
if( layer_included_flag[ i ][ k ] )
LayerIdInOls[ i ][ j++ ] = vps_layer_id[ k ]
NumLayersInOls[ i ] = j
}
}

Переменную OlsLayeIdx[ i ][ j ], специфицирующую индекс слоя во множестве OLS для слоя с идентификатором nuh_layer_id равным LayerIdInOls[ i ][ j ], определяют следующим образом:

for( i = 0, i < TotalNumOlss; i++ )
for j = 0; j < NumLayersInOls[ i ]; j++ )
OlsLayeIdx[ i ][ LayerIdInOls[ i ][ j ] ] = j

Самый нижний слой в каждом множестве OLS должен быть независимым слоем. Другими словами, для каждого значения i в диапазоне от 0 до TotalNumOlss − 1, включительно, величина флага vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ] должна быть равна 1.

Каждый слой должен быть включен по меньшей мере в одно множество 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 должен быть выходным слоем этого множества OLS, либо (прямым или непрямым) опорным слоем для выходного слоя этого множества OLS.

Флаг 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.

Переменную OutputLayerFlag[ i ][ j ], для которой значение 1 специфицирует, что j-ый слой в i-ом множестве OLS передают на выход, и значение 0 специфицирует, что j-ый слой в i-ом множестве OLS не передают на выход, определяют следующим образом:

for( i = 0, i < TotalNumOlss; i++ ) {
OutputLayerFlag[ i ][ NumLayersInOls[ i ] − 1 ] = 1
for( j = 0; j < NumLayersInOls[ i ] − 1; j++ )
if( ols_mode_idc[ i ] = = 0 )
OutputLayerFlag[ i ][ j ] = 0
else if( ols_mode_idc[ i ] = = 1 )
OutputLayerFlag[ i ][ j ] = 1
else if( ols_mode_idc[ i ] = = 2 )
OutputLayerFlag[ i ][ j ] = vps_output_layer_flag[ i ][ j ]
}

Примечание – 0-е множество OLS содержит только самый нижний слой (т.е. слой с идентификатором nuh_layer_id равным vps_layer_id[ 0 ]) и для этого 0-го множества OLS единственный входящий в него слой является выходным.

Параметр vps_num_ptls специфицирует число синтаксических структур profile_tier_level( ) в наборе VPS.

Флаг pt_present_flag[ i ] равный 1 специфицирует, что указания профиля, яруса и информации об общих ограничениях присутствуют в i-й синтаксической структуре profile_tier_level( ) в наборе VPS. Флаг pt_present_flag[ i ], равный 0 специфицирует, что указания профиля, яруса и информации об общих ограничениях не присутствуют в i-й синтаксической структуре profile_tier_level( ) в наборе VPS. Значение флага pt_present_flag[ 0 ] признают равным 0. Когда флаг pt_present_flag[ i ] равен 0, указания профиля, яруса и информации об общих ограничениях для i-й синтаксической структуры profile_tier_level( ) в наборе VPS признают такими же, как для ( i − 1 )-й синтаксической структуры profile_tier_level( ) в наборе VPS.

Параметр ptl_max_temporal_id[ i ] специфицирует идентификатор TemporalId для представления самого верхнего подслоя, для которого информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS. Значение параметра ptl_max_temporal_id[ i ] должно быть в диапазоне от 0 до vps_max_sub_layers_minus1, включительно. Когда параметр vps_max_sub_layers_minus1 равен 0, значение параметра ptl_max_temporal_id[ i ] признают равным 0. Когда параметр vps_max_sub_layers_minus1 больше 0 и флаг vps_all_layers_same_num_sub_layers_flag равен 1, значение параметра ptl_max_temporal_id[ i ] признают равным vps_max_sub_layers_minus1.

Параметр vps_ptl_byte_alignment_zero_bit должен быть равен 0.

Параметр ols_ptl_idx[ i ] специфицирует индекс к списку синтаксических структур profile_tier_level( ) в наборе VPS, для синтаксической структуры profile_tier_level( ), применимой к i-ому множеству OLS. Значение параметра ols_ptl_idx[ i ], когда он присутствует, должно быть в диапазоне от 0 до vps_num_ptls − 1, включительно.

Когда параметр NumLayersInOls[ i ] равен 1, синтаксическая структура profile_tier_level( ), применимая к i-ому множеству OLS, присутствует в наборе SPS, к которому обращается слой в i-ом множестве OLS.

Параметр vps_num_dpb_params специфицирует число синтаксических структур dpb_parameters( ) в наборе VPS. Значение параметра vps_num_dpb_params должно быть в диапазоне от 0 до 16, включительно. Когда параметр vps_num_dpb_params не присутствует, его признают равным 0.

Флаг same_dpb_size_output_or_nonoutput_flag равный 1 специфицирует, что в наборе VPS не присутствует синтаксический элемент layer_nonoutput_dpb_params_idx[ i ]. Флаг same_dpb_size_output_or_nonoutput_flag равный 0 специфицирует, что в наборе VPS могут присутствовать или могут не присутствовать синтаксические элементы layer_nonoutput_dpb_params_idx[ i ].

Флаг vps_sub_layer_dpb_params_present_flag используется для управления присутствием синтаксических элементов max_dec_pic_buffering_minus1[ ], max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] в синтаксических структурах dpb_parameters( ) в наборе VPS. Когда флаг vps_sub_dpb_params_info_present_flag не присутствуют, его признают равным 0.

Флаг dpb_size_only_flag[ i ] равный 1 специфицирует, что синтаксические элементы max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] не присутствуют в i-ых dpb_parameters( ) синтаксических структурах в наборе VPS. Флаг dpb_size_only_flag[ i ] равный 1 специфицирует, что синтаксические элементы max_num_reorder_pics[ ] и max_latency_increase_plus1[ ] могут присутствовать в i-ых синтаксических структурах dpb_parameters( ) в наборе VPS.

Параметр dpb_max_temporal_id[ i ] специфицирует идентификатор TemporalId представления самого верхнего подслоя, для которого параметры буфера DPB могут присутствовать в i-й синтаксической структуре dpb_parameters( ) в наборе VPS. Параметр dpb_max_temporal_id[ i ] должен быть в диапазоне от 0 до vps_max_sub_layers_minus1, включительно. Когда параметр vps_max_sub_layers_minus1 равен 0, значение идентификатора dpb_max_temporal_id[ i ] признают равным 0. Когда параметр vps_max_sub_layers_minus1 больше 0 и флаг vps_all_layers_same_num_sub_layers_flag равен 1, значение параметра dpb_max_temporal_id[ i ] признают равным vps_max_sub_layers_minus1.

Параметр layer_output_dpb_params_idx[ i ] специфицирует индекс к списку синтаксических структур dpb_parameters( ) в наборе VPS, для синтаксической структуры dpb_parameters( ), которая применяется к i-ому слою, когда он является выходным слоем во множестве OLS. Когда параметр layer_output_dpb_params_idx[ i ] присутствует, его значение должно быть в диапазоне от 0 до vps_num_dpb_params − 1, включительно.

Если флаг vps_independent_layer_flag[ i ] равен 1, синтаксическая структура dpb_parameters( ), которая применяется к i-ому слою, когда он является выходным слоем, представляет собой синтаксическую структуру dpb_parameters( ), присутствующую в наборе SPS, к которому обращается указанный слой.

В противном случае (флаг vps_independent_layer_flag[ i ] равен 0), применяется следующее:

Когда параметр vps_num_dpb_params равен 1, значение параметра layer_output_dpb_params_idx[ i ] признают равным 0.

Требование соответствия битового потока состоит в том, что значение параметра layer_output_dpb_params_idx[ i ] должно быть таким, что параметр dpb_size_only_flag[ layer_output_dpb_params_idx[ i ] ] равен 0.

Параметр layer_nonoutput_dpb_params_idx[ i ] специфицирует индекс к списку синтаксических структур dpb_parameters( ) в наборе VPS, для синтаксической структуры dpb_parameters( ), которая применяется к i-ому слою, когда этот слой не является выходным слоем во множестве OLS. Когда параметр layer_nonoutput_dpb_params_idx[ i ] присутствует, его значение должно быть в диапазоне от 0 до vps_num_dpb_params − 1, включительно.

Если флаг same_dpb_size_output_or_nonoutput_flag равен 1, применяется следующее:

Если флаг vps_independent_layer_flag[ i ] равен 1, синтаксическая структура dpb_parameters( ), применяемая к i-ому слою, когда он не является выходным слоем, представляет собой синтаксическую структуру dpb_parameters( ), присутствующую в наборе SPS, к которому обращается указанный слой.

В противном случае (флаг vps_independent_layer_flag[ i ] равен 0), значение параметра layer_nonoutput_dpb_params_idx[ i ] признают равным layer_output_dpb_params_idx[ i ].

В противном случае (флаг same_dpb_size_output_or_nonoutput_flag равен 0), когда параметр vps_num_dpb_params равен 1, значение параметра layer_output_dpb_params_idx[ i ] признают равным 0.

Флаг vps_extension_flag равный 0 специфицирует, что в синтаксической структуре VPS RBSP не присутствуют синтаксические элементы vps_extension_data_flag. Флаг vps_extension_flag равный 1 специфицирует, что в синтаксической структуре VPS RBSP присутствуют синтаксические элементы vps_extension_data_flag.

Флаг vps_extension_data_flag может иметь любое значение. Его присутствие и значение не влияют на соответствие декодирующего устройства профилям, специфицированным в этой версии настоящего Описания. Декодирующие устройства, соответствующие этой версии настоящего Описания должны игнорировать все синтаксические элементы с флагом vps_extension_data_flag.

Семантика синтаксических структур SPS RBSP является следующей.

Синтаксическая структура SPS RBSP должна быть доступна для процедуры декодирования прежде, чем будет обращение к этой структуре, должна быть включена по меньшей мере в одну единицу доступа с идентификатором TemporalId равным 0 или предоставлена через внешние средства, и единица SPS NAL, содержащая структуру SPS RBSP должна иметь параметр nuh_layer_id, равный самому нижнему значению идентификатора nuh_layer_id для единиц PPS NAL, которые обращаются к этой структуре.

Все единицы SPS NAL с конкретным значением параметра sps_seq_parameter_set_id в последовательности CVS должны иметь одинаковый контент.

Параметр sps_decoding_parameter_set_id, когда он больше 0, специфицирует значение параметра dps_decoding_parameter_set_id для набора DPS, к которому обращается набор SPS. Когда параметр sps_decoding_parameter_set_id равен 0, набор SPS не обращается к набору DPS и ни к какому набору DPS не обращаются при декодировании каждой последовательности CLVS, обращающейся к набору SPS. Значение параметра sps_decoding_parameter_set_id должно быть одинаковым во всех наборах SPS, к которым обращаются кодированные изображения в битовом потоке.

Параметр sps_video_parameter_set_id, когда он больше 0, специфицирует значение параметра vps_video_parameter_set_id для набора VPS, к которому обращается набор SPS. Когда параметр sps_video_parameter_set_id равен 0, набор SPS не обращается к набору VPS, и ни к какому набору VPS не обращаются при декодировании каждой последовательности CLVS, обращающейся к набору SPS, и значение параметра GeneralLayerIdx[ nuh_layer_id ] признают равным 0, и значение параметра vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] признают равным 1.

Когда параметр vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равен 1, набор SPS, к которому обращается последовательность CLVS с конкретным значением идентификатора nuh_layer_id, равным nuhLayerId, должен иметь параметр nuh_layer_id равный nuhLayerId.

Параметр sps_max_sub_layers_minus1 плюс 1 специфицирует максимальное число временных подслоев, которые могут присутствовать в каждой последовательности CLVS, обращающейся к набору SPS. Значение параметра sps_max_sub_layers_minus1 должно быть в диапазоне от 0 до vps_max_sub_layers_minus1, включительно.

Параметр sps_reserved_zero_4bits должен быть равен 0 в потоках битов данных, соответствующих этой версии настоящего Описания. Другие значения для параметра sps_reserved_zero_4bits зарезервированы для использования в будущем организациями ITU-T | ISO/IEC.

Флаг sps_ptl_dpb_present_flag равный 1 специфицирует, что синтаксическая структура profile_tier_level( ) и синтаксическая структура dpb_parameters( ) присутствуют в наборе SPS. Флаг sps_ptl_dpb_present_flag равный 0 специфицирует, что никакие синтаксические структуры profile_tier_level( ) и никакие синтаксические структуры dpb_parameters( ) не присутствуют в наборе SPS. Значение флага sps_ptl_dpb_present_flag должно быть равно vps_independent_layer_flag[ nuh_layer_id ].

Если параметр vps_independent_layer_flag[ GeneralLayerIdx[ nuh_layer_id ] ] равен 1, переменную MaxDecPicBuffMinus1 устанавливают равной max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ] в синтаксической структуре dpb_parameters( ) в наборе SPS. В противном случае, переменную MaxDecPicBuffMinus1 устанавливают равной max_dec_pic_buffering_minus1[ sps_max_sub_layers_minus1 ] в синтаксической структуре layer_nonoutput_dpb_params_idx[ GeneralLayerIdx[ nuh_layer_id ] ]-th dpb_parameters( ) в наборе VPS.

Флаг gdr_enabled_flag равный 1 специфицирует, что изображения с плавным обновлением декодирования (gradual decoding refresh (GDR)) могут присутствовать в последовательностях CLVS, обращающихся к набору SPS. Флаг gdr_enabled_flag равный 0 специфицирует, что изображения с обновлением GDR не присутствуют в последовательностях CLVS, обращающихся к набору SPS.

Флаг sps_sub_layer_dpb_params_flag используется для управления присутствием синтаксических элементов max_dec_pic_buffering_minus1[ i ], max_num_reorder_pics[ i ] и max_latency_increase_plus1[ i ] в синтаксической структуре dpb_parameters( ) в наборе SPS. Когда флаг sps_sub_dpb_params_info_present_flag не присутствует, его признают равным 0.

Флаг long_term_ref_pics_flag равный 0 специфицирует, что никакие изображения LTRP не используются для межкадрового прогнозирования какого-либо кодированного изображения в последовательности CLVS. Флаг long_term_ref_pics_flag равный 1 специфицирует, что изображения LTRP могут быть использованы для межкадрового прогнозирования одного или нескольких кодированных изображений в последовательности CLVS.

Общая семантика профиля, яруса и уровня имеет следующий вид.

Синтаксическая структура profile_tier_level( ) предоставляет информацию уровней и, в качестве опции, профиль, ярус, субпрофиль и информацию об общих ограничениях (обозначена как информация PT).

Когда синтаксическая структура profile_tier_level( ) включена в набор DPS, множество OlsInScope представляет собой множество OLS, содержащее все слои в полном битовом потоке, который обращается к набору DPS. Когда синтаксическая структура profile_tier_level( ) включена в набор VPS, это множество OlsInScope представляет собой одно или нескольких множеств OLS, специфицированных набором VPS. Когда синтаксическая структура profile_tier_level( ) включена в набор SPS, множество OlsInScope представляет собой множество OLS, которое содержит только один слой, причем этот слой является самым нижним слоем среди всех слоев, обращающихся к этому набору SPS, и этот слой должен быть независимым слоем.

Параметр general_profile_idc обозначает профиль, которому соответствует множество OlsInScope, как это специфицировано в Приложении A (Annex A) к стандарту кодирования VVC. Потоки битов данных не должны содержать значения параметров general_profile_idc, отличные от тех, какие специфицированы в Приложении A. Другие значения параметра general_profile_idc зарезервированы организациями ITU-T | ISO/IEC для использования в будущем.

Флаг general_tier_flag специфицирует контекст яруса для интерпретации параметра general_level_idc, как это специфицировано в Приложении A.

Параметр num_sub_profiles специфицирует число синтаксических элементов general_sub_profile_idc[ i ].

Параметр general_sub_profile_idc[ i ] указывает i-ые метаданные взаимодействия, зарегистрированные так, как это специфицировано Рекомендациями ITU-T T.35, содержание которых не специфицировано в стандарте кодирования VVC.

Параметр general_level_idc указывает уровень, которому соответствует множество OlsInScope, как это специфицировано в Приложении A. Потоки битов данных не должны содержать значения параметра general_level_idc, отличные от тех, какие специфицированы в Приложении A. Другие значения параметры general_level_idc зарезервированы для использования в будущем организациями ITU-T | ISO/IEC.

Примечание 1 – Большее значение параметра general_level_idc обозначает более высокий уровень. Максимальный уровень, сообщаемый в виде сигнализации в наборе DPS для множества OlsInScope, может быть выше уровня, сообщаемого в виде сигнализации в наборе SPS для последовательности CVS, содержащейся во множестве OlsInScope.

Примечание 2 – Когда множество OlsInScope соответствует нескольким профилям, параметр general_profile_idc должен указывать профиль, который дает предпочтительный результат декодирования или предпочтительную идентификацию битового потока, как это определено кодирующим устройством (способом, не специфицированным в настоящем Описании).

Примечание 3 – Когда синтаксическая структура profile_tier_level( ), включенная в набор DPS, и последовательности CVS из множества OlsInScope соответствуют разным профилям, параметр general_profile_idc и параметр level_idc должны обозначать профиль и уровень для декодирующего устройство, способного декодировать множество OlsInScope.

Флаг sub_layer_level_present_flag[ i ] равный 1 специфицирует, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) для представления подслоя с идентификатором TemporalId равным i. Флаг sub_layer_level_present_flag[ i ] равный 0 специфицирует, что информация уровней не присутствует в синтаксической структуре profile_tier_level( ) для представления подслоя с идентификатором TemporalId равным i.

Параметр ptl_alignment_zero_bits должен быть равен 0.

Семантика синтаксического элемента sub_layer_level_idc[ i ] является, за исключением вывода неприсутствуюших величин, такой же, как для синтаксического элемента general_level_idc, но применяется к представлению подслоя с идентификатором TemporalId равным i.

Семантика буфера DPB является следующей.

Синтаксическая структура dpb_parameters( maxSubLayersMinus1, subLayerInfoFlag ) предоставляет информацию о размере буфера DPB, максимальном числе переупорядоченных изображений и максимальной задержке для каждой последовательности CLVS из последовательности CVS.

Когда синтаксическая структура dpb_parameters( ) включена в набор VPS, множества OLS, к которым применяется эта синтаксическая структура dpb_parameters( ), специфицированы этим набором VPS. Когда синтаксическая структура dpb_parameters( ) включена в набор SPS, она применяется к множеству OLS, которое содержит только слой, являющийся самым нижним слоем из совокупности слоев, обращающихся к указанному набору SPS, причем этот слой должен быть независимым слоем.

Параметр max_dec_pic_buffering_minus1[ i ] плюс 1 специфицирует, для каждой последовательности CLVS из последовательности CVS, максимальный требуемый размер буфера декодированного изображения в единицах буферов для хранения изображений, когда идентификатор Htid равен i. Значение параметра max_dec_pic_buffering_minus1[ i ] должно быть в диапазоне от 0 до MaxDpbSize − 1, включительно, где параметр MaxDpbSize является таким, как это специфицировано где-то еще. Когда индекс i больше 0, параметр max_dec_pic_buffering_minus1[ i ] должен быть не меньше чем max_dec_pic_buffering_minus1[ i − 1 ]. Когда параметр max_dec_pic_buffering_minus1[ i ] не присутствует для индекса i в диапазоне от 0 до maxSubLayersMinus1 − 1, включительно, из-за того, что флаг subLayerInfoFlag равен 0, этот параметр признают равным max_dec_pic_buffering_minus1[ maxSubLayersMinus1 ].

Параметр max_num_reorder_pics[ i ] специфицирует, для каждой последовательности CLVS из последовательности CVS, максимально допустимое число изображений последовательности CLVS, которые могут предшествовать какому-либо изображению в этой последовательности CLVS в порядке декодирования и следовать за указанным изображением в порядке выхода, когда идентификатор Htid равен i. Значение параметра max_num_reorder_pics[ i ] должно быть в диапазоне от 0 до max_dec_pic_buffering_minus1[ i ], включительно. Когда индекс i больше 0, параметр max_num_reorder_pics[ i ] должен быть не меньше чем max_num_reorder_pics[ i − 1 ]. Когда параметр max_num_reorder_pics[ i ] не присутствует для индекса i в диапазоне от 0 до maxSubLayersMinus1 − 1, включительно, из-за того, что флаг subLayerInfoFlag равен 0, этот параметр признают равным max_num_reorder_pics[ maxSubLayersMinus1 ].

Параметр max_latency_increase_plus1[ i ] не равный 0 используется для вычисления значения MaxLatencyPictures[ i ], которое специфицирует, для каждой последовательности CLVS из последовательности CVS, максимально допустимое число изображений последовательности CLVS, которые могут предшествовать какому-либо изображению в этой последовательности CLVS в порядке вывода и следовать за указанным изображением в порядке декодирования, когда идентификатор Htid равен i.

Когда параметр max_latency_increase_plus1[ i ] не равен 0, значение параметра MaxLatencyPictures[ i ] специфицируют следующим образом:

MaxLatencyPictures[ i ] = max_num_reorder_pics[ i ] + max_latency_increase_ plus1[ i ] − 1

Когда параметр max_latency_increase_plus1[ i ] равен 0, никакой соответствующий предел не выражен.

Значение параметра max_latency_increase_plus1[ i ] должно быть в диапазоне от 0 до 232 − 2, включительно. Когда параметр max_latency_increase_plus1[ i ] не присутствует для i в диапазоне от 0 до maxSubLayersMinus1 − 1, включительно, из-за того, что флаг subLayerInfoFlag равен 0, этот параметр признают равным max_latency_increase_plus1[ maxSubLayersMinus1 ].

Семантика параметров декодера HRD представляет собой общую семантику параметров декодера HRD.

Общая семантика параметров декодера HRD имеет следующий вид.

Синтаксическая структура general_hrd_parameters( ) представляет параметры декодера HRD, используемые в операциях этого декодера HRD.

Параметр num_ols_hrd_params_minus1 плюс 1 специфицирует число синтаксических структур ols_hrd_parameters( ), присутствующих в синтаксической структуре general_hrd_parameters( ). Значение параметра num_ols_hrd_params_minus1 должно быть в диапазоне от 0 до 63, включительно. Когда параметр TotalNumOlss больше 1, значение параметра num_ols_hrd_params_minus1 признают равным 0.

Параметр hrd_cpb_cnt_minus1 плюс 1 специфицирует число спецификаций альтернативных буферов CPB в битовом потоке последовательности CVS. Значение параметра hrd_cpb_cnt_minus1 должно быть в диапазоне от 0 до 31, включительно.

Параметр hrd_max_temporal_id[ i ] специфицирует идентификатор TemporalId представления самого высокого подуровня, для которого параметры декодера HRD содержатся в i-й синтаксической структуре layer_level_hrd_parameters( ). Значение параметра hrd_max_temporal_id[ i ] должно быть в диапазоне от 0 до vps_max_sub_layers_minus1, включительно. Когда параметр vps_max_sub_layers_minus1 равен 0, значение параметра hrd_max_temporal_id[ i ] признают равным 0.

Параметр ols_hrd_idx[ i ] специфицирует индекс синтаксической структуры ols_hrd_parameters( ), которая применима к i-ому множеству OLS. Значение параметра ols_hrd_idx[[ i ] должно быть в диапазоне от 0 до num_ols_hrd_params_minus1, включительно. Когда параметр ols_hrd_idx[[ i ] не присутствует, его признают равным 0.

Семантика структуры списка опорных изображений является следующей.

Синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) может присутствовать в наборе SPS или в заголовке среза. В зависимости от того, включена ли указанная синтаксическая структура в заголовок среза или в набор SPS, применяется следующее:

– Если синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) присутствует в заголовке среза, эта структура специфицирует индекс listIdx к списку опорных изображений для текущего изображения (изображения, содержащего указанный срез).

– В противном случае (структура присутствует в наборе SPS), синтаксическая структура ref_pic_list_struct( listIdx, rplsIdx ) специфицирует кандидата для индекса listIdx к списку опорных изображений, и термин «текущее изображение» в семантике, специфицированной в оставшейся части настоящей статьи, относится к каждому изображению, которое 1) имеет один или несколько срезов, содержащих индекс ref_pic_list_idx[ listIdx ] равный индексу к списку синтаксических структур ref_pic_list_struct( listIdx, rplsIdx ), включенных в набор SPS, и 2) входит в последовательность CVS, которая обращается к набору SPS.

Параметр num_ref_entries[ listIdx ][ rplsIdx ] специфицирует число входных позиций к синтаксической структуре ref_pic_list_struct( listIdx, rplsIdx ). Значение параметра num_ref_entries[ listIdx ][ rplsIdx ] должно быть в диапазоне от 0 до MaxDecPicBuffMinus1 + 14, включительно.

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

В одном из вариантов, информация DCI 802 содержится в единице не-VCL NAL, обозначенной как единица DCI NAL или единица DPS NAL. Иными словами, единица DCI NAL имеет тип единицы DCI NAL (unit type (NUT)) и единица DPS NAL имеет тип DPS NUT. В одном из вариантов, набор VPS 804 содержится в единице не-VCL NAL, обозначенной как единица VPS NAL. Поэтому единица VPS NAL имеет тип VPS NUT. В одном из вариантов, набор SPS 806 представляет собой единицу не-VCL NAL, обозначенную как единица SPS NAL. Поэтому единица SPS NAL имеет тип SPS NUT. В одном из вариантов, набор PPS 808 содержится в единице не-VCL NAL, обозначенной как единица PPS NAL. Поэтому единица PPS NAL имеет тип PPS NUT.

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

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

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

Каждое изображение 814 содержит один или несколько срезов 818. Срез 818 представляет собой совокупность целого числа полных плиток или совокупность целого числа последовательных полных строк единиц CTU в пределах плитки изображения (например, изображения 814). Каждый срез 818 содержится исключительно в единственной единице NAL (например, единице VCL NAL). Плитка (не показана) представляет собой прямоугольную облоасть из единиц CTU в пределах конкретной строки плиток в изображении (например, изображении 814). Единица CTU (не показана) представляет собой блок CTB отсчетов яркостной составляющей и два соответствующих блока CTB отсчетов цветностных составляющих изoбражения, имеющего три массива отсчетов, или блок CTB отсчетов черно-белого изображения или изображения, которое кодировано с использованием трех раздельных цветовых плоскостей, и синтаксические структуры, используемые для кодирования отсчетов. Блок CTB (не показан) представляет собой блок отсчетов размером N×N для некоторых величин N, так что деление компонента на блоки CTB является разбиением. Блок (не показан) представляет собой массив отсчетов (например, пикселей) размером MxN (M-столбцов на N-строк) или массив коэффициентов преобразования размером MxN.

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

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

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

На фиг. 9 представлен вариант способа 900 декодирования, реализуемого декодирующим устройством для видео (например, декодирующим устройством 400 для видео). Способ 900 может быть осуществлен после того, как битовый поток был напрямую или не напрямую принят от кодирующего устройства для видео (например, кодирующего устройства 300 для видео). Способ 900 совершенствует процедуру декодирования посредством обеспечения, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут передаваться в виде сигнализации повторно для слоев в многослойном битовом потоке. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В блоке 902, декодирующее устройство для видео принимает битовый поток видео. Этот битовый поток видео содержит несколько слоев (например, слои 531, 532), имеющих подслои (например, подслои 710, 720, 730), и набор VPS (например, набор VPS 804). Набор VPS содержит первый флаг (например, флаг 850), имеющий первое значение (например, 1). Первый флаг, имеющий первой значение, специфицирует, что временной идентификатор (TemporalID) представления самого верхнего подслоя (например, подслоя 730) для информации уровней, параметров буфера декодированного изображения (DPB) и параметров обновления гипотетического декодера (HRD) не присутствует в наборе VPS и этот идентификатор признают равным максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS.

В одном из вариантов, максимальное число подслоев находится в диапазоне от одного до семи. В одном из вариантов, информация уровней включена в параметры профиля, яруса и уровня (PTL). В одном из вариантов, информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS. В одном из вариантов, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS. В одном из вариантов, параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

В блоке 904, информация уровней, параметры декодера HRD и параметры буфера DPB, соответствующие временному идентификатору ID представления самого верхнего подслоя, получают из набора VPS.

В блоке 906, декодирующее устройство для видео декодирует изображение из одного из совокупности нескольких слоев для получения декодированного изображения. В одном из вариантов, изображение декодируют без использования параметров декодера HRD. Иными словами, параметры декодера HRD используются для тестирования битового потока на предмет соответствия, а не для декодирования изображений, содержащихся в этом потоке.

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

На фиг. 10 представлен вариант способа 1000 кодирования битового потока видео, реализуемого кодирующим устройством для видео (например, кодирующим устройством 300 для видео). Способ 1000 может быть осуществлен, когда изображение (например, из видео) подлежит кодированию с превращением в битовый поток видео и затем передаче декодирующему устройству для видео (например, декодирующему устройству 400 для видео). Способ 1000 совершенствует процедуру кодирования посредством обеспечения, что одинаковые параметры профиля, яруса и уровня (PTL), одинаковые параметры гипотетического эталонного декодера (HRD) и одинаковые параметры буфера декодированного изображения (DPB) не будут передаваться в виде сигнализации повторно для слоев в многослойном битовом потоке видео. Передача в виде сигнализации одинаковых параметров PTL, одинаковых параметров декодера HRD и одинаковых параметров буфера DPB только однажды уменьшает избыточность и увеличивает эффективность кодирования для многослойных битовых потоков видео. Таким образом, предлагаемое кодирующее устройство/декодирующее устройство (также называемое «кодек») при кодировании видео усовершенствовано относительно сегодняшних кодеков. На практике, усовершенствованная процедура кодирования видео предлагает пользователю лучшие результаты и качество обслуживания, когда происходит передача, прием и/или просмотр видео.

В блоке 1002, кодирующее устройство для видео генерирует несколько слоев (например, слои 531, 532), имеющих подслои (например, подслои 710, 720, 730), и набор VPS (набор VPS 804), содержащий флаг (например, флаг 850).

В блоке 1004, кодирующее устройство для видео устанавливает первый флаг на первое значение с целью спецификации, что временной идентификатор (TemporalID) представления самого верхнего подслоя (например, подслоя 730) для информации уровней, параметров буфера декодированного изображения (DPB) и параметров обновления гипотетического декодера (HRD) не присутствует в наборе VPS и этот идентификатор признают равным максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS.

В одном из вариантов, максимальное число подслоев находится в диапазоне от одного до семи. В одном из вариантов, информация уровней включена в параметры профиля, яруса и уровня (PTL). В одном из вариантов, информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS. В одном из вариантов, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS. В одном из вариантов, параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

В одном из вариантов, способ 1000 далее содержит определение, является ли битовый поток видео, который был кодирован, соответствующим с использованием параметров декодера HRD. Иными словами, определение, соответствует ли кодированный битовый поток стандарту (например, стандарту кодирования VVC).

В блоке 1006, кодирующее устройство для видео кодирует несколько слоев и набор VPS, превращая в битовый поток видео. В блок 1008, кодирующее устройство для видео сохраняет битовый поток видео для передачи декодирующему устройству для видео. Этот битовый поток видео может быть сохранен в запоминающем устройстве до тех пор, пока этот битовый поток видео не передают декодирующему устройству для видео. После приема декодирующим устройством для видео кодированный битовый поток видео может быть декодирован (например, как описано выше) для генерации или предоставления изображения или последовательности видео для представления пользователю на дисплее или экране электронного устройства (например, смартфона, планшета, портативного компьютера, персонального компьютера и т.п.).

Ниже приведены дополнительные и вспомогательные подробности.

Общая процедура декодирования является следующей.

Входными данными для этой процедуры является битовый поток, подлежащий декодированию (BitstreamToDecode). Выходными данными этой процедуры является список декодированных изображений.

Процедуру декодирования специфицируют таким образом, что все декодирующие устройства, которые соответствуют специфицированным профилю и уровню, будут создавать численно идентичные кадрированные декодированные выходные изображения при использовании процедуры декодирования, ассоциированной с указанным профилем, для битового потока, соответствующего указанным профилю и уровню. Любая процедура декодирования, создающая кадрированные декодированные выходные изображения, идентичные тем, какие формируются в результате выполнения описываемой здесь процедуры, (с правильным порядком передачи на выход или синхронизацией передачи на выход, как это специфицировано) соответствуют требованиям к процедуре декодирования согласно стандарту кодирования VVC.

Для каждой единицы IRAP AU (единица AU с внутрикадровой точкой произвольного доступа) в битовом потоке, применяется следующее.

– Если единица AU является первой единицей AU в битовом потоке в порядке декодирования, каждое изображение является изображением мгновенного обновления декодирования (instantaneous decoding refresh (IDR)), либо каждое изображение представляет собой первое изображение в слое, следующем за концом последовательности единиц NAL в порядке декодирования, переменную NoIncorrectPicOutputFlag устанавливают равной 1.

– В противном случае, если некоторые внешние средства, не специфицированные в настоящем Описании, доступны для установления переменной HandleCraAsCvsStartFlag, равной некой величине для единицы AU, переменную HandleCraAsCvsStartFlag устанавливают равной величине, генерируемой внешними средствами, и переменную NoIncorrectPicOutputFlag устанавливают равной переменной HandleCraAsCvsStartFlag.

– В противном случае, обе переменные HandleCraAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливают равными 0.

Для каждой единицы GDR AU в битовом потоке, применяется следующее.

– Если единица AU является первой единицей AU в битовом потоке в порядке декодирования, либо каждое изображение является первым изображением слоя, следующего за концом последовательности единиц NAL в порядке декодирования, переменную NoIncorrectPicOutputFlag устанавливают равной 1.

– В противном случае, если некоторые внешние средства, не специфицированные в настоящем Описании, доступны для установления переменной HandleGdrAsCvsStartFlag, равной некой величине для единицы AU, переменную HandleGdrAsCvsStartFlag устанавливают равной величине, генерируемой внешними средствами, и переменную NoIncorrectPicOutputFlag устанавливают равной переменной HandleGdrAsCvsStartFlag.

– В противном случае, обе переменные HandleGdrAsCvsStartFlag и NoIncorrectPicOutputFlag устанавливают равными 0.

Примечание – Приведенные выше операции, для изображений обоих типов – изображений IRAP и изображений GDR, необходимы для идентификации последовательности CVS в битовом потоке.

Статью 8.1.2 многократно привлекают для каждого кодированного изображения в битовом потоке BitstreamToDecode в порядке декодирования.

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

Эту процедуру привлекают в начале процедуры декодирования для каждого среза изображения не-IDR.

Адресация к опорным изображениям осуществляется через опорные индексы. Опорный индекс представляет собой индекс к списку опорных изображений. При декодировании I-среза (среза с внутрикадровым прогнозированием) не используются никакие списки опорных изображений для декодирования данных этого среза. При декодировании P-среза (среза с однонаправленным межкадровым прогнозированием) используется только один список опорных изображений (Список 0) (т.е. RefPicList[ 0 ]) для декодирования данных этого среза. При декодировании B-среза (среза с двунаправленным межкадровым прогнозированием) используются оба списка опорных изображений – Список 0 опорных изображений и Список 1 опорных изображений (т.е. RefPicList[ 1 ]), для декодирования данных этого среза.

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

– Для каждого индекса i, равного 0 или 1, параметр num_ref_entries[ i ][ RplsIdx[ i ] ] должен быть не меньше чем NumRefIdxActive[ i ].

– Изображение, к которому обращается каждая активная входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], должно присутствовать в буфере DPB и должно иметь временной идентификатор TemporalId не больше такого идентификатора для текущего изображения.

– Изображение, к которому обращается каждая входная позиция в списке RefPicList[ 0 ] или в списке RefPicList[ 1 ], не должно быть текущим изображением и должно иметь флаг non_reference_picture_flag равный 0.

– Входная позиция краткосрочного опорного изображения (short-term reference picture (STRP)) в список RefPicList[ 0 ] или в список RefPicList[ 1 ] для среза изображения, и входная позиция долгосрочного опорного изображения (LTRP) в список RefPicList[ 0 ] или в список RefPicList[ 1 ] для того же самого среза или для другого среза в том же изображения не обращаются к одному и тому же изображению.

– Не должно быть входной позиции LTRP в список RefPicList[ 0 ] или в список RefPicList[ 1 ], для которой разность между параметром PicOrderCntVal для текущего изображения и параметром PicOrderCntVal для изображения, к которому обращается эта входная позиция, не меньше 224.

– Пусть множество setOfRefPics представляет собой множество уникальных изображений, к какому обращаются все входные позиции в список RefPicList[ 0 ], которые имеют такой же параметр nuh_layer_id, как и текущее изображение, и все входные позиции в список RefPicList[ 1 ], имеющие такой же параметр nuh_layer_id, как и текущее изображение. Число изображений во множестве setOfRefPics должно быть не больше чем MaxDecPicBuffMinus1, и множество setOfRefPics должно быть одним и тем же для всех срезов изображения.

– Когда текущее изображение представляет собой изображение пошагового доступа к временному подуровню (Step-wise Temporal Sub-layer Access (STSA)), не должно быть активных входных позиций в список RefPicList[ 0 ] или в список RefPicList[ 1 ], которые имеют идентификатор TemporalId, равный такому идентификатору для текущего изображения.

Когда текущее изображение представляет собой изображение, следующее, в порядке декодирования, за изображением STSA, которое имеет идентификатор TemporalId равный такому идентификатору для текущего изображения, не должно быть изображений, имеющих идентификатор TemporalId, равный такому идентификатору для текущего изображении, и входящих в качестве активных входных позиций в список RefPicList[ 0 ] или в список RefPicList[ 1 ], которые предшествуют изображению STSA в порядке декодирования.

– Изображение, к которому обращается входная позиция каждого изображения ILRP в список RefPicList[ 0 ] или в список RefPicList[ 1 ] для среза текущего изображения, должно находиться в той же самой единице доступа, как и текущее изображение.

– Изображение, к которому обращается входная позиция каждого изображения ILRP в список RefPicList[ 0 ] или в список RefPicList[ 1 ] для среза текущего изображения, должно находиться в буфере DPB и должно иметь параметр nuh_layer_id меньше такого параметра для текущего изображения.

– Каждая входная позиция изображения ILRP в список RefPicList[ 0 ] или в список RefPicList[ 1 ] для среза должна быть активной входной позицией.

Общие аспекты декодера HRD в статье C.1 стандарта кодирования VVC представляют собой следующее.

Это приложение специфицирует гипотетический эталонный декодер (HRD) и его использование для проверки соответствия битового потока и соответствующего декодирующего устройства.

Группа тестов соответствия битового потока необходима для проверки соответствия битового потока, который называется полным битовым потоком и обозначается как битовый поток entireBitstream. Эта группа тестов соответствия битового потока предназначена для тестирования соответствия каждой точки OP в каждом множестве OLS, специфицированном набором VPS.

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

1. Тестируемую рабочую точку, обозначенную как targetOp, выбирают посредством выбора целевого множества OLS с индексом opOlsIdx множества OLS и наибольшим значением идентификатора TemporalId равным opTid. Значение индекса opOlsIdx находится в диапазоне от 0 до TotalNumOlss − 1, включительно. Значение идентификатора opTid находится в диапазоне от 0 до vps_max_sub_layers_minus1, включительно. Каждая пара выбранных значений opOlsIdx и opTid должна быть такой, чтобы подбитовый поток, поступающий на выход в результате процедуры выделения подбитового потока, специфицированной в статье C.6, с использование полного битового потока entireBitstream, индекса opOlsIdx и идентификатора opTid в качестве входных данных, удовлетворял следующим условиям:

– Имеется по меньшей мере одна единица VCL NAL с параметром nuh_layer_id равным каждому из значений параметра nuh_layer_id во множестве LayerIdInOls[ opOlsIdx ] в битовом потоке BitstreamToDecode.

– Имеется по меньшей мере одна единица VCL NAL с идентификатором TemporalId равным opTid в битовом потоке BitstreamToDecode.

2. Если слой в целевой точке targetOp содержит все слои в битовом потоке entireBitstream и идентификатор opTid не меньше наивысшего значения идентификатора TemporalId среди всех единиц NAL в битовом потоке entireBitstream, поток BitstreamToDecode устанавливают идентичным битовому потоку entireBitstream. В противном случае, битовый поток BitstreamToDecode устанавливают в качестве выходного потока посредством привлечении процедуры выделения подбитовых потоков, как это специфицировано в статье с использованием потока entireBitstream, индекса opOlsIdx и идентификатора opTid в качестве входных данных.

3. Значения индекса TargetOlsIdx и идентификатора Htid устанавливают равными opOlsIdx и opTid, соответственно, для точки targetOp.

4. Выбирают параметр ScIdx. Выбранный параметр ScIdx должен быть в диапазоне от 0 до hrd_cpb_cnt_minus1, включительно.

5. Единицу доступа в битовом потоке BitstreamToDecode, ассоциированную с сообщениями SEI с периодом буферизации (присутствуют в битовом потоке TargetLayerBitstream или доступны через внешние средства, не специфицированные в настоящем Описании), применимыми к индексу TargetOlsIdx, выбирают в качестве точки инициализации декодера HRD и называют единицей 0 доступа для каждого слоя в целевом множестве OLS.

6. Синтаксическую структуру ols_hrd_parameters( ) и синтаксическую структуру the sub_layer_hrd_parameters( ), применимые к битовому потоку BitstreamToDecode, выбирают следующим образом:

– Выбирают синтаксическую структуру ols_hrd_idx[ TargetOlsIdx ]-th ols_hrd_parameters( ) в наборе VPS (или поступившую через внешние средства, не специфицированные в настоящем Описании).

– В пределах выбранной синтаксической структуры ols_hrd_parameters( ), если битовый поток BitstreamToDecode представляет собой битовый поток Тип I, выбирают синтаксическую структуру sub_layer_hrd_parameters( Htid ), которая следует сразу же за условием "if( general_vcl_hrd_params_present_flag )", и переменную NalHrdModeFlag устанавливают равной 0; в противном случае (битовый поток BitstreamToDecode представляет собой битовый поток Тип II), выбирают синтаксическую структуру, sub_layer_hrd_parameters( Htid ), следующую сразу же либо после условия "if( general_vcl_hrd_params_present_flag )" (в этом случае переменную NalHrdModeFlag устанавливают равной 0), либо после условия "if( general_nal_hrd_params_present_flag )" (в этом случае переменную NalHrdModeFlag устанавливают равной 1). Когда битовый поток BitstreamToDecode представляет собой битовый поток Типа II и переменная NalHrdModeFlag равна 0, все единицы не-VCL NAL за исключением единиц NAL данных заполнения и все синтаксические элементы leading_zero_8bits, zero_byte, start_code_prefix_one_3bytes trailing_zero_8bits, образующие поток байтов из потока единиц NAL (как это специфицировано в Приложении B (Annex B)), когда они присутствуют, отбрасывают из битового потока BitstreamToDecode, а оставшийся битовый поток назначают битовому потоку BitstreamToDecode.

7. Когда флаг decoding_unit_hrd_params_present_flag равен 1, буфер CPB планируют для работы либо на уровне единиц доступа (в каком случае переменную DecodingUnitHrdFlag устанавливают равной 0), либо на уровне единиц декодирования (в каком случае переменную DecodingUnitHrdFlag устанавливают равной 1). В противном случае, переменную DecodingUnitHrdFlag устанавливают равной 0, и буфер CPB планируют для работы на уровне единиц доступа.

8. Для каждой единицы доступа в битовом потоке BitstreamToDecode, начиная от единицы 0 доступа, выбирают сообщение SEI с периодом буферизации (присутствует в битовом потоке BitstreamToDecode или доступно через внешние средства, не специфицированные в настоящем Описании), которое ассоциировано с рассматриваемой единицей доступа и применяется к индексу TargetOlsIdx, выбирают сообщение SEI с параметрами синхронизации изображений (присутствует в битовом потоке BitstreamToDecode или доступно через внешние средства, не специфицированные в настоящем Описании), которое ассоциировано с рассматриваемой единицей доступа и применяется к индексу TargetOlsIdx, и когда переменная DecodingUnitHrdFlag равна 1 и флаг decoding_unit_cpb_params_in_pic_timing_sei_flag равен 0, выбирают сообщения SEI с информацией о единицах декодирования (присутствуют в битовом потоке BitstreamToDecode или доступны через внешние средства, не специфицированные в настоящем Описании) которое ассоциировано с рассматриваемой единицей доступа и применяется к индексу TargetOlsIdx.

Каждый тест соответствия состоит из комбинации, содержащей по одной опции каждого из приведенных выше этапов. Когда для какого-либо этапа возможно больше одной опции, для любого конкретного теста соответствия выбирают только одну опцию. Все возможные комбинации всех этапов образуют полный набор тестов соответствия. Для каждой тестируемой рабочей точки число тестов соответствия битовых потоков, которые следует осуществить, равно произведению n0 * n1 * n2 * n3, где величины n0, n1, n2 и n3 специфицированы следующим образом:

– n1 равно hrd_cpb_cnt_minus1 + 1.

– n1 представляет собой число единиц доступа в битовом потоке BitstreamToDecode, которые ассоциированы с сообщениями SEI с периодом буферизации.

– n2 определяют следующим образом:

– Если битовый поток BitstreamToDecode представляет собой битовый поток Типа I, n0 равно 1.

– В противном случае (битовый поток BitstreamToDecode представляет собой битовый поток Типа II), n0 равно 2.

– n3 определяют следующим образом:

– Если флаг decoding_unit_hrd_params_present_flag равен 0, n3 равно 1.

– В противном случае, n3 равно 2.

Декодер HRD содержит экстрактор битового потока (присутствует в качестве опции), буфер кодированного изображения (CPB), процедуру мгновенного декодирования, буфер декодированного изображения (DPB), который концептуально содержит подбуфер DPB для каждого слоя, и схему кадрирования выходного изображения.

Для каждого теста соответствия битового потока, размер буфера CPB (число бит) равен CpbSize[ Htid ][ ScIdx ], как специфицировано в статье 7.4.5.2, где параметр ScIdx и параметры декодера HRD специфицированы выше в этой статье, а параметры буфера DPB – max_dec_pic_buffering_minus1[ Htid ], max_num_reorder_pics[ Htid ], и MaxLatencyPictures[ Htid ], для каждого слоя находят или определяют из синтаксической структуры dpb_parameters( ), которая применяется к рассматриваемому слою в зависимости от того, является ли этот слой независимым слоем, и является ли этот слой выходным слоем целевого множества OLS.

Декодер HRD работает следующим образом.

– Декодер HRD инициализируют в единице 0 декодирования, при этом и буфер CPB, и каждый из подбуферов буфера DPB делают пустыми (заполнение каждого подбуфера DPB устанавливают равным 0).

Примечание – После инициализации, декодер HRD не инициализируют снова посредством последующих сообщений SEI с периодом буферизации.

– Гипотетический планировщик потоков (HSS) предоставляет данные, ассоциированные с единицами декодирования, поступающими в каждый буфер CPB в соответствии со специфицированным графиком прихода.

– Данные, ассоциированные с каждой единицей декодирования, извлекают и декодируют мгновенно посредством процедуры мгновенного декодирования в момент извлечения соответствующей единицы декодирования из буфера CPB.

– Каждое декодированное изображение помещают в буфер DPB.

– Декодированное изображение удаляют из буфера DPB, когда оно становится более не нужным в качестве опорного изображения для межкадрового прогнозирования и больше не требуется для передачи на выход.

Далее описана работа буфера декодированного изображения.

Описание в настоящей статье применяется независимо к каждому набору параметров буфера декодированного изображения (DPB), выбранному как это специфицировано в статье C.1.

Буфер декодированного изображения концептуально состоит из подбуферов DPB, и каждый подбуфер DPB содержит буферы для хранения изображений, где каждый из этих буферов сохраняет декодированные изображения одного слоя. Каждый из буферов для хранения изображений может содержать декодированное изображение, маркированное как «используемое в качестве опорного изображения» или сохраняемое для передачи на выход в будущем. Процедура определяет, что статьи C3.2, C3.3 и C3.4 применяются последовательно, как это специфицировано ниже, и применяются независимо для каждого слоя, начиная от самого нижнего слоя во множестве, в порядке увеличения значений параметра nuh_layer_id для слоев во множестве OLS. Когда эти процедуры применяются к какому-то конкретному слою, затронут оказывается только подбуфер DPB для этого конкретного слоя. В описании этих процедур буфером DPB называется подбуфер DPB для рассматриваемого конкретного слоя, а этот конкретный слой называется текущим слоем.

Примечания – В соответствии с синхронизацией вывода изображений из буфера DPB, декодированные изображения с флагом PicOutputFlag равным 1, принадлежащие одной и той же единице доступа, передают на выход последовательно в порядке возрастания значений параметра для этих декодированных изображений.

Пусть изображение n и текущее изображение, представляют собой кодированное изображение или декодированное изображение из единицы n доступа для конкретного значения параметра of nuh_layer_id, где n – неотрицательное целое число.

Далее описано удаление изображений из буфера DPB прежде декодирования текущего изображения.

Удаление изображений из буфера DPB прежде декодирования текущего изображения (но после синтаксического анализа заголовка среза для первого среза текущего изображения) осуществляется мгновенно в момент удаления из буфера CPB первой единицы декодирования из единицы n доступа (содержащей текущее изображение) и происходит следующим образом:

– Привлекают процедуру декодирования для построения списка опорных изображений, как это специфицировано в статье 8.3.2, и процедуру декодирования для маркировки опорного изображения, как это специфицировано в статье 8.3.3.

– Когда текущая единица AU представляет собой единицу CVSS AU, которая не является единицей AU 0, выполняют следующие упорядоченные этапы:

1. Переменную NoOutputOfPriorPicsFlag определяют для тестируемого декодирующего устройства следующим образом:

– Если величины параметров pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic_‌buffering_minus1[ Htid ], полученные для какого-либо изображения в текущей единице AU, отличаются от величин параметров pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_‌flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic_buffering_‌minus1[ Htid ], соответственно, полученных для предыдущего изображения в той же самой последовательности CLVS, флаг NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 посредством тестируемого декодирующего устройства, независимо от значения флага no_output_of_prior_pics_flag.

Примечание – Хотя установление флага NoOutputOfPriorPicsFlag равного флагу no_output_of_prior_pics_flag в этих условиях является предпочтительней, тестируемому декодирующему устройству разрешается в этом случае установить флаг NoOutputOfPriorPicsFlag равный 1.

– В противном случае, флаг NoOutputOfPriorPicsFlag устанавливают равным флагу no_output_of_prior_pics_flag.

2. Значение флага NoOutputOfPriorPicsFlag, найденное для тестируемого декодирующего устройства, применяют к декодеру HRD, так что когда значение флага NoOutputOfPriorPicsFlag равно 1, все буферы для хранения изображений в буфере DPB опустошают без передачи на выход содержащихся в них изображений, и степень заполнения буфера DPB устанавливают равной 0.

– Когда оба следующих условия являются истинными (true) для любых изображений k в буфере DPB, все такие изображения k в буфере DPB удаляют из этого буфера DPB:

– изображение k маркируют как «не используемое в качестве опорного изображения».

– изображение k имеет флаг PictureOutputFlag равный 0, или момент времени выхода этого изображения из буфера DPB наступает не позднее момента времени удаления из буфера CPB первой единицы декодирования (обозначена как единица m декодирования) из текущего изображения n; т.е., временной параметр DpbOutputTime[ k ] не больше временного параметра DuCpbRemovalTime[ m ].

– Каждый раз, когда из буфера DPB удаляют одно изображение, степень заполнения этого буфера DPB уменьшается на единицу.

Далее описан порядок передачи изображений на выход из буфера DPB.

Спецификации этой статьи применяются независимо к каждому набору параметров буфера декодированного изображения (DPB), выбранному как это специфицировано в статье C.1.

Буфер декодированного изображения концептуально состоит из подбуферов DPB, и каждый подбуфер DPB содержит буферы для хранений изображений, каждый из которых сохраняет декодированные изображения одного слоя. Каждый из буферов для хранения изображений содержит декодированное изображение, маркированное как «используемое в качестве опорного изображения» или сохраняемое для передачи на выход в будущем.

Здесь привлекают процедуру передачи на выход и удаления изображений из буфера DPB прежде декодирования текущего изображения, как это специфицировано в статье C.5.2.2, после чего следует вызов процедуры маркировки текущего декодированного изображения и сохранение его, как это специфицировано в статье C.3.4, и, наконец, следует вызов процедуры для дополнительного выталкивания, как это специфицировано в статье C.5.2.3. Процедура «выталкивания» ("bumping") специфицирована в статье C.5.2.4 и привлекается, как это специфицировано в статьях C.5.2.2 и C.5.2.3.

Эти процедуры применяют независимо для каждого слоя, начиная от самого нижнего слоя во множестве OLS, в порядке увеличения значений параметра nuh_layer_id для слоев в этом множестве OLS. Когда эти процедуры применяют для какого-то конкретного слоя, это влияет только на подбуфер DPB для этого конкретного слоя.

Примечание – Во время работы буфера DPB для порядка передачи на выход изображений, так же как при работе буфера DPB для синхронизации передачи на выход, декодированные изображения с флагом PicOutputFlag равным 1 в одной и той же единице доступа также передают на выход последовательно в порядке возрастания значений параметра nuh_layer_id для декодированных изображений.

Пусть изображение n и текущее изображение, представляют собой кодированное изображение или декодированное изображение из единицы n доступа для конкретного значения параметра of nuh_layer_id, где n – неотрицательное целое число.

Далее описана передача на выход и удаление изображений из буфера DPB.

Передача на выход и удаление изображений из буфера DPB прежде декодирования текущего изображения (но после синтаксического анализа заголовка среза для первого среза текущего изображения) осуществляется мгновенно, когда первую единицу декодирования из единицы доступа, содержащей текущее изображение, удаляют из буфера CPB, и происходит следующим образом:

– Привлекают процедуру декодирования для построения списка опорных изображений, как это специфицировано в статье 8.3.2, и процедуру декодирования для маркировки опорного изображения, как это специфицировано в статье 8.3.3.

– Если текущая единица AU представляет собой единицу CVSS AU, которая не является единицей AU 0, выполняют следующие упорядоченные этапы:

1. Переменную NoOutputOfPriorPicsFlag для тестируемого декодирующего устройства определяют следующим образом:

– Если значения параметров pic_width_max_in_luma_samples, pic_height_max_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic_buffering_minus1[ Htid ], полученные для какого-либо изображения из текущей единицы AU, отличаются от значений параметров pic_width_in_luma_samples, pic_height_in_luma_samples, chroma_format_idc, separate_colour_plane_flag, bit_depth_luma_minus8, bit_depth_chroma_minus8 или max_dec_pic_buffering_minus1[ Htid ], соответственно, полученных для предшествующего изображения в той же самой последовательности CLVS, флаг NoOutputOfPriorPicsFlag может (но не должен) быть установлен равным 1 посредством тестируемого декодирующего устройства, независимо от значения флага no_output_of_prior_pics_flag.

Примечание – Хотя установление флага NoOutputOfPriorPicsFlag, равного флагу no_output_of_prior_pics_flag в этих условиях является предпочтительней, тестируемому декодирующему устройству разрешается в этом случае установить флаг NoOutputOfPriorPicsFlag равный 1.

– В противном случае, флаг NoOutputOfPriorPicsFlag устанавливают равным no_output_of_prior_pics_flag.

2. Значение флага NoOutputOfPriorPicsFlag, полученное для тестируемого декодирующего устройства, применяют к декодеру HRD следующим образом:

– Если флаг NoOutputOfPriorPicsFlag равен 1, все буферы для хранения изображений в буфере DPB опустошают без передачи содержащихся в них изображений на выход и устанавливают равную 0 степень заполнения буфера.

– В противном случае (флаг NoOutputOfPriorPicsFlag равен 0), все буферы для хранения изображений, содержащие изображения, маркированные как «не нужно для передачи на выход» или «не используется в качестве опорного изображения», опустошают (без передачи содержимого на выход), и все непустые буферы для хранения изображений из буфера DPB опустошают посредством привлечения процедуры «выталкивания» ("bumping"), специфицированной в статье C.5.2.4, и устанавливают нулевую степень заполнения буфера DPB.

– В противном случае (текущее изображение не является изображением последовательности CLVSS), опустошают все буферы для хранения изображений, содержащие изображение, маркированное как «не нужно для передачи на выход» или «не используется в качестве опорного изображения» (без передачи изображений, содержащихся в этих буферах, на выход). Каждый раз, когда происходит опустошение одного из буферов для хранения изображений, степень заполнения буфера DPB уменьшают на единицу. Когда одно или несколько из следующих условий являются истинными (true), повторно выполняют процедуру «выталкивания», специфицированную в статье C.5.2.4, далее уменьшая степень заполнения буфера DPB на единицу в ответ на опустошение каждого дополнительного буфера для хранения изображений, до тех пор, пока ни одно из следующих условий не будет являться «истинным» (true):

Число изображений в буфере DPB, которые маркированы как «нужное для передачи на выход», больше чем max_num_reorder_pics[ Htid ].

Параметр max_latency_increase_plus1[ Htid ] не равен 0, и в буфере DPB имеется по меньшей мере одно изображение, маркированное как «нужное для передачи на выход», для которого ассоциированная переменная PicLatencyCount не меньше чем MaxLatencyPictures[ Htid ].

Число изображений в буфере DPB не меньше чем max_dec_pic_buffering_minus1[ Htid ] + 1.

Далее описано дополнительное выталкивание.

Процедуры, специфицированные в настоящей статье, осуществляются мгновенно, когда происходит удаление последней единицы декодирования из единицы n доступа, содержащей текущее изображение, из буфера CPB.

Когда текущее изображение имеет флаг PictureOutputFlag равный 1, для каждого изображения в буфере DPB, которое маркировано как «нужно для передачи на выход» и следует за текущем изображением в порядке передачи на выход, ассоциированную переменную PicLatencyCount устанавливают равной PicLatencyCount + 1.

Здесь применяется следующее:

– Если текущее декодированное изображение имеет флаг PictureOutputFlag равный 1, его маркируют как «нужно для передачи на выход» и ассоциированную с ним переменную PicLatencyCount устанавливают равной 0.

– В противном случае (текущее декодированное изображение имеет флаг PictureOutputFlag равный 0), его маркируют как «не нужно для передачи на выход».

Когда одно или несколько из следующих условий является истинным (true), процедуру «выталкивания», специфицированную в статье C.5.2.4 привлекают повторно до тех пор, пока ни одно из следующих условий не будет являться истинным (true):

– Число изображений в буфере DPB, которые маркированы как «нужное для передачи на выход», больше чем max_num_reorder_pics[ Htid ].

– Параметр max_latency_increase_plus1[ Htid ] не равен 0, и в буфере DPB имеется по меньшей мере одно изображение, маркированное как «нужное для передачи на выход», для которого ассоциированное значение переменной PicLatencyCount не меньше чем MaxLatencyPictures[ Htid ].

Далее описана процедура выталкивания.

Процедура «выталкивания» ("bumping") состоит из следующих упорядоченных заданным образом этапов:

Изображение или несколько изображений, которые нужно передать на выход первыми, выбирают таким образом, чтобы это изображение имело наименьшее значение параметра PicOrderCntVal из всех изображений в буфере DPB, маркированных как «нужное для передачи на выход».

Каждое из этих изображений, в порядке возрастания параметра nuh_layer_id, кадрируют с использованием кадрирующего окна соответствия для этого изображения, кадрированное изображение передают на выход, а исходное изображение маркируют как «ненужное для передачи на выход».

Каждый буфер для хранения изображения, содержащий изображение, которое маркировано как «неиспользуемое в качестве опорного изображения» и которое было одним из кадрированных и переданных на выход изображений, опустошают и уменьшают степень заполнения ассоциированного подбуфера DPB на единицу.

Примечание – Для любых двух изображений picA и picB, принадлежащих одной и той же последовательности CVS и передаваемых на выход посредством «процедуры выталкивания», когда изображение picA передают на выход раньше изображения picB, значение параметра PicOrderCntVal для изображения picA меньше значения параметра PicOrderCntVal для изображения picB.

Далее описана процедура выделения подбитового потока.

Входными данными для этой процедуры являются битовый поток inBitstream, индекс targetOlsIdx целевого множества OLS и значение tIdTarget целевого наибольшего идентификатора TemporalId.

Выходными данными этой процедуры является подпоток битового потока outBitstream.

Одно из требований соответствия битового потока для входного битового потока состоит в том, что любой выходной подбитовый поток, который является выходным потоком специфицированной в настоящей статье процедуры, входными данными для каковой являются указанный битовый поток, индекс targetOlsIdx, равный индексу к списку множеств OLS, специфицированных набором VPS, и параметр tIdTarget, равный какой-либо величине от 0 до 6, включительно, и который удовлетворяет следующим условиям, будет соответствующим битовым потоком:

– Указанный выходной подбитовый поток содержит по меньшей мере одну единицу VCL NAL с параметром nuh_layer_id равным каждому из значений параметра nuh_layer_id из списка LayerIdInOls[ targetOlsIdx ].

– Указанный выходной подбитовый поток содержит по меньшей мере одну единицу VCL NAL с идентификатором TemporalId равным tIdTarget.

Примечание – Соответствующий битовый поток содержит одну или несколько единиц NAL кодированного среза с идентификатором TemporalId равным нулю, но не должен содержать единицы NAL с параметром nuh_layer_id равным 0.

Выходной подбитовый поток outBitstream определяют следующим образом:

– Битовый поток outBitstream устанавливают идентичным входному битовому потоку inBitstream.

– Удаляют из битового потока outBitstream все единицы NAL с идентификатором TemporalId больше чем идентификатор tIdTarget.

– Удаляют из битового потока outBitstream все единицы NAL с параметром, nuh_layer_id. Не входящим в список LayerIdInOls[ targetOlsIdx ].

– Удаляют из битового потока outBitstream все единицы SEI NAL, содержащие масштабируемое вложенное сообщение SEI, имеющее флаг nesting_ols_flag равный 1, и при этом нет значения i в диапазоне от 0 до параметра nesting_num_olss_minus1, включительно, так что параметр NestingOlsIdx[ i ] равен targetOlsIdx.

– Когда параметр targetOlsIdx больше 0, удаляют из битового потока outBitstream все единицы l SEI NAL, содержащие немасштабируемое вложенное сообщение SEI с параметром payloadType, равным 0 (период буферизации), 1 (синхронизация изображений) или 130 (информация о единицах декодирования).

Синтаксис масштабируемого вложенного сообщения SEI имеет вид.

Предложена общая семантика полезной нагрузки сообщения SEI.

Следующее относится к применимым слоям или множеству немасштабируемых вложенных сообщений SEI.

– Для немасштабируемого вложенного сообщения SEI, когда параметр payloadType равен 0 (период буферизации), 1 (синхронизация изображений) или 130 (информация о единице декодирования), немасштабируемое вложенное сообщение SEI применяется только к 0-ому множеству OLS.

– Для немасштабируемого вложенного сообщения SEI, когда параметр payloadType равен какому-либо значению из списка VclAssociatedSeiList, это немасштабируемое вложенное сообщение SEI применяется только к тому слою, для которого единицы VCL NAL имеют параметр nuh_layer_id равный параметру nuh_layer_id единицы SEI NAL, содержащей рассматриваемое сообщение SEI.

...

Одно из требований соответствия битового потока состоит в том, что к значению параметра nuh_layer_id для единиц SEI NAL применяются следующие ограничения:

– Когда немасштабируемое вложенное сообщение SEI имеет параметр payloadType равный 0 (период буферизации), 1 (синхронизация изображений) или 130 (информация о единице декодирования), единица SEI NAL, содержащая это немасштабируемое вложенное сообщение SEI, должна иметь параметр nuh_layer_id, равный vps_layer_id[ 0 ].

– Когда немасштабируемое вложенное сообщение SEI имеет параметр payloadType равный какому-либо значению из списка VclAssociatedSeiList, единица SEI NAL, содержащая это немасштабируемое вложенное сообщение SEI, должна иметь параметр nuh_layer_id, равный значению параметра nuh_layer_id для единицы VCL NAL, ассоциированной с указанной единицей SEI NAL.

– Единица SEI NAL, содержащая масштабируемое вложенное сообщение SEI, должна иметь параметр nuh_layer_id равный наименьшему значению параметра nuh_layer_id для всех слоев, к которым применимо это масштабируемое вложенное сообщение SEI (когда флаг nesting_ols_flag масштабируемого вложенного сообщения SEI равен 0), либо равный наименьшему значению параметра nuh_layer_id для всех слоев во множествах OLS, к которым применимо это масштабируемое вложенное сообщение SEI (когда флаг nesting_ols_flag масштабируемого вложенного сообщения SEI равен 1).

Далее предложена семантика масштабируемого вложенного сообщения SEI.

Масштабируемое вложенное сообщение SEI предлагает механизм для ассоциирования сообщений SEI с конкретными множествами OLS или с конкретными слоями.

Масштабируемое вложенное сообщение SEI содержит одно или несколько сообщений SEI. Сообщения SEI, содержащиеся в масштабируемом вложенном сообщении SEI, также называются масштабируемыми вложенными сообщениями.

Одно из требований соответствия битового потока состоит в том, что к содержанию сообщений SEI в масштабируемом вложенном сообщении SEI применяются следующие ограничения:

– Сообщение SEI, имеющее параметр payloadType равный 132 (хэширование декодированного изображения) или 133 (масштабируемое вложение), не должно содержаться в масштабируемом вложенном сообщении SEI.

– Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI с периодом буферизации, синхронизацией изображений или информацией о единицах декодирования, это масштабируемое вложенное сообщение SEI не должно содержать какие-либо другие сообщения SEI с параметром payloadType не равным 0 (период буферизации), 1 (синхронизация изображений) или 130 (информация о единицах декодирования).

Одно из требований соответствия битового потока состоит в том, что следующие ограничения применяются к значению параметра nal_unit_type для единицы SEI NAL, содержащей масштабируемое вложенное сообщение SEI:

– Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI, имеющее параметр payloadType равный 0 (период буферизации), 1 (синхронизация изображений), 130 (информация о единицах декодирования), 145 (зависимость от индикации точки RAP) или 168 (информация о кадрах-полях), единица SEI NAL, содержащая указанное масштабируемое вложенное сообщение SEI, должна иметь параметр nal_unit_type равный PREFIX_SEI_NUT.

Флаг nesting_ols_flag равный 1 специфицирует, что такие масштабируемые вложенные сообщения SEI применяются к конкретным множествам OLS. Флаг nesting_ols_flag равный 0 специфицирует, что такие масштабируемые вложенные сообщения SEI применяются к конкретным слоям.

Одно из требований соответствия битового потока состоит в том, что следующие ограничения применяются к значению флага nesting_ols_flag:

– Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI, имеющее параметр payloadType равный 0 (период буферизации), 1 (синхронизация изображений) или 130 (информация о единицах декодирования), значение флага nesting_ols_flag должно быть равно 1.

– Когда масштабируемое вложенное сообщение SEI содержит сообщение SEI, имеющее параметр payloadType равный какому-либо значению из списка VclAssociatedSeiList, значение флага nesting_ols_flag должно быть равно 0.

Параметр nesting_num_olss_minus1 plus 1 специфицирует число множеств OLS, к которым применяются масштабируемые вложенные сообщения SEI. Значение этого параметра nesting_num_olss_minus1 должно быть в диапазоне от 0 до TotalNumOlss − 1, включительно.

Параметр nesting_ols_idx_delta_minus1[ i ] используется для определения переменной NestingOlsIdx[ i ], специфицирующей индекс множества OLS для i-ого множества OLS, к которому применяется масштабируемое вложенное сообщение SEI, когда флаг nesting_ols_flag равен 1. Значение параметра nesting_ols_idx_delta_minus1[ i ] должно быть в диапазоне от 0 до TotalNumOlss − 2, включительно.

Переменную NestingOlsIdx[ i ] определяют следующим образом.

if( i = = 0 )

NestingOlsIdx[ i ] = nesting_ols_idx_delta_minus1[ i ]

else

NestingOlsIdx[ i ] = NestingOlsIdx[ i − 1 ] + nesting_ols_idx_delta_minus1[ i ] + 1

Флаг nesting_all_layers_flag, равный 1 специфицирует, что масштабируемые вложенные сообщения SEI применяются ко всем слоям, имеющим параметр nuh_layer_id не меньше параметра nuh_layer_id для текущей единицы SEI NAL. Флаг nesting_all_layers_flag равный 0 специфицирует, что масштабируемые вложенные сообщения SEI могут применяться или не могут применяться ко всем слоям, имеющим параметр nuh_layer_id не меньше параметра nuh_layer_id для текущей единицы SEI NAL.

Параметр nesting_num_layers_minus1 плюс 1 специфицирует число слоев, к которым применяются масштабируемые вложенные сообщения SEI. Значение параметра nesting_num_layers_minus1 должно быть в диапазоне от 0 до vps_max_layers_minus1 − GeneralLayerIdx[ nuh_layer_id ], включительно, где параметр nuh_layer_id представляет собой параметр nuh_layer_id для текущей единицы SEI NAL.

Параметр nesting_layer_id[ i ] специфицирует значение параметра nuh_layer_id для i-го слоя, к которому применяются масштабируемые вложенные сообщения SEI, когда флаг nesting_all_layers_flag равен 0. Значение параметра nesting_layer_id[ i ] должно быть больше значения параметра nuh_layer_id, где параметр nuh_layer_id представляет собой параметр nuh_layer_id для текущей единицы SEI NAL.

Когда флаг nesting_ols_flag равен 0, переменную NestingNumLayers, специфицирующую число слоев, к которым применяются масштабируемые вложенные сообщения SEI, и список NestingLayerId[ i ] для i в диапазоне от 0 до NestingNumLayers − 1, включительно, специфицирующий список значений параметра nuh_layer_id для слоев, к которым применяются масштабируемые вложенные сообщения SEI, определяют следующим образом, где параметр nuh_layer_id представляет собой параметр nuh_layer_id для текущей единицы SEI NAL.

Параметр nesting_num_seis_minus1 плюс 1 специфицирует число масштабируемых вложенных сообщений SEI. Значение параметра nesting_num_seis_minus1 должно быть в диапазоне от 0 до 63, включительно.

Параметр nesting_zero_bit должен быть равен 0.

На фиг. 11 представлена упрощенная схема кодирующего устройства 1100 для видео (например, кодирующего устройства 300 для видео или декодирующего устройства 400 для видео) согласно одному из вариантов настоящего изобретения. Это кодирующее устройство 1100 для видео подходит для осуществления вариантов изобретения, как они описываются здесь. Это кодирующее устройство 1100 для видео содержит входящие порты 1110 и приемные модули (Rx) 1120 для приема данных; процессор, логический модуль или центральный процессор (central processing unit (CPU)) 1130 для обработки данных; передающие модули (Tx) 1140 и исходящие порты 1150 для передачи данных; и запоминающее устройство 1160 для сохранения данных. Это устройство 1100 для кодирования видео может также содержать оптоэлектрические (optical-to-electrical (OE)) компоненты и электрооптические (electrical-to-optical (EO)) компоненты, соединенные с входящими портами 1110, приемными модулями 1120, передающими модулями 1140 и исходящими портами 1150 для вывода или ввода оптических или электрических сигналов.

Процессор 1130 реализован посредством аппаратуры и программного обеспечения. Процессор 1130 может быть реализован в виде одного или нескольких кристаллов интегральных схем процессоров CPU, ядер (например, в качестве многоядерного процессора), программируемых пользователем вентильных матриц (field-programmable gate array (FPGA)), специализированных интегральных схем (application specific integrated circuit (ASIC)) и цифровых процессоров сигнала (digital signal processor (DSP)). Этот процессор 1130 осуществляет связь с входящими портами 1110, приемными модулями 1120, передающими модулями 1140, исходящими портами 1150 и запоминающим устройством 1160. Процессор 1130 содержит кодирующий модуль 1170. Этот кодирующий модуль 1170 реализует предлагаемые здесь варианты, рассмотренные выше. Например, кодирующий модуль 1170 реализует, обрабатывает, готовит или осуществляет различные функции кодека. Введение кодирующего модуля 1170, таким образом, создает значительное усовершенствование функциональных возможностей устройства 1100 для кодирования видео и осуществляет трансформацию устройства 1100 для кодирования видео в другое состояние. В качестве альтернативы, кодирующий модуль 1170 реализуется в виде команд, сохраняемых в запоминающем устройстве 1160 и выполняемых процессором 1130.

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

Запоминающее устройство 1160 может содержать один или несколько дисков, накопителей на магнитной ленте и твердотельных накопителей (дисков) и может быть использовано в качестве устройства для хранения данных с переполнением, с целью сохранения программ, когда такие программы выбраны для выполнения, и с целью сохранения команд и данных, считываемых в процессе выполнения программ. Запоминающее устройство 1160 может быть, например, энергозависимым и/или энергонезависимым и может представлять собой постоянное запоминающее устройство (ПЗУ (read-only memory (ROM))), запоминающее устройство с произвольной выборкой (ЗУПВ (random access memory (RAM))), троичное ассоциативное запоминающее устройство (ternary content-addressable memory (TCAM)) и/или статическое ЗУПВ (static random-access memory (SRAM)).

На фиг. 12 представлена упрощенная схема одного из вариантов средств 1200 для кодирования. В одном из вариантов, средства 1200 для кодирования реализованы в кодирующем устройстве 1202 для видео (например, в кодирующем устройстве 300 для видео или декодирующем устройстве 400 для видео). Кодирующее устройство 1202 для видео содержит приемные средства 1201. Эти приемные средства 1201 конфигурированы для приема изображения, подлежащего кодированию, или приема битового потока, подлежащего декодированию. Кодирующее устройство 1202 для видео содержит передающие средства 1207, соединенные с приемными средствами 1201. Эти передающие средства 1207 конфигурированы для передачи битового потока декодирующему устройству или для передачи декодированного изображения дисплейным средствам (например, одному из устройств 1180 ввода/вывода (I/O)).

Кодирующее устройство 1202 для видео содержит средства 1203 для хранения информации. Эти средства 1203 для хранения информации соединены по меньшей мере с одним – с приемными средствами 1201 и/или с передающими средствами 1207. Эти средства 1203 для хранения информации конфигурированы для хранения команд. Кодирующее устройство 1202 для видео также содержит процессорные средства 1205. Эти процессорные средства 1205 соединены со средствами 1203 для хранения информации. Процессорные средства 1205 конфигурированы для выполнения команд, сохраняемых в средствах 1203 для хранения информации для осуществления описываемых здесь способов.

Следует также понимать, что этапы рассматриваемых здесь примеров способов не обязательно требуется осуществлять в том порядке, в каком они описаны, и что должно быть понятно, что порядок этапов этих способов является всего лишь примером. Аналогично, в такие способы могут быть включены дополнительные этапы, а какие-то определенные этапы могут быть исключены или комбинированы в различных вариантах способов согласно настоящему изобретению.

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

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

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

название год авторы номер документа
ИНФОРМАЦИЯ О СИНХРОНИЗАЦИИ ИЗОБРАЖЕНИЙ И ЕДИНИЦАХ ДЕКОДИРОВАНИЯ ДЛЯ ВРЕМЕННОЙ МАСШТАБИРУЕМОСТИ 2020
  • Ван, Е-Куй
RU2819201C1
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ 2020
  • Ван, Е-Куй
RU2825440C1
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ 2020
  • Ван, Е-Куй
RU2821048C1
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ 2020
  • Ван, Е-Куй
RU2824781C1
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS 2020
  • Ван, Е-Куй
RU2820076C1
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2821429C1
СИНТАКСИЧЕСКАЯ СТРУКТУРА ПАРАМЕТРОВ ГИПОТЕТИЧЕСКОГО ЭТАЛОННОГО ДЕКОДЕРА 2013
  • Ван Е-Куй
RU2643463C2
ПРИМЕНИМОСТЬ БИТОВОГО СУБПОТОКА К ВЛОЖЕННЫМ SEI-СООБЩЕНИЯМ ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Е-Куй
RU2633100C2
ОГРАНИЧЕНИЯ ВРЕМЕННОГО ИДЕНТИФИКАТОРА ДЛЯ СООБЩЕНИЙ SEI 2020
  • Ван, Е-Куй
RU2823614C1
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ 2020
  • Ван, Е-Куй
RU2822533C1

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

Реферат патента 2024 года ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО

Изобретение относится к средствам для декодирования видео. Технический результат заключается в повышении эффективности декодирования видео. Принимают битовый поток видео, содержащий несколько слоев, имеющих подслои, и набор параметров видео (VPS), содержащий первый флаг, имеющий первую величину. Первый флаг специфицирует, что временной идентификатор (ID) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (DPB) и временной идентификатор (ID) представления самого верхнего подслоя для параметров обновления гипотетического декодера (HRD) не присутствуют в наборе VPS. Их признают равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS. Получают информацию уровней, параметры декодера HRD и параметры буфера DPB, соответствующие временному идентификатору ID представления самого верхнего подслоя, от набора VPS. Декодируют изображение из одного из указанных нескольких слоев для получения декодированного изображения. 5 н. и 14 з.п. ф-лы, 12 ил., 1 табл.

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

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

прием битового потока видео, содержащего несколько слоев, имеющих подслои, и набор параметров видео (VPS), содержащий первый флаг, имеющий первую величину, где этот первый флаг, имеющий указанную первую величину, специфицирует, что временной идентификатор (ID) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (DPB) и временной идентификатор (ID) представления самого верхнего подслоя для параметров обновления гипотетического декодера (HRD) не присутствуют в наборе VPS, и их признают равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS;

получение информации уровней, параметров декодера HRD и параметров буфера DPB, соответствующих временному идентификатору ID представления самого верхнего подслоя, от набора VPS; и

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

2. Способ по п. 1, отличающийся тем, что максимальное число подслоев находится в диапазоне от одного до семи, и отличающийся тем, что первая величина равна единице и вторая величина равна нулю.

3. Способ по какому-либо из пп. 1, 2, отличающийся тем, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

4. Способ по какому-либо из пп. 1 - 3, отличающийся тем, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS.

5. Способ по какому-либо из пп. 1 - 4, отличающийся тем, что параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS.

6. Способ по какому-либо из пп. 1 - 5, отличающийся тем, что параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

7. Способ по какому-либо из пп. 1 - 6, отличающийся тем, что изображение декодируют с использованием одного или обоих факторов – информации уровней и/или параметров буфера DPB.

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

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

10. Декодирующее устройство, содержащее:

приемник, конфигурированный для приема битового потока видео, содержащего несколько слоев, имеющих подслои, и набор параметров видео (VPS), содержащий первый флаг, имеющий первую величину, где этот первый флаг, имеющий указанную первую величину, специфицирует, что временной идентификатор (ID) представления самого верхнего подслоя для информации уровней, временной идентификатор (ID) представления самого верхнего подслоя для параметров буфера декодированного изображения (DPB) и временной идентификатор (ID) представления самого верхнего подслоя для параметров обновления гипотетического декодера (HRD) не присутствуют в наборе VPS, и их признают равными максимальному числу подслоев, которые могут присутствовать в одном слое из совокупности нескольких слоев, специфицированных набором VPS; и

процессор, соединенный с запоминающим устройством, этот процессор конфигурирован для выполнения команд, чтобы декодирующее устройство:

получило информацию уровней, параметры декодера HRD и параметры буфера DPB, соответствующие временному идентификатору (ID) представления самого верхнего подслоя из набора VPS; и

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

11. Декодирующее устройство по п. 10, отличающееся тем, что максимальное число подслоев находится в диапазоне от одного до семи.

12. Декодирующее устройство по какому-либо из пп. 10, 11, отличающееся тем, что информация уровней включена в параметры профиля, яруса и уровня (PTL).

13. Декодирующее устройство по какому-либо из пп. 10 - 12, отличающееся тем, что информация уровней присутствует в i-й синтаксической структуре profile_tier_level( ) в наборе VPS, параметры буфера DPB присутствуют в i-й синтаксической структуре dpb_parameters( ) в наборе VPS и параметры декодера HRD в i-й синтаксической структуре ols_timing_hrd_parameters( ) находятся в наборе VPS или в наборе параметров последовательности (SPS).

14. Декодирующее устройство по какому-либо из пп. 10 - 13, отличающееся тем, что изображение декодируют с использованием одного или обоих факторов – информации уровней и/или параметров буфера DPB.

15. Декодирующее устройство по какому-либо из пп. 10 - 14, дополнительно содержащее дисплей, конфигурированный для представления декодированного изображения.

16. Аппаратура кодирования, содержащая:

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

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

запоминающее устройство, соединенное по меньшей мере с одним из устройств – приемником и/или передатчиком, это запоминающее устройство конфигурировано для сохранения команд; и

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

17. Аппаратура кодирования по п. 16, дополнительно содержащая дисплей, конфигурированный для представления декодированного изображения.

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

кодирующее устройство; и

декодирующее устройство, осуществляющее связь с кодирующим устройством, где кодирующее устройство или декодирующее устройство содержит декодирующее устройство или аппаратуру кодирования по какому-либо из пп. 10 - 17.

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

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

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

средства для хранения информации, соединенные по меньшей мере с одним из объектов – с приемными средствами и/или с передающими средствами, эти средства для хранения информации конфигурированы для сохранения команд; и

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

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

Станок для придания концам круглых радиаторных трубок шестигранного сечения 1924
  • Гаркин В.А.
SU2019A1
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса 1924
  • Шапошников Н.П.
SU2015A1
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса 1924
  • Шапошников Н.П.
SU2015A1
US 9918091 B2, 13.03.2018
US 9699480 B2, 04.07.2017
Многоступенчатая активно-реактивная турбина 1924
  • Ф. Лезель
SU2013A1
ПАРАМЕТРЫ ГИПОТЕТИЧЕСКОГО ОПОРНОГО ДЕКОДЕРА ПРИ КОДИРОВАНИИ ВИДЕО 2013
  • Ван Е-Куй
RU2649297C2

RU 2 822 511 C1

Авторы

Ван, Е-Куй

Даты

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

2020-10-06Подача