ОГРАНИЧЕНИЯ ВРЕМЕННОГО ИДЕНТИФИКАТОРА ДЛЯ СООБЩЕНИЙ SEI Российский патент 2024 года по МПК G06F15/16 H04N19/167 H04N19/176 H04N19/46 

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

[0001] Данная заявка на патент испрашивает приоритет предварительной заявки на патент США № 62/905,236, поданной 24 сентября 2019 г. Е-Куи Вангом (Ye-Kui Wang) и озаглавленной «Улучшения видеокодирования» ("Video Coding Improvements").

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

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

УРОВЕНЬ ТЕХНИКИ, К КОТОРОМУ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

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

СУЩНОСТЬ ИЗОБРЕТЕНИЯ

[0004] В одном варианте осуществления настоящее раскрытие включает в себя способ, реализуемый декодером, причем способ содержит: прием приемником декодера битового потока, содержащего кодированный снимок в одной или более единицах слоя видеокодирования (VCL) слоя сетевой абстракции (NAL) и единице NAL не-VCL, при этом временной идентификатор (TemporalId) для единицы NAL не-VCL ограничен быть равным TemporalId единицы доступа (AU), содержащей единицу NAL не-VCL, когда тип единицы NAL (nal_unit_type) NAL не-VCL равен типу единицы NAL префиксной дополнительной информации расширения (SEI) (PREFIX_SEI_NUT) или типу единицы NAL суффиксной SEI (SUFFIX_SEI_NUT); выведение процессором декодера TemporalId для единицы NAL не-VCL на основе синтаксического элемента временного идентификатора заголовка единицы NAL плюс один (nuh_temporal_id_plus1) в единице NAL не-VCL; и декодирование процессором декодера кодированного снимка из единиц NAL VCL для создания декодированного снимка.

[0005] Видеопоследовательность может включать в себя множество снимков. Чтобы гарантировать, что снимки отображаются в правильном порядке, системы видеокодирования могут назначать снимкам TemporalId. В некоторых системах видеокодирования используются слои снимков, причем каждый слой включает в себя по существу одно и то же видео с разными разрешениями, размерами снимков, частотой кадров и т.д. Снимки в разных слоях могут отображаться попеременно, в зависимости от условий декодера. Соответственно, снимки в разных слоях, расположенные в одной и той же точке видеопоследовательности, имеют один и тот же TemporalId. Кроме того, снимки в разных слоях, которые совместно используют один и тот же TemporalId, составляют AU. Например, декодер может отображать один снимок, выбранный из одного слоя в каждой AU, для отображения видеопоследовательности. Некоторые системы видеокодирования используют сообщения SEI. Сообщение SEI содержит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения SEI могут содержать параметры, используемые гипотетическим опорным декодером (HRD), работающим в кодере для проверки битового потока на согласованность стандартам. Кроме того, системы видеокодирования могут кодировать видеопоследовательность в битовый поток в качестве слоев снимков. Сообщения SEI могут быть связаны с различными снимками и/или различными объединениями слоев. Соответственно, обеспечение того, чтобы правильное сообщение SEI было связано с правильными снимками/слоями, может стать сложной задачей в сложных многослойных битовых потоках. В случае, если сообщение SEI не связано с правильным слоем/снимком, HRD может быть не в состоянии должным образом проверить слой/снимок на согласованность. Это может привести к ошибкам кодирования.

[0006] Настоящий пример включает в себя механизм для правильного связывания сообщений SEI с соответствующими снимками/слоями. Многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. Сообщение SEI может располагаться в том же AU, что и первый снимок, связанный с сообщением SEI. Кроме того, сообщению SEI назначается TemporalId. TemporalId - это идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности. TemporalId сообщения SEI ограничен быть равным TemporalId AU, которая содержит сообщение SEI. Иными словами, снимки включаются в единицы NAL VCL, а параметры включаются в единицы NAL не-VCL. Когда единица NAL не-VCL является единицей NAL SEI, содержащей сообщение SEI, TemporalId единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL. Этот подход гарантирует, что сообщения SEI правильно связаны с соответствующими снимками в единицах доступа (AU). Таким образом, можно избежать различных ошибок. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

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

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

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

[0010] В необязательном порядке, в любом из предыдущих аспектов предусмотрен другой вариант реализации аспекта, дополнительно содержащий выведение TemporalId для единицы NAL не-VCL следующим образом: TemporalId=nuh_temporal_id_plus1-1.

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

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

[0013] В необязательном порядке, в любом из предыдущих аспектов предусмотрен другой вариант реализации аспекта, дополнительно содержащий: прием декодером второго битового потока, включающего в себя вторую одну или более единиц NAL VCL и вторую единицу NAL не-VCL, при этом TemporalId для второй единицы NAL не-VCL не равен TemporalId второй AU, содержащей вторую единицу NAL не-VCL, когда nal_unit_type второй единицы NAL не-VCL является сообщением SEI; и в ответ на прием принятие некоторых других корректирующих мер для обеспечения того, чтобы согласующийся битовый поток, соответствующий второму битовому потоку, был принят до декодирования кодированного снимка из вторых единиц NAL VCL.

[0014] В одном варианте осуществления настоящее раскрытие включает в себя способ, реализуемый кодером, содержащий: кодирование процессором кодера кодированного снимка в одной или более единицах NAL VCL в битовом потоке; кодирование в битовый поток процессором единицы NAL не-VCL так, что nuh_temporal_id_plus1 для единицы NAL не-VCL ограничен быть равным nuh_temporal_id_plus1 AU, содержащей единицу NAL не-VCL, когда nal_unit_type у NAL не-VCL является сообщением SEI; выполнение процессором набора тестов на согласованность битового потока в отношении битового потока на основе сообщения SEI; и сохранение в памяти, связанной с процессором, битового потока для передачи в декодер.

[0015] Видеопоследовательность может включать в себя множество снимков. Чтобы гарантировать, что снимки отображаются в правильном порядке, системы видеокодирования могут назначать снимкам TemporalId. В некоторых системах видеокодирования используются слои снимков, причем каждый слой включает в себя по существу одно и то же видео с разными разрешениями, размерами снимков, частотой кадров и т.д. Снимки в разных слоях могут отображаться попеременно, в зависимости от условий декодера. Соответственно, снимки в разных слоях, расположенные в одной и той же точке видеопоследовательности, имеют один и тот же TemporalId. Кроме того, снимки в разных слоях, которые совместно используют один и тот же TemporalId, составляют AU. Например, декодер может отображать один снимок, выбранный из одного слоя в каждой AU, для отображения видеопоследовательности. Некоторые системы видеокодирования используют сообщения SEI. Сообщение SEI содержит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения SEI могут содержать параметры, используемые гипотетическим опорным декодером (HRD), работающим в кодере для проверки битового потока на согласованность стандартам. Кроме того, системы видеокодирования могут кодировать видеопоследовательность в битовый поток в качестве слоев снимков. Сообщения SEI могут быть связаны с различными снимками и/или различными объединениями слоев. Соответственно, обеспечение того, чтобы правильное сообщение SEI было связано с правильными снимками/слоями, может стать сложной задачей в сложных многослойных битовых потоках. В случае, если сообщение SEI не связано с правильным слоем/снимком, HRD может быть не в состоянии должным образом проверить слой/снимок на согласованность. Это может привести к ошибкам кодирования.

[0016] Настоящий пример включает в себя механизм для правильного связывания сообщений SEI с соответствующими снимками/слоями. Многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. Сообщение SEI может располагаться в том же AU, что и первый снимок, связанный с сообщением SEI. Кроме того, сообщению SEI назначается TemporalId. TemporalId - это идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности. TemporalId сообщения SEI ограничен быть равным TemporalId AU, которая содержит сообщение SEI. Иными словами, снимки включаются в единицы NAL VCL, а параметры включаются в единицы NAL не-VCL. Когда единица NAL не-VCL является единицей NAL SEI, содержащей сообщение SEI, TemporalId единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL. Этот подход гарантирует, что сообщения SEI правильно связаны с соответствующими снимками в единицах доступа (AU). Таким образом, можно избежать различных ошибок. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

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

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

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

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

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

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

[0023] В одном варианте осуществления настоящее раскрытие включает в себя декодер, содержащий: средство приема для приема битового потока, содержащего кодированный снимок в одной или более единицах NAL VCL и единице NAL не-VCL, при этом TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL является сообщением SEI; средство декодирования для декодирования кодированного снимка из единиц NAL VCL для создания декодированного снимка; и средство пересылки для пересылки декодированного снимка для отображения в качестве части декодированной видеопоследовательности.

[0024] Видеопоследовательность может включать в себя множество снимков. Чтобы гарантировать, что снимки отображаются в правильном порядке, системы видеокодирования могут назначать снимкам TemporalId. В некоторых системах видеокодирования используются слои снимков, причем каждый слой включает в себя по существу одно и то же видео с разными разрешениями, размерами снимков, частотой кадров и т.д. Снимки в разных слоях могут отображаться попеременно, в зависимости от условий декодера. Соответственно, снимки в разных слоях, расположенные в одной и той же точке видеопоследовательности, имеют один и тот же TemporalId. Кроме того, снимки в разных слоях, которые совместно используют один и тот же TemporalId, составляют AU. Например, декодер может отображать один снимок, выбранный из одного слоя в каждой AU, для отображения видеопоследовательности. Некоторые системы видеокодирования используют сообщения SEI. Сообщение SEI содержит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения SEI могут содержать параметры, используемые гипотетическим опорным декодером (HRD), работающим в кодере для проверки битового потока на согласованность стандартам. Кроме того, системы видеокодирования могут кодировать видеопоследовательность в битовый поток в качестве слоев снимков. Сообщения SEI могут быть связаны с различными снимками и/или различными объединениями слоев. Соответственно, обеспечение того, чтобы правильное сообщение SEI было связано с правильными снимками/слоями, может стать сложной задачей в сложных многослойных битовых потоках. В случае, если сообщение SEI не связано с правильным слоем/снимком, HRD может быть не в состоянии должным образом проверить слой/снимок на согласованность. Это может привести к ошибкам кодирования.

[0025] Настоящий пример включает в себя механизм для правильного связывания сообщений SEI с соответствующими снимками/слоями. Многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. Сообщение SEI может располагаться в том же AU, что и первый снимок, связанный с сообщением SEI. Кроме того, сообщению SEI назначается TemporalId. TemporalId - это идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности. TemporalId сообщения SEI ограничен быть равным TemporalId AU, которая содержит сообщение SEI. Иными словами, снимки включаются в единицы NAL VCL, а параметры включаются в единицы NAL не-VCL. Когда единица NAL не-VCL является единицей NAL SEI, содержащей сообщение SEI, TemporalId единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL. Этот подход гарантирует, что сообщения SEI правильно связаны с соответствующими снимками в единицах доступа (AU). Таким образом, можно избежать различных ошибок. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

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

[0027] В одном варианте осуществления настоящее раскрытие включает в себя кодер, содержащий: средство кодирования для: кодирования кодированного снимка в одной или более единицах NAL VCL в битовом потоке; и кодирования в битовый поток единицы NAL не-VCL так, что TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL является дополнительным сообщением SEI; средство HRD для выполнения набора тестов на согласованность битового потока в отношении битового потока на основе сообщения SEI; и средство хранения для сохранения битового потока для передачи в декодер.

[0028] Видеопоследовательность может включать в себя множество снимков. Чтобы гарантировать, что снимки отображаются в правильном порядке, системы видеокодирования могут назначать снимкам TemporalId. В некоторых системах видеокодирования используются слои снимков, причем каждый слой включает в себя по существу одно и то же видео с разными разрешениями, размерами снимков, частотой кадров и т.д. Снимки в разных слоях могут отображаться попеременно, в зависимости от условий декодера. Соответственно, снимки в разных слоях, расположенные в одной и той же точке видеопоследовательности, имеют один и тот же TemporalId. Кроме того, снимки в разных слоях, которые совместно используют один и тот же TemporalId, составляют AU. Например, декодер может отображать один снимок, выбранный из одного слоя в каждой AU, для отображения видеопоследовательности. Некоторые системы видеокодирования используют сообщения SEI. Сообщение SEI содержит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения SEI могут содержать параметры, используемые гипотетическим опорным декодером (HRD), работающим в кодере для проверки битового потока на согласованность стандартам. Кроме того, системы видеокодирования могут кодировать видеопоследовательность в битовый поток в качестве слоев снимков. Сообщения SEI могут быть связаны с различными снимками и/или различными объединениями слоев. Соответственно, обеспечение того, чтобы правильное сообщение SEI было связано с правильными снимками/слоями, может стать сложной задачей в сложных многослойных битовых потоках. В случае, если сообщение SEI не связано с правильным слоем/снимком, HRD может быть не в состоянии должным образом проверить слой/снимок на согласованность. Это может привести к ошибкам кодирования.

[0029] Настоящий пример включает в себя механизм для правильного связывания сообщений SEI с соответствующими снимками/слоями. Многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. Сообщение SEI может располагаться в том же AU, что и первый снимок, связанный с сообщением SEI. Кроме того, сообщению SEI назначается TemporalId. TemporalId - это идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности. TemporalId сообщения SEI ограничен быть равным TemporalId AU, которая содержит сообщение SEI. Иными словами, снимки включаются в единицы NAL VCL, а параметры включаются в единицы NAL не-VCL. Когда единица NAL не-VCL является единицей NAL SEI, содержащей сообщение SEI, TemporalId единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL. Этот подход гарантирует, что сообщения SEI правильно связаны с соответствующими снимками в единицах доступа (AU). Таким образом, можно избежать различных ошибок. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

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

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

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

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

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

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

[0035] Фиг.2 является принципиальной схемой примерной системы кодирования и декодирования (кодека) для видеокодирования.

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

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

[0038] Фиг.5 является принципиальной схемой, иллюстрирующей пример гипотетического опорного декодера (HRD).

[0039] Фиг.6 является принципиальной схемой, иллюстрирующей примерную многослойную видеопоследовательность.

[0040] Фиг.7 является принципиальной схемой, иллюстрирующей пример битового потока.

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

[0042] Фиг.9 является блок-схемой последовательности операций примерного способа кодирования видеопоследовательности в битовый поток посредством ограничения временных идентификаторов (TemporalId) для сообщений дополнительной информации расширения (SEI) в битовом потоке.

[0043] Фиг.10 является блок-схемой последовательности операций примерного способа декодирования видеопоследовательности из битового потока, причем TemporalId для сообщений SEI в потоке битов ограничены.

[0044] Фиг.11 является принципиальной схемой примерной системы для кодирования видеопоследовательности с использованием битового потока, причем TemporalId для сообщений SEI в потоке битов ограничены.

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

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

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

[0047] Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Снимок - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Сегмент представляет собой целое число полных клеток или целое число последовательных полных строк единичных блоков дерева кодирования (CTU) (например, в пределах клетки) снимка, которые содержатся исключительно в одной единице слоя сетевой абстракции (NAL). Снимок, который кодируется или декодируется, может называться текущим снимком для ясности обсуждения. Кодированный снимок представляет собой кодированное представление снимка, состоящего из единиц NAL слоя видеокодирования (VCL) с конкретным значением идентификатора уровня заголовка единицы NAL (nuh_layer_id) в единице доступа (AU) и содержащего все единичный блоки (единицы) дерева кодирования (CTU) снимка. Декодированный снимок представляет собой снимок, созданный посредством применения процесса декодирования к кодированному снимку.

[0048] AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем для вывода из буфера декодированных снимков (DPB). Единица NAL представляет собой синтаксическую структуру, содержащую данные в форме полезной нагрузки необработанной байтовой последовательности (RBSP), указание типа данных и перемежающиеся по желанию байтами предотвращения эмуляции. Единица NAL VCL представляет собой единицу NAL, кодированную для содержания видеоданных, таких как кодированный сегмент снимка. Единица NAL не-VCL представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на согласованность или другие операции. Тип единицы NAL (nal_unit_type) представляет собой синтаксический элемент, содержащийся в единице NAL, который указывает тип данных, содержащихся в единице NAL. Слой представляет собой набор единиц NAL VCL, которые совместно используют заданную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.), указанную идентификатором слоя, и связанные единицы NAL не-VCL. Идентификатор слоя заголовка единицы NAL (nuh_layer_id) представляет собой синтаксический элемент, который указывает идентификатор слоя, который включает в себя единицу NAL. Временной идентификатор (TemporalId) является выведенным (производным) идентификатором, который указывает относительное положение единицы NAL в видеопоследовательности. Временной идентификатор заголовка единицы NAL плюс один (nuh_temporal_id_plus1) представляет собой сигнализируемый идентификатор, который указывает относительное положение единицы NAL в видеопоследовательности.

[0049] Гипотетический опорный декодер (HRD) - это модель декодера, работающая на кодере, который проверяет изменчивость битовых потоков, создаваемых процессом кодирования, для проверки на согласованность заданным ограничениям. Тест на согласованность битового потока - это тест для определения того, соответствует ли кодированный битовый поток стандарту, такому как универсальное видеокодирование (VVC). Параметры HRD представляют собой синтаксические элементы, которые инициализируют и/или определяют условия работы HRD. Параметры HRD могут быть включены в сообщения дополнительной информации расширения (SEI) и/или в набор параметров видео (VPS). Сообщение SEI представляет собой синтаксическую структуру с заданной семантикой, которая переносит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Единица NAL SEI представляет собой единицу NAL, которая содержит одно или более сообщений SEI. Конкретная единица NAL SEI может называться текущей единицей NAL SEI. Сообщение SEI с масштабируемой вложенностью является сообщением, которое содержит множество сообщений SEI, которые соответствуют одному или более наборам выходных слоев (OLS) или одному или более слоям. Сообщение SEI периода буферизации (BP) представляет собой сообщение SEI, которое содержит параметры HRD для инициализации HRD для управления буфером кодированных снимков (CPB). Сообщение SEI временной привязки снимка (PT) является сообщением SEI, которое содержит параметры HRD для управления информацией о доставке для единиц доступа (AU) в CPB и/или буфере декодированных снимков (DPB). Сообщение SEI с информацией о единице декодирования (DUI) является сообщением SEI, которое содержит параметры HRD для управления информацией о доставке для DU в CPB и/или DPB. Сообщение SEI с масштабируемой вложенностью представляет собой набор масштабируемых вложенных сообщений SEI. Масштабируемое вложенное сообщение SEI является сообщением SEI, вложенным в сообщение SEI с масштабируемой вложенностью. Сообщение префиксной SEI является сообщением SEI, которое применяется к одной или более последующим единицам NAL. Сообщение суффиксной SEI является сообщением SEI, которое применяется к одной или более предшествующим единицам NAL.

[0050] Набор параметров снимка (PPS) представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем кодированным снимкам, как определено синтаксическим элементом, найденным в заголовке каждого снимка. Заголовок снимка представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем слоям кодированного снимка. Заголовок сегмента является частью кодированного сегмента, содержащего элементы данных, относящиеся ко всем клеткам или строкам CTU в клетке, представленной в сегменте. Кодированная видеопоследовательность представляет собой набор из одного или более кодированных снимков. Декодированная видеопоследовательность представляет собой набор из одного или более декодированных снимков.

[0051] В настоящем документе используются следующие аббревиатуры: Единица доступа (AU), Единица (единичный блок) дерева кодирования (CTB), Единица дерева кодирования (CTU), Единица кодирования (CU), Кодированная послойно видеопоследовательность (CLVS), Начало кодированной послойно видеопоследовательности (CLVSS), Кодированная видеопоследовательность (CVS), Начало кодированной видеопоследовательности (CVSS), Объединенная группа экспертов по видео (JVET), Гипотетический опорный декодер (HRD), Набор клеток с ограничением движения (MCTS), Максимальная единица передачи (MTU), Слой сетевой абстракции (NAL), Набор выходных слоев (OLS), Порядковый номер снимка (POC), Точка произвольного доступа (RAP), Полезная нагрузка необработанной байтовой последовательности (RBSP), Набор параметров последовательности (SPS), Набор параметров видео (VPS), Универсальное видеокодирование (VVC).

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

[0053] Чтобы обеспечить точное декодирование закодированного видео, видео кодируется и декодируется согласно соответствующим стандартам видеокодирования. Стандарты видеокодирования включают в себя Сектор стандартизации Международного союза электросвязи (ITU) (ITU-T) H.261, Группа экспертов по кинофильмам (MPEG)-1 Часть 2 Международной организации по стандартизации/Международная электротехническая комиссия (ISO/IEC), ITU-T H.262 или ISO/IEC MPEG-2 Часть 2, ITU-T H.263, ISO/IEC MPEG-4 Часть 2, Усовершенствованное видеокодирование (AVC), также известное как ITU-T H.264 или ISO/IEC MPEG-4 Часть 10, и Высокоэффективное кодирование видео (HEVC), также известное как ITU-T H.265 или MPEG-H Часть 2. AVC включает в себя такие расширения, как Масштабируемое видеокодирование (SVC), Видеокодирование с несколькими ракурсами (MVC) и Видеокодирование с несколькими ракурсами плюс глубина (MVC+D) и трехмерное (3D) AVC (3D-AVC). HEVC включает в себя такие расширения, как Масштабируемое HEVC (SHVC), HEVC с несколькими ракурсами (MV-HEVC) и 3D HEVC (3D-HEVC). Совместная группа экспертов по видео (JVET) ITU-T и ISO/IEC приступила к разработке стандарта видеокодирования, называемого Универсальным видеокодированием (VVC). VVC включен в рабочий проект (WD), который включает в себя JVET-N1001-v14.

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

[0055] Некоторые системы видеокодирования используют сообщения SEI. Сообщение SEI содержит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения SEI могут содержать параметры, используемые HRD, работающим с кодером, для проверки битового потока на согласованность стандартам. Кроме того, системы видеокодирования могут кодировать видеопоследовательность в битовый поток в качестве слоев снимков. Сообщения SEI могут быть связаны с различными снимками и/или различными объединениями слоев. Соответственно, обеспечение того, чтобы правильное сообщение SEI было связано с правильными снимками/слоями, может стать сложной задачей в сложных многослойных битовых потоках. В случае, если сообщение SEI не связано с правильным слоем/снимком, HRD может быть не в состоянии должным образом проверить слой/снимок на согласованность. Это может привести к ошибкам кодирования.

[0056] Здесь раскрыт механизм для правильного связывания сообщений SEI с соответствующими снимками/слоями. Многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. Сообщение SEI может располагаться в том же AU, что и первый снимок, связанный с сообщением SEI. Кроме того, сообщению SEI назначается TemporalId. TemporalId - это идентификатор, указывающий относительное положение единицы слоя сетевой абстракции (NAL) в видеопоследовательности. TemporalId сообщения SEI ограничен быть равным TemporalId AU, которая содержит сообщение SEI. Иными словами, снимки включаются в единицы NAL слоя видеокодирования (VCL), а параметры включаются в единицы NAL не-VCL. Когда единица NAL не-VCL является единицей NAL SEI, содержащей сообщение SEI, TemporalId единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL. Этот подход гарантирует, что сообщения SEI правильно связаны с соответствующими снимками в единицах доступа (AU). Таким образом, можно избежать различных ошибок. В результате улучшаются функциональные возможности кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

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

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

[0059] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при Высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единицы дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единицы CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.

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

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

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

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

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

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

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

[0067] Фиг.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 буфера декодированных снимков. Теперь будут описаны эти компоненты.

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

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

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

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

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

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

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

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

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

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

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

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

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

[0081] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.

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

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

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

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

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

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

[0088] Фиг.5 представляет собой принципиальную схему, иллюстрирующую пример HRD 500. HRD 500 может использоваться в кодере, таком как система 200 кодека и/или кодер 300. HRD 500 может проверить битовый поток, созданный на этапе 109 способа 100, до того, как битовый поток будет направлен в декодер, такой как декодер 400. В некоторых примерах битовый поток может непрерывно пересылаться через HRD 500 по мере кодирования битового потока. В случае, если часть битового потока не соответствует связанным ограничениям, HRD 500 может указать такой сбой кодеру, чтобы заставить кодер повторно кодировать соответствующую часть битового потока с помощью других механизмов.

[0089] HRD 500 включает в себя планировщик гипотетических потоков (HSS) 541. HSS 541 представляет собой компонент, выполненный с возможностью осуществления механизма гипотетической доставки. Механизм гипотетической доставки используется для проверки на согласованность битового потока или декодера временным характеристикам и потоку данных битового потока 551, вводимого в HRD 500. Например, HSS 541 может принимать битовый поток 551, выдаваемый кодером, и управлять процессом проверки на согласованность битового потока 551. В конкретном примере HSS 541 может управлять скоростью, с которой кодированные снимки проходят через HRD 500, и проверять, что битовый поток 551 не содержит несоответствующих данных.

[0090] HSS 541 может пересылать битовый поток 551 в CPB 543 с предварительно определенной скоростью. HRD 500 может управлять данными в единицах декодирования (DU) 553. DU 553 представляет собой единицу доступа (AU) или подмножество AU и связанных с ним единиц слоя сетевой абстракции (NAL) не слоя видеокодирования (VCL). В частности, AU содержит один или более снимков, связанных с временем вывода. Например, AU может содержать один снимок в однослойном битовом потоке и может содержать снимок для каждого слоя в многослойном битовом потоке. Каждый снимок AU может быть разделен на сегменты, каждый из которых включен в соответствующую единицу NAL VCL. Следовательно, DU 553 может содержать один или более снимков, один или более сегментов снимка или их сочетание. Кроме того, параметры, используемые для декодирования AU, снимков и/или сегментов, могут быть включены в единицы NAL не-VCL. Таким образом, DU 553 содержит единицы NAL не-VCL, которые содержат данные, необходимые для поддержки декодирования единиц NAL VCL в DU 553. CPB 543 является буфером обратного магазинного типа в HRD 500. CPB 543 содержит DU 553, включающие в себя видеоданные в порядке декодирования. CPB 543 сохраняет видеоданные для использования во время проверки на согласованность битового потока.

[0091] CPB 543 пересылает DU 553 компоненту 545 процесса декодирования. Компонент 545 процесса декодирования представляет собой компонент, который соответствует стандарту VVC. Например, компонент 545 процесса декодирования может эмулировать декодер 400, используемый конечным пользователем. Компонент 545 процесса декодирования декодирует DU 553 со скоростью, которая может быть достигнута примерным декодером конечного пользователя. Если компонент 545 процесса декодирования не может декодировать DU 553 достаточно быстро, чтобы предотвратить переполнение CPB 543, то битовый поток 551 не соответствует стандарту и должен быть повторно кодирован.

[0092] Компонент 545 процесса декодирования декодирует DU 553, что создает декодированные DU 555. Декодированный DU 555 содержит декодированный снимок. Декодированные DU 555 пересылаются в DPB 547. DPB 547 может быть по существу аналогичен компоненту 223, 323 и/или 423 буфера декодированного снимка. Для поддержки интер-предсказания снимки, помеченные для использования в качестве опорных снимков 556, которые получены из декодированных DU 555, возвращаются в компонент 545 процесса декодирования для поддержки дальнейшего декодирования. DPB 547 выводит декодированную видеопоследовательность в виде последовательности снимков 557. Снимки 557 являются восстановленными снимками, которые обычно отражают снимки, кодированные кодером в битовый поток 551.

[0093] Снимки 557 пересылаются в компонент 549 обрезки вывода. Компонент 549 обрезки вывода выполнен с возможностью применения окна обрезки согласованности к снимкам 557. Это приводит к выводимым обрезанным снимкам 559. Выводимый обрезанный снимок 559 является полностью восстановленным снимком. Соответственно, выводимый обрезанный снимок 559 имитирует то, что конечный пользователь увидит при декодировании битового потока 551. Таким образом, кодер может просмотреть выводимые обрезанные снимки 559, чтобы убедиться, что кодирование является удовлетворительным.

[0094] HRD 500 инициализируется на основе параметров HRD в битовом потоке 551. Например, HRD 500 может считывать параметры HRD из сообщений VPS, SPS и/или SEI. Затем HRD 500 может выполнять операции проверки на согласованность битового потока 551 на основе информации в таких параметрах HRD. В качестве конкретного примера, HRD 500 может определять одно или более планирований (расписаний) доставки CPB из параметров HRD. Планирование доставки определяет время доставки видеоданных в и/или из местоположения памяти, такого как CPB и/или DPB. Следовательно, планирование доставки CPB определяет время доставки AU, DU 553 и/или снимков в/из CPB 543. Следует отметить, что HRD 500 может использовать планирования доставки DPB для DPB 547, которые аналогичны планированиям доставки CPB.

[0095] Видео может быть кодировано в различные слои и/или OLS для использования декодерами с различными уровнями аппаратных возможностей, и для различных сетевых условий. Планирования доставки CPB выбраны с учетом этих проблем. Соответственно, битовые подпотоки верхнего слоя назначаются оптимальным аппаратным и сетевым условиям, и, следовательно, верхние слои могут принимать одно или более планирований доставки CPB, которые используют большой объем памяти в CPB 543 и короткие задержки для передач DU 553 к DPB. 547. Аналогичным образом битовые подпотоки нижнего слоя предназначены для ограниченных аппаратных возможностей декодера и/или плохих сетевых условий. Следовательно, нижние слои могут получать один или более планирований доставки CPB, которые используют небольшой объем памяти в CPB 543 и более длительные задержки для передач DU 553 к DPB 547. Затем OLS, слои, подслои или их комбинации могут быть протестированы в соответствии с соответствующим планированием доставки, чтобы гарантировать, что результирующий битовый подпоток может быть правильно декодирован в условиях, которые ожидаются для битового подпотока. Соответственно, параметры HRD в битовом потоке 551 могут указывать планирования доставки CPB, и включать в себя достаточно данных, позволяющих HRD 500 определять планирования доставки CPB и сопоставлять планирования доставки CPB с соответствующими OLS, слоями и/или подслоями.

[0096] Фиг.6 является принципиальной схемой, иллюстрирующей примерную многослойную видеопоследовательность 600. Многослойная видеопоследовательность 600 может кодироваться кодером, таким как система 200 кодеков и/или кодер 300, и декодироваться декодером, таким как система 200 кодеков и/или декодер 400, например, в соответствии со способом 100. Кроме того, многослойная видеопоследовательность 600 может быть проверена на согласованность стандарту с помощью HRD, такого как HRD 500. Многослойная видеопоследовательность 600 включена для изображения примерного применения слоев в кодированной видеопоследовательности. Многослойная видеопоследовательность 600 представляет собой любую видеопоследовательность, которая использует множество слоев, таких как слой N 631 и слой N+1 632.

[0097] Например, многослойная видеопоследовательность 600 может использовать межслойное предсказание 621. Межслойное предсказание 621 применяется между снимками 611, 612, 613 и 614 и снимками 615, 616, 617 и 618 в разных слоях. В показанном примере снимки 611, 612, 613 и 614 являются частью слоя N+1 632, а снимки 615, 616, 617 и 618 являются частью слоя N 631. Слой, такой как слой N 631 и/или слой N+1 632, представляет собой группу снимков, которые все связаны с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности и так далее. Формально слой может быть определен как набор единиц NAL VCL, которые совместно используют один и тот же идентификатор слоя, и связанных единиц NAL не-VCL. Единица NAL VCL представляет собой единицу NAL, кодированную для содержания видеоданных, таких как кодированный сегмент снимка. Единица NAL не-VCL, представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки соответствия или другие операции.

[0098] В показанном примере слой N+1 632 связан с большим размером изображения, чем слой N 631. Соответственно, снимки 611, 612, 613 и 614 в слое N+1 632 имеют больший размер снимка (например, большую высоту и ширину и, следовательно, больше дискретных отсчетов), чем снимки 615, 616, 617 и 618 в слое N 631 в этом примере. Однако такие снимки могут быть разделены между слоем N+1 632 и слоем N 631 по другим характеристикам. Хотя показаны только два слоя, слой N+1 632 и слой N 631, набор снимков может быть разделен на любое количество слоев на основе связанных характеристик. Слой N+1 632 и слой N 631 также могут обозначаться идентификатором слоя. Идентификатор слоя - это элемент данных, который связан с снимком и указывает, что снимок является частью указанного слоя. Соответственно, каждый снимок 611-618 может быть связан с соответствующим идентификатором слоя, чтобы указать, какой слой N+1 632 или слой N 631 включает в себя соответствующий снимок. Например, идентификатор слоя может включать в себя идентификатор слоя заголовка единицы NAL (nuh_layer_id), который представляет собой синтаксический элемент, указывающий идентификатор слоя, который включает в себя единицу NAL (например, который включает в себя сегменты и/или параметры снимков в слое). Слою, связанному с более низким качеством/меньшим размером изображения/меньшим размером битового потока, такой как слой N 631, обычно назначается идентификатор нижнего слоя и такой слой упоминается как нижний слой. Кроме того, слою, связанному с более высоким качеством/большим размером изображения/большим размером битового потока, такой как слой N+1 632, обычно назначается идентификатор верхнего слоя, и такой слой упоминается как верхний слой.

[0099] Снимки 611-618 в разных слоях 631-632 приспособлены для отображения переменным образом. В качестве конкретного примера, декодер может декодировать и отображать снимок 615 в текущее время отображения, если требуется снимок меньшего размера, или декодер может декодировать и отображать снимок 611 в текущее время отображения, если требуется снимок большего размера. Таким образом, снимки 611-614 на верхнем слое N+1 632 содержат по существу данные одного и того же изображения, что и соответствующие снимки 615-618 на нижнем слое N 631 (несмотря на разницу в размере снимка). В частности, снимок 611 содержит по существу данные одного и того же изображения, что и снимок 615, снимок 612 содержит по существу данные одного и того же изображения, что и снимок 616, и т.д.

[00100] Снимки 611-618 могут быть кодированы посредством ссылки на другие снимки 611-618 в том же слое N 631 или N+1 632. Кодирование снимки со ссылкой на другой снимок в том же слое приводит к интер-предсказанию 623. Интер-предсказание 623 изображено сплошными стрелками. Например, снимок 613 может быть кодирован с использованием интер-предсказания 623 с использованием одного или двух снимков 611, 612 и/или 614 на слое N+1 632 в качестве опорного, причем один снимок используется для однонаправленного интер-предсказания и/или два снимка используются для двунаправленного интер-предсказания. Кроме того, снимок 617 может быть кодирован с использованием интер-предсказания 623 с использованием одного или двух снимков 615, 616 и/или 618 на слое N 631 в качестве опорного, причем один снимок используется для однонаправленного интер-предсказания и/или два снимка используются для двунаправленного интер-предсказания. Когда снимок используется в качестве опорного для другого снимка в том же слое при выполнении интер-предсказания 623, снимок может упоминаться как опорный снимок. Например, снимок 612 может быть опорным снимком, используемым для кодирования снимка 613 в соответствии с интер-предсказанием 623. Интер-предсказание 623 также может называться внутрислойным предсказанием в многослойном контексте. Таким образом, интер-предсказание 623 представляет собой механизм кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, который отличается от текущего снимка, причем опорный снимок и текущий снимок находятся в одном слое.

[00101] Снимки 611-618 также могут быть кодированы посредством ссылки на другие снимки 611-618 в других слоях. Этот процесс известен как межслойное предсказание 621 и изображен пунктирными стрелками. Межслойное предсказание 621 представляет собой механизм кодирования дискретных отсчетов текущего снимка посредством ссылки на указанные дискретные отсчеты в опорном снимке, причем текущий снимок и опорный снимок находятся на разных слоях и, следовательно, имеют разные идентификаторы слоя. Например, снимок на нижнем слое N 631 может использоваться в качестве опорного снимка для кодирования соответствующего снимка на верхнем слое N+1 632. В качестве конкретного примера снимок 611 может быть кодирован со ссылкой на снимок 615 в соответствии с межслойным предсказанием 621. В таком случае снимок 615 используется как межслойный опорный снимок. Межслойный опорный снимок является опорным снимком, используемым для межслойного предсказания 621. В большинстве случаев межслойное предсказание 621 ограничено так, что текущий снимок, такой как снимок 611, может использовать только межслойные опорные снимки, которые включены в тот же AU 627 и находятся на нижнем слое, например как снимок 615. Когда доступно множество слоев (например, более двух), межслойное предсказание 621 может кодировать/декодировать текущий снимок на основе множества межслойных опорных снимков на более низких слоях, чем текущий снимок.

[00102] Видеокодер может использовать многослойную видеопоследовательность 600 для кодирования снимков 611-618 посредством множества различных комбинаций и/или перестановок интер-предсказания 623 и межслойного предсказания 621. Например, снимок 615 может быть кодирован в соответствии с интра-предсказанием. Затем снимки 616-618 могут быть кодированы в соответствии с интер-предсказанием 623 с использованием снимка 615 в качестве опорного снимка. Кроме того, снимок 611 может быть кодирован в соответствии с межслойным предсказанием 621 с использованием снимка 615 в качестве межслойного опорного снимка. Затем снимки 612-614 могут быть кодированы в соответствии с интер-предсказанием 623 с использованием снимка 611 в качестве опорного снимка. Таким образом, опорный снимок может служить как однослойным опорным снимком, так и межслойным опорным снимком для различных механизмов кодирования. Посредством кодирования снимков верхнего слоя N+1 632 на основе снимков нижнего слоя N 631, верхний слой N+1 632 может избежать использования интра-предсказания, которое имеет гораздо более низкую эффективность кодирования, чем интер-предсказание 623 и межслойное предсказание 621. Как таковая, низкая эффективность кодирования интра-предсказания может быть ограничена снимками самого маленького/самого низкого качества и, следовательно, ограничена кодированием наименьшего количества видеоданных. Снимки, используемые в качестве опорных снимков и/или межслойных опорных снимков, могут быть указаны в записях списка(ов) опорных снимков, содержащихся в структуре списка опорных снимков.

[00103] Снимки 611-618 также могут быть включены в единицы доступа (AU) 627. AU 627 представляет собой набор кодированных снимков, которые включены в разные слои и связаны с одним и тем же временем вывода во время декодирования. Соответственно, кодированные снимки в одной и той же AU 627 запланированы для вывода из DPB в декодер в одно и то же время. Например, снимки 614 и 618 находятся в одной и той же AU 627. Снимки 613 и 617 находятся в другой AU 627, отличной от снимков 614 и 618. Снимки 614 и 618 в одной и той же AU 627 могут отображаться альтернативно. Например, снимок 618 может отображаться, когда требуется небольшой размер снимка, а снимок 614 может отображаться, когда требуется большой размер снимка. Когда требуется большой размер снимка, выводится снимок 614, и снимок 618 используется только для межслойного предсказания 621. В этом случае снимок 618 отбрасывается без вывода после завершения межслойного предсказания 621.

[00104] AU 627 может быть дополнительно разделена на один или более единиц снимков (PU) 628. PU 628 является подмножеством AU 627, которое содержит одиночный кодированный снимок. PU 628 может быть формально определена как набор единиц NAL, которые связаны друг с другом в соответствии с заданным правилом классификации, являются последовательными в порядке декодирования и содержат ровно один кодированный снимок. Следует отметить, что PU 628 может называться единицей декодирования (DU) при обсуждении с точки зрения HRD и/или связанных с ней тестов на согласованность.

[00105] Следует также отметить, что снимки 611-618 и, следовательно, AU 627 и PU 628 связаны с временным идентификатором (TemporalId) 629. TemporalId 629 является производным идентификатором, который указывает относительное положение единицы NAL в видеопоследовательности. Снимки и/или PU 628 в одной и той же AU 627 связаны с одним и тем же значением TemporalId 629. Например, первый AU 627 в последовательности может включать в себя TemporalId 629, равный нулю, а последующие AU 627 включают в себя последовательно увеличивающиеся TemporalId 629. Единицы NAL не-VCL также могут быть связаны с TemporalId 629. Например, набор параметров может быть включен в AU 627 и может быть связан с одним или несколькими снимками в AU 627. В таком случае TemporalId 629 набора параметров может быть меньше или равен TemporalId 629 AU 627.

[00106] Фиг.7 является принципиальной схемой, иллюстрирующей пример битового потока 700. Например, битовый поток 700 может быть сгенерирован системой 200 кодека и/или кодером 300 для декодирования системой 200 кодека и/или декодером 400 согласно способу 100. Кроме того, битовый поток 700 может включать в себя многослойную видеопоследовательность 600. Кроме того, битовый поток 700 может включать в себя различные параметры для управления работой HRD, такого как HRD 500. На основе таких параметров HRD может проверить битовый поток 700 на согласованность стандартам перед передачей в декодер для декодирования.

[00107] Битовый поток 700 включает в себя VPS 711, один или более SPS 713, множество наборов параметров снимка (PPS) 715, множество наборов параметров адаптации (APS) 716, множество заголовков 718 снимков, множество заголовков 717 сегментов, данные 720 изображения и сообщения 719 SEI. VPS 711 содержит данные, относящиеся ко всему битовому потоку 700. Например, VPS 711 может содержать связанные с данными OLS, слои и/или подслои, используемые в битовом потоке 700. SPS 713 содержит данные последовательности, общие для всех снимков в кодированной видеопоследовательности, содержащейся в битовом потоке 700. Например, каждый слой может содержать одну или более кодированных видеопоследовательностей, и каждая кодированная видеопоследовательность может ссылаться на SPS 713 для соответствующих параметров. Параметры в SPS 713 могут включать в себя размер снимка, битовую глубину, параметры инструмента кодирования, ограничения битовой скорости и т.д. Следует отметить, что хотя каждая последовательность относится к SPS 713, в некоторых примерах один SPS 713 может содержать данные для множества последовательностей. PPS 715 содержит параметры, которые применяются ко всему снимку. Следовательно, каждый снимок в видеопоследовательности может относиться к PPS 715. Следует отметить, что хотя каждый снимок относится к PPS 715, в некоторых примерах один PPS 715 может содержать данные для множества снимков. Например, множества схожих снимков могут быть кодированы/декодированы согласно схожим параметрам. В таком случае один PPS 715 может содержать данные для таких схожих снимков. PPS 715 может указывать инструменты кодирования, доступные для сегментов в соответствующих снимках, параметры квантования, смещения и т.д.

[00108] APS 716 представляет собой синтаксическую структуру, содержащую синтаксические элементы/параметры, которые применяются к одному или более сегментам 727 в одном или более снимках 725. Такие корреляции могут быть определены на основе синтаксических элементов, обнаруженных в заголовках 717 сегментов, связанных со сегментами 727. Например, APS 716 может применяться по меньшей мере к одному, но менее чем ко всем сегментам 727 в первом снимке 721, по меньшей мере к одному, но менее чем ко всем сегментам 727 во втором снимке 725 и т.д. APS 716 можно разделить на несколько типов на основе параметров, содержащихся в APS 716. Такие типы могут включать в себя APS адаптивного контурного фильтра (ALF), APS отображения яркости с масштабированием цветности (LMCS) и APS списка масштабирования (Scaling). ALF представляет собой адаптивный блочный фильтр, который включает в себя передаточную функцию, управляемую переменными параметрами, и использует обратную связь от контура обратной связи для уточнения передаточной функции. Кроме того, ALF используется для исправления артефактов кодирования (например, ошибок), которые возникают в результате кодирования на основе блоков, таких как артефакты размытия и ряби. Таким образом, параметры ALF, включенные в APS ALF, могут включать в себя параметры, выбранные кодером, чтобы предписывать ALF удалять артефакты блочного кодирования во время декодирования в декодере. LMCS - это процесс, применяемый в качестве части процесса декодирования, который соотносит дискретные отсчеты яркости с конкретными значениями, а в некоторых случаях также применяет операцию масштабирования к значениям дискретных отсчетов цветности. Инструмент LMCS может изменять форму компонентов яркости на основе соотнесения с соответствующими компонентами цветности, чтобы уменьшить искажение скорости. Таким образом, LMCS APS включает в себя параметры, выбранные кодером, чтобы инструмент LMCS изменил форму компонентов яркости. Список масштабирования APS содержит параметры инструмента кодирования, связанные с матрицами квантования, используемыми заданными фильтрами. Таким образом, APS 716 может содержать параметры, используемые для применения различных фильтров к кодированным сегментам 727 во время проверки на согласованность в HRD и/или при декодировании в декодере.

[00109] Заголовок 718 снимка представляет собой синтаксическую структуру, содержащую синтаксические элементы, которые применяются ко всем сегментам 727 кодированного снимка 725. Например, заголовок 718 снимка может содержать информацию порядкового номера снимка, данные опорного снимка, данные, относящиеся к снимкам точки интра-произвольного доступа (IRAP), данные, относящиеся к применению фильтра для снимка 725, и т.д. PU может содержать ровно один заголовок 718 снимка и ровно один снимок 725. Таким образом, битовый поток 700 может включать в себя ровно один заголовок 718 снимка в снимке 725. Заголовок 717 сегмента содержит параметры, характерные для каждого сегмента 727 в снимке 725. 717. Следовательно, может быть один заголовок 727 сегмента на сегмент в видеопоследовательности. Заголовок 717 сегмента может содержать информацию о типе сегмента, информацию о фильтрации, весовых коэффициентах предсказания, точки входа клетки, параметры устранения блочности и т.д. В некоторых случаях синтаксические элементы могут быть одинаковыми для всех сегментов 727 в снимке 725. Чтобы уменьшить избыточность, заголовок 718 снимка и заголовок 717 сегмента могут совместно использовать конкретные типы информации. Например, конкретные параметры (например, параметры фильтрации) могут быть включены в заголовок 718 снимка, когда они применяются ко всему снимку 725, или включены в заголовок 717 сегмента, когда они применяются к группе сегментов 727, которые являются подмножеством всего снимка 725.

[00110] Данные 720 изображения содержат видеоданные, кодированные согласно интер-предсказанию и/или интра-предсказанию, и соответствующие данным преобразованного и квантованного остатка. Например, данные 720 изображения могут включать в себя слои 723, снимки 725 и/или сегменты 727. Слой 723 представляет собой набор единиц 745 NAL VCL, которые совместно используют указанную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.), указанную идентификатором слоя, таким как nuh_layer_id, и связанной единицей NAL не-VCL 741. Например, слой 723 может включать в себя набор снимков 725, которые совместно используют один и тот же nuh_layer_id. Слой 723 может быть по существу подобен слоям 631 и/или 632. nuh_layer_id представляет собой синтаксический элемент, который указывает идентификатор слоя 723, который включает в себя по меньшей мере одну единицу NAL. Например, слой 723 самого низкого качества, известный как базовый слой, может включать в себя самое низкое значение nuh_layer_id с возрастающими значениями nuh_layer_id для слоев 723 более высокого качества. Следовательно, нижний слой - это слой 723 с меньшим значением nuh_layer_id, а верхний слой - это слой 723 с большим значением nuh_layer_id.

[00111] Снимок 725 - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Например, снимок 725 представляет собой кодированный снимок, который может быть выведен для отображения или использован для поддержки кодирования другого снимка (снимков) 725 для вывода. Снимок 725 содержит один или более сегментов 727. Сегмент 727 может быть задан как целое число полных клеток или целое число последовательных полных строк единиц дерева кодирования (CTU) (например, в пределах клетки) снимка 725, которые содержатся исключительно в одной единице NAL. Сегменты 727 дополнительно делятся на CTU и/или блоки дерева кодирования (CTB). CTU - это группа дискретных отсчетов заранее заданного размера, которые могут быть разбиты деревом кодирования. CTB является поднабором CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно разделяются на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.

[00112] Сообщение 719 SEI представляет собой синтаксическую структуру с заданной семантикой, которая переносит информацию, которая не требуется процессу декодирования для определения значений дискретных отсчетов в декодированных снимках. Например, сообщения 719 SEI могут содержать данные для поддержки процессов HRD или другие вспомогательные данные, которые не имеют прямого отношения к декодированию битового потока 700 в декодере. Набор сообщений 719 SEI может быть реализован как сообщение SEI с масштабируемой вложенностью. Сообщение SEI с масштабируемой вложенностью обеспечивает механизм для связывания сообщений 719 SEI с конкретными слоями 723. Сообщение SEI с масштабируемой вложенностью является сообщением, которое содержит множество масштабируемых вложенных сообщений SEI. Масштабируемое вложенное сообщение SEI является сообщением 719 SEI, которое соответствует одному или более OLS или одному или более слоям 723. OLS представляет собой набор слоев 723, причем по меньшей мере один из слоев 723 является выходным слоем. Соответственно, можно сказать, что сообщение SEI с масштабируемой вложенностью включает в себя набор масштабируемых вложенных сообщений SEI или что оно включает в себя набор сообщений 719 SEI, в зависимости от контекста. Кроме того, сообщение SEI с масштабируемой вложенностью содержит набор масштабируемых вложенных сообщений SEI того же типа. Сообщения 719 SEI могут включать в себя сообщение SEI BP, которое содержит параметры HRD для инициализации HRD для управления CPB для тестирования соответствующих OLS и/или слоев 723. Сообщения 719 SEI также могут включать в себя сообщение SEI PT, которое содержит параметры HRD для управления информацией о доставке для AU в CPB и/или DPB для тестирования соответствующих OLS и/или слоев 723. Сообщения 719 SEI могут также включать в себя сообщение SEI DUI, которое содержит параметры HRD для управления информацией о доставке для DU в CPB и/или DPB для тестирования соответствующих OLS и/или слоев 723.

[00113] Битовый поток 700 может быть кодирован как последовательность единиц NAL. Единица NAL представляет собой контейнер для видеоданных и/или вспомогательного синтаксиса. Единица NAL может быть единицей 745 NAL VCL или единицей 741 NAL не-VCL. Единица 745 NAL VCL представляет собой единицу NAL, кодированную для содержания видеоданных. В частности, единица 745 NAL VCL содержит сегмент 727 и связанный с ним заголовок 717 сегмента. Единица 741 NAL не-VCL, представляет собой единицу NAL, которая содержит не видеоданные, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на согласованность или другие операции. Единицы 741 NAL не-VCL могут включать в себя единицу NAL VPS, единицу NAL SPS, единицу NAL PPS, единицу NAL APS, единицу NAL заголовка снимка (PH) и единицу NAL SEI, которые содержат VPS 711, SPS 713, PPS 715, APS 716, заголовок 718 снимка и сообщение 719 SEI, соответственно. Следует отметить, что предыдущий список единиц NAL является примерным и не исчерпывающим.

[00114] Каждая единица NAL связана с временным идентификатором заголовка единицы NAL плюс один (nuh_temporal_id_plus1) 731. nuh_temporal_id_plus1 731 представляет собой сигнализируемый идентификатор, который указывает относительное положение соответствующей единицы NAL в видеопоследовательности. Декодер и/или HRD могут определить TemporalId для соответствующей единицы NAL на основе значения nuh_temporal_id_plus1 731. В частности, nuh_temporal_id_plus1 731 сигнализируется в заголовке единицы NAL. TemporalId для единицы NAL может быть определен декодером/HRD посредством вычитания единицы из значения nuh_temporal_id_plus1 731. Таким образом, значение nuh_temporal_id_plus1 731 не должно быть установлено равным нулю, так как это приведет к отрицательному значению TemporalId.

[00115] Кроме того, сообщения 719 SEI могут использоваться как сообщения префиксной SEI и/или сообщения суффиксной SEI. Сообщение префиксной SEI является сообщением 719 SEI, которое применяется к одной или более последующим единицам NAL. Сообщение суффиксной SEI является сообщением 719 SEI, которое применяется к одной или более предшествующим единицам NAL. Сообщение префиксной SEI включено в тип единицы NAL префиксной SEI (PREFIX_SEI_NUT) 742, а сообщение суффиксной SEI включено в тип единицы NAL суффиксной SEI (SUFFIX_SEI_NUT) 743. PREFIX_SEI_NUT 742 представляет собой единицу NAL не-VCL со значением типа, установленным для указания, что единица NAL не-VCL содержит сообщение префиксной SEI. SUFFIX_SEI_NUT 743 представляет собой единицу NAL не-VCL со значением типа, установленным для указания, что единица NAL не-VCL содержит сообщение суффиксной SEI.

[00116] Как отмечалось выше, сообщения 719 SEI могут содержать параметры, используемые HRD, работающим в кодере, для проверки битового потока на согласованность стандартам. Сообщения 719 SEI могут быть связаны с различными снимками 725 и/или различными объединениями слоев 723. Соответственно, обеспечение того, чтобы правильное сообщение 719 SEI было связано с надлежащими снимками 725 и/или слоями 723, может стать сложной задачей в сложных многослойных битовых потоках. Кроме того, сообщение префиксной SEI должно быть включено в битовый поток 700 до первой единицы NAL, связанной с сообщением префиксной SEI, тогда как сообщение суффиксной SEI должно быть включено в битовый поток 700 сразу после первой единицы NAL, связанной с сообщением суффиксной SEI. В случае, если сообщение 719 SEI не расположено правильно в битовом потоке 700 и/или не связано с правильным слоем 723 и/или снимком 725, HRD может быть не в состоянии должным образом проверить слой 723 и/или снимок 725 на согласованность. Это может привести к ошибкам кодирования, вызванным HRD, и/или ошибкам при декодировании в декодере. Например, HRD может неправильно отфильтровать снимок и/или не обнаружить нарушения стандартов. Кроме того, декодер может не обнаружить ошибки кодирования, связанные с передачей, и/или неправильно вернуть указание на ошибку кодирования, связанную с передачей, когда таких ошибок не существует.

[00117] Битовый поток 700 изменяется, чтобы гарантировать, что сообщения 719 SEI правильно связаны с соответствующими слоями 723, снимками 725, сегментами 727 и/или единицами NAL. Как описано в отношении Фиг.6, многослойные битовые потоки могут организовывать снимки и связанные параметры в AU. AU представляет собой набор кодированных снимков, включенных в разные слои и связанных с одним и тем же временем вывода. В битовом потоке 700 каждое сообщение 719 SEI располагается в той же AU, что и первый снимок 725, связанный с сообщением 719 SEI. Кроме того, сообщению 719 SEI назначается TemporalId. TemporalId сообщения 719 SEI ограничен быть равным TemporalId AU, которая содержит сообщение 719 SEI. В конкретном примере каждый снимок 725 в AU имеет одно и то же значение TemporalId и, следовательно, имеет одно и то же значение nuh_temporal_id_plus1 731. Таким образом, nuh_temporal_id_plus1 731 сообщения 719 SEI является тем же самым, что и nuh_temporal_id_plus1 731 каждого из снимков 725, который соответствуют тому, к чему применяется сообщение 719 SEI.

[00118] Иными словами, снимки 725 включены в единицы 745 NAL VCL, а параметры включены в единицы 741 NAL не-VCL. Когда единица 741 NAL не-VCL является единицей NAL SEI типа PREFIX_SEI_NUT 742 или SUFFIX_SEI_NUT 743, который содержит сообщение 719 SEI, TemporalId/nuh_temporal_id_plus1 731 единицы 741 NAL не-VCL ограничен быть равным TemporalId/nuh_temporal_id_plus1 731 AU, содержащей единицу 741 NAL не-VCL. Этот подход гарантирует, что сообщения 719 SEI правильно связаны с соответствующими снимками 725 в AU. Таким образом, можно избежать различных ошибок. В результате повышается функциональность кодера и декодера. Кроме того, эффективность кодирования может быть увеличена, что снижает использование ресурсов процессора, памяти и/или сетевой сигнализации как в кодере, так и в декодере.

[00119] Предшествующая информация теперь описывается более подробно ниже. Многослойное видеокодирование также называют масштабируемым видеокодированием или масштабируемым видеокодированием. Масштабируемость при видеокодировании может поддерживаться с помощью методик многослойного кодирования. Многослойный битовый поток содержит базовый слой (BL) и один или более слоев улучшения (EL). Примеры масштабируемости включают в себя пространственную масштабируемость, масштабируемость качества/отношения сигнал-шум (SNR), многоракурсную масштабируемость, масштабируемость частоты кадров и т.д. Когда используется методика многослойного кодирования, снимок или его часть могут быть кодированы без использования опорного снимка (интра-предсказание), могут быть кодированы посредством обращения к опорным снимкам, которые находятся в том же слое (интер-предсказание), и /или могут быть кодированы посредством ссылки на опорные снимки, которые находятся в другом(их) слое(ях) (межслойное предсказание). Опорный снимок, используемый для межслойного предсказания текущего снимка, называется межслойным опорным снимком (ILRP). Фиг.6 иллюстрирует пример многослойного кодирования для пространственной масштабируемости, в котором снимки в разных слоях имеют разное разрешение.

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

[00121] Масштабируемое HEVC (SHVC) - это расширение HEVC, обеспечивающее поддержку пространственной масштабируемости и масштабируемости качества. Многоракурсное HEVC (MV-HEVC) - это расширение HEVC, обеспечивающее поддержку многоракрусной масштабируемости. 3D HEVC (3D-HEVC) - это расширение HEVC, обеспечивающее поддержку кодирования 3D-видео, которое является более совершенным и эффективным, чем MV-HEVC. Временная масштабируемость может быть включена как неотъемлемая часть однослойного кодека HEVC. В многослойном расширении HEVC декодированные снимки, используемые для межслойного предсказания, поступают только из одной и той же AU и обрабатываются как долгосрочные опорные снимки (LTRP). Таким снимкам назначаются опорные индексы в списке (списках) опорных снимков вместе с другими временными опорными снимками в текущем слое. Межслойное предсказание (ILP) достигается на уровне единицы предсказания посредством установки значения опорного индекса для ссылки на межслойный опорный снимок (снимки) в списке (списках) опорных снимков. Пространственная масштабируемость изменяет опорный снимок или его часть, когда ILRP имеет пространственное разрешение, отличное от текущего кодируемого или декодируемого снимка. Повторная дискретизация опорного снимка может быть реализована либо на уровне снимка, либо на уровне блока кодирования.

[00122] VVC также может поддерживать многослойное видеокодирование. Битовый поток VVC может включать в себя множество слоев. Все слои могут быть независимыми друг от друга. Например, каждый слой может быть кодирован без использования межслойного предсказания. В этом случае слои также называются слоями одновременной передачи. В некоторых случаях некоторые слои кодируются с использованием ILP. Флаг в VPS может указывать, являются ли слои слоями одновременной передачи или некоторые слои используют ILP. Когда некоторые слои используют ILP, отношения зависимости слоев между слоями также сигнализируются в VPS. В отличие от SHVC и MV-HEVC, VVC может не указывать OLS. OLS включает в себя указанный набор слоев, причем один или более слоев в наборе слоев указаны как выходные (выводимые) слои. Выходной слой - это выходной слой OLS. В некоторых реализациях VVC для декодирования и вывода может быть выбран только один слой, когда слои являются слоями одновременной передачи. В некоторых реализациях VVC весь битовый поток, включая все слои, указывается для декодирования, когда любой слой использует ILP. Кроме того, конкретные слои среди слоев указываются как выходные слои. Выходные слои могут быть указаны как только самый высокий слой, все слои или самый высокий слой плюс набор указанных нижних слоев.

[00123] Предыдущие аспекты содержат некоторые проблемы. Например, значения nuh_layer_id для единиц NAL SPS, PPS и APS не могут быть должным образом ограничены. Кроме того, значение TemporalId для единиц NAL SEI может быть ограничено должным образом. Кроме того, параметр NoOutputOfPriorPicsFlag может быть задан неправильно, если включена повторная дискретизация опорного снимка, и снимки в CLVS имеют разное пространственное разрешение. Кроме того, в некоторых системах видеокодирования сообщения суффиксной SEI не могут содержаться в сообщении SEI с масштабируемой вложенностью. В качестве другого примера, период буферизации, временная привязка снимков и сообщения SEI с информацией о единице декодирования могут включать в себя зависимости синтаксического анализа от VPS и/или SPS.

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

[00125] Одна или более из вышеупомянутых проблем могут быть решены следующим образом. Значения nuh_layer_id для единиц SPS, PPS и NAL APS должным образом ограничены в данном документе. Значение TemporalId для единиц NAL SEI здесь должным образом ограничено. Параметр NoOutputOfPriorPicsFlag правильно указан, когда включена повторная дискретизация опорного снимка и снимки в CLVS имеют разное пространственное разрешение. Сообщения суффиксной SEI могут содержаться в сообщении SEI с масштабируемой вложенностью. Зависимости синтаксического анализа сообщений BP, PT и DUI SEI от VPS или SPS могут быть удалены посредством повторения синтаксического элемента decoding_unit_hrd_params_present_flag в синтаксисе сообщения SEI BP, синтаксических элементов decoding_unit_hrd_params_present_flag и decoding_unit_cpb_params_in_pic_timing_sei_flag в синтаксисе сообщения SEI PT, и синтаксического элемента decoding_unit_cpb_sei_flag в синтаксисе сообщения SEI PT и синтаксического элемента decoding_unit_cpb_sei_flag в сообщении SEI DUI.

[00126] Пример реализации предыдущих механизмов выглядит следующим образом. Пример общей семантики единицы NAL выглядит следующим образом.

[00127] Значение nuh_temporal_id_plus1 минус 1 указывает временной идентификатор для единицы NAL. Значение nuh_temporal_id_plus1 не должно быть равно нулю. Переменная TemporalId может быть выедена следующим образом:

TemporalId=nuh_temporal_id_plus1-1

Когда nal_unit_type находится в диапазоне от IDR_W_RADL до RSV_IRAP_13, включительно, TemporalId ограничен быть равным нулю. Когда nal_unit_type равен STSA_NUT, TemporalId не ограничен быть равным нулю.

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

[00129] Значение TemporalId для единиц NAL не-VCL ограничено следующим образом. Если nal_unit_type равен DPS_NUT, VPS_NUT или SPS_NUT, TemporalId равен нулю, и TemporalId единицы доступа, содержащей единицу NAL, ограничен быть равным нулю. В противном случае, если nal_unit_type равен EOS_NUT или EOB_NUT, TemporalId ограничен быть равным нулю. В противном случае, если nal_unit_type равен AUD_NUT, FD_NUT, PREFIX_SEI_NUT или SUFFIX_SEI_NUT, TemporalId ограничен быть равным TemporalId единицы доступа, содержащей единицу NAL. В противном случае, когда nal_unit_type равен PPS_NUT или APS_NUT, TemporalId должен быть больше или равен TemporalId единицы доступа, содержащей единицу NAL. Когда единица NAL является единицей NAL не-VCL, значение TemporalId должно быть равно минимальному значению значений TemporalId всех единиц доступа, к которым применяется единица NAL не-VCL. Когда nal_unit_type равен PPS_NUT или APS_NUT, TemporalId может быть больше или равен TemporalId содержащей единицы доступа. Это связано с тем, что все PPS и APS могут быть включены в начало битового потока. Кроме того, первый кодированный снимок имеет TemporalId, равный нулю.

[00130] Пример семантики RBSP набора параметров последовательности выглядит следующим образом. RBSP SPS должен быть доступен для процесса декодирования до обращения к нему. SPS может быть включен в по меньшей мере одну единицу доступа с TemporalId, равным нулю, или предоставлен через внешний механизм. Единица NAL SPS, содержащая SPS, может быть ограничена иметь nuh_layer_id, равный наименьшему значению nuh_layer_id единиц NAL PPS, которые ссылаются на SPS.

[00131] Пример семантики RBSP набора параметров снимка выглядит следующим образом. RBSP PPS должен быть доступен для процесса декодирования до обращения к нему. PPS должен быть включен в по меньшей мере одну единицу доступа с TemporalId, меньшим или равным TemporalId единицы PPS NAL, или предоставляться через внешний механизм. Единица NAL PPS, содержащая RBSP PPS, должна иметь nuh_layer_id, равный наименьшему значению nuh_layer_id единиц NAL кодированного сегмента, которые относятся к PPS.

[00132] Пример семантики набора параметров адаптации выглядит следующим образом. Каждый RBSP APS должен быть доступен для процесса декодирования до того, как на него будет сделана ссылка. APS также должен быть включен в по меньшей мере одну единицу доступа с TemporalId, меньшим или равным TemporalId единицы NAL кодированного сегмента, который ссылается на APS или предоставляется через внешний механизм. Единица NAL APS может совместно использоваться снимками/сегментами множества слоев. nuh_layer_id единицы NAL APS ограничен быть равным наименьшему значению nuh_layer_id единиц NAL кодированного сегмента, которые относятся к единице NAL APS. В качестве альтернативы единица NAL APS может не использоваться совместно снимками/сегментами множества слоев. nuh_layer_id единицы NAL APS ограничен быть равным nuh_layer_id сегментов, ссылающихся к APS.

[00133] В одном примере удаление снимков из DPB перед декодированием текущего снимка обсуждается следующим образом. Удаление снимков из DPB перед декодированием текущего снимка (но после синтаксического анализа заголовка сегмента первого сегмента текущего снимка) может происходить во время удаления CPB первой единицы декодирования единицы n доступа (содержащей текущий снимок). Это происходит следующим образом. Инициируется процесс декодирования для построения списка опорных снимков, и инициируется процесс декодирования для маркировки опорных снимков.

[00134] Когда текущий снимок является снимком начала кодированной послойно видеопоследовательности (CLVSS), который не является нулевым снимком, применяются следующие упорядоченные этапы. Переменная 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 или sps_max_dec_pic_buffering_minus1 [Htid], выведенных из SPS, отличается от значения 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 или sps_max_dec_pic_buffering_minus1 [Htid], соответственно, выведенных из SPS, на который ссылается предыдущий снимок, то NoOutputOfPriorPicsFlag может быть установлен в единичное значение тестируемым декодером, независимо от значения no_output_of_prior_pics_flag. Следует отметить, что хотя установка NoOutputOfPriorPicsFlag равным no_output_of_prior_pics_flag может быть предпочтительной в этих условиях, тестируемому декодеру разрешено устанавливать NoOutputOfPriorPicsFlag в единицу в этом случае. В противном случае NoOutputOfPriorPicsFlag может быть установлен равным no_output_of_prior_pics_flag.

[00135] Значение NoOutputOfPriorPicsFlag, выведенное для тестируемого декодера, применяется для HRD, так что, когда значение NoOutputOfPriorPicsFlag равно 1, все буферы хранения снимков в DPB очищаются без вывода содержащихся в них снимков, а заполнение DPB устанавливается равным нулю. Когда оба следующих условия истинны для любых снимков k в DPB, все такие снимки k в DPB удаляются из DPB. Снимок k помечается как неиспользуемый для ссылки, и снимок k имеет PictureOutputFlag, равный нулю, или соответствующее время вывода DPB меньше или равно времени удаления CPB первой единицы декодирования (обозначаемой как единица m декодирования) текущего снимка n. Это может произойти, когда DpbOutputTime[k] меньше или равно DuCpbRemovalTime[m]. Для каждого снимка, который удаляется из DPB, заполнение DPB уменьшается на единицу.

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

[00137] Если текущий снимок является снимком CLVSS, который не является нулевым снимком, применяются следующие упорядоченные этапы. Переменная 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 или sps_max_dec_pic_buffering_minus1 [Htid], выведенных из SPS, отличается от значения 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 или sps_max_dec_pic_buffering_minus1 [Htid], соответственно, выведенных из SPS, на который ссылается предыдущее снимок, то NoOutputOfPriorPicsFlag может быть установлен в единицу тестируемым декодером, независимо от значения no_output_of_prior_pics_flag. Следует отметить, что хотя установка NoOutputOfPriorPicsFlag, равного no_output_of_prior_pics_flag является предпочтительной в этих условиях, тестируемый декодер может установить NoOutputOfPriorPicsFlag в единицу в этом случае. В противном случае NoOutputOfPriorPicsFlag может быть установлен равным no_output_of_prior_pics_flag.

[00138] Значение NoOutputOfPriorPicsFlag, выведенное для тестируемого декодера, может применяться для HRD следующим образом. Если NoOutputOfPriorPicsFlag равен единице, все буферы хранения снимков в DPB очищаются без вывода содержащихся в них снимков, а заполнение DPB устанавливается равным нулю. В противном случае (NoOutputOfPriorPicsFlag равен нулю) все буферы хранения снимков, содержащие снимок, помеченный как не нужный для вывода и неиспользуемый для ссылки, очищаются (без вывода), и все непустые буферы хранения снимков в DPB очищаются повторным вызовом процесса скачкообразного изменения, и заполнение DPB устанавливается равной нулю.

[00139] В противном случае (текущий снимок не является снимком CLVSS) все буферы хранения снимков, содержащие снимок, который помечен как не нужный для вывода и неиспользуемый для ссылки, очищаются (без вывода). Для каждого опустошенного буфера хранения снимков значение заполнения DPB уменьшается на единицу. Когда одно или более из следующих условий истинны, процесс скачкообразного изменения инициируется повторно, при дальнейшем уменьшении заполнения DPB на единицу для каждого дополнительного буфера хранения снимков, который очищается до тех пор, пока ни одно из следующих условий не будет истинным. Условием является то, что количество снимков в DPB, помеченных как необходимые для вывода, больше, чем sps_max_num_reorder_pics[Htid]. Другим условием является то, что sps_max_latency_increase_plus1[Htid] не равно нулю и в DPB есть по меньшей мере один снимок, помеченный как необходимый для вывода, для которого связанная переменная PicLatencyCount больше или равна SpsMaxLatencyPictures[Htid]. Другим условием является то, что количество снимков в DPB больше или равно SubDpbSize[Htid].

[00140] Ниже приведен пример общего синтаксиса сообщения SEI.

sei_payload (payloadType, payloadSize) { Дескриптор если (nal_unit_type== PREFIX_SEI_NUT) если (payloadType == 0) buffering_period(payloadSize) иначе если(payloadType == 1) pic_timing(payloadSize) иначе если (payloadType == 3) filler_payload(payloadSize) иначе если (payloadType == 130) decoding_unit_info(payloadSize) иначе если (payloadType == 133) scalable_nesting(payloadSize) иначе если (payloadType == 145) dependent_rap_indication(payloadSize)
// Задано в ITU-T H.SEI | ISO/IEC 23002-7.
иначе если (payloadType == 168) frame_field_info(payloadSize) иначе reserved_sei_message(payloadSize) иначе /*nal_unit_type == SUFFIX_SEI_NUT*/ если(payloadType == 3) filler_payload(payloadSize) если (payloadType == 132) decoded_picture_hash(payloadSize)
// Задано в ITU-T H.SEI | ISO/IEC 23002-7.
иначе если (payloadType == 133) scalable_nesting(payloadSize) иначе reserved_sei_message(payloadSize) если (more_data_in_payload()) { если (payload_extension_present()) reserved_payload_extension_data u(v) payload_bit_equal_to_one /* равно 1 */ f(1) пока(!byte_aligned()) payload_bit_equal_to_zero /* равно 0 */ f(1) } }

[00141] Ниже приведен пример синтаксиса сообщения SEI c масштабируемой вложенностью.

scalable_nesting(payloadSize) { Дескриптор nesting_ols_flag u(1) если(nesting_ols_flag) { nesting_num_olss_minus1 ue(v) для(i=0; i <= nesting_num_olss_minus1; i++) { nesting_ols_idx_delta_minus1[i] ue(v) если(NumLayersInOls[NestingOlsIdx[i]] > 1) { nesting_num_ols_layers_minus1[i] ue(v) для(j=0; j<=nesting_num_ols_layers_minus1[i]; j++) nesting_ols_layer_idx_delta_minus1[i][j] ue(v) } } } иначе { nesting_all_layers_flag u(1) если(!nesting_all_layers_flag) { nesting_num_layers_minus1 ue(v) для(i = 1; i <= nesting_num_layers_minus1; i++) nesting_layer_id[i] u(6) } } nesting_num_seis_minus1 ue(v) while(!byte_aligned()) nesting_zero_bit /* равно 0 */ u(1) для(i = 0; i <= nesting_num_seis_minus1; i++) sei_message() }

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

[00143] Сообщение SEI с payloadType, равным ста тридцати двум (хэш декодированного снимка) или ста тридцати трем (масштабируемая вложенность), не должно содержаться в сообщении SEI с масштабируемой вложенностью. Когда сообщение SEI с масштабируемой вложенностью содержит сообщение SEI с информацией о периоде буферизации, временной привязки снимка или единице декодирования, сообщение SEI с масштабируемой вложенностью не должно содержать никакого другого сообщения SEI с payloadType, не равным нулю (период буферизации), единице (временная привязка снимка) или ста тридцати (информация о единице декодирования).

[00144] Согласованность битового потока может также потребовать, чтобы следующие ограничения применялись к значению nal_unit_type единицы NAL SEI, содержащей сообщение SEI с масштабируемой вложенностью. Когда сообщение SEI с масштабируемой вложенностью содержит сообщение SEI с payloadType, равным нулю (период буферизации), единице (временная привязка снимка), ста тридцати (информация о единице декодирования), ста сорока пяти (зависимое указание RAP) или ста шестидесяти восемь (информация поля кадра), то единица NAL SEI, содержащая сообщение SEI с масштабируемой вложенностью, должна иметь набор nal_unit_type, равный PREFIX_SEI_NUT. Когда сообщение SEI с масштабируемой вложенностью содержит сообщение SEI с payloadType, равным ста тридцати двум (хэш декодированного снимка), то единица NAL SEI, содержащая сообщение SEI с масштабируемой вложенностью, должна иметь набор nal_unit_type, равный SUFFIX_SEI_NUT.

[00145] nesting_ols_flag может быть установлен равным единице, чтобы указать, что масштабируемые вложенные сообщения SEI применяются к конкретным слоям в контексте конкретных OLS. nesting_ols_flag может быть установлен равным нулю, чтобы указать, что масштабируемые вложенные сообщения SEI обычно применяются (например, не в контексте OLS) к конкретным слоям.

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

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

если(i==0)

NestingOlsIdx[i] =nesting_ols_idx_delta_minus1[i]

иначе

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

[00148] Nesting_num_ols_layers_minus1[i] плюс один указывает количество слоев, к которым применяются сообщения SEI с масштабируемой вложенностью в контексте NestingOlsIdx[i]-го OLS. Значение nesting_num_ols_layers_minus1[i] должно находиться в диапазоне от нуля до NumLayersInOls[NestingOlsIdx[i]] - 1, включительно.

[00149] Nesting_ols_layer_idx_delta_minus1[i][j] используется для выведения переменной NestingOlsLayerIdx[i][j], которая указывает индекс слоя OLS j-го слоя, к которому применяются сообщения SEI с масштабируемой вложенностью в контексте NestingOlsIdx[i]-ого OLS, когда nesting_ols_flag равен единице. Значение nesting_ols_layer_idx_delta_minus1[i] должно находиться в диапазоне от нуля до NumLayersInOls[nestingOlsIdx[i]] - два, включительно.

[00150] Переменная NestingOlsLayerIdx[i][j] может быть выведена следующим образом:

если(j== 0)

NestingOlsLayerIdx[i][j]=nesting_ols_layer_idx_delta_minus1[i][j]

иначе

NestingOlsLayerIdx[i][j]=NestingOlsLayerIdx[i][j-1] +

nesting_ols_layer_idx_delta_minus1[i][j]+1

[00151] Наименьшее значение среди всех значений LayerIdInOls[NestingOlsIdx[i]][NestingOlsLayerIdx[i][0]] для i в диапазоне от нуля до nesting_num_olss_minus1, включительно, должно быть равно nuh_layer_id текущей единицы NAL SEI (например, единицы NAL SEI, содержащий сообщение SEI с масштабируемой вложенностью). nesting_all_layers_flag может быть установлен равным единице, чтобы указать, что масштабируемые вложенные сообщения SEI обычно применяются ко всем слоям, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы NAL SEI. nesting_all_layers_flag может быть установлен равным нулю, чтобы указать, что масштабируемые вложенные сообщения SEI могут или не могут в целом применяться ко всем слоям, у которых nuh_layer_id больше или равен nuh_layer_id текущей единицы NAL SEI.

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

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

если(nesting_all_layers_flag) {

NestingNumLayers=

vps_max_layers_minus1+1 - GeneralLayerIdx[nuh_layer_id]

для(i=0; i &lt; NestingNumLayers; i++)

NestingLayerId[i]=vps_layer_id[GeneralLayerIdx[nuh_layer_id]+i](D-2)}

иначе {

NestingNumLayers = nesting_num_layers_minus1 + 1

для( i = 0; i < NestingNumLayers; i ++)

NestingLayerId[i]=(i==0)?nuh_layer_id:nesting_layer_id[i]}

[00154] Nesting_num_seis_minus1 плюс один указывает количество масштабируемых вложенных сообщений SEI. Значение nesting_num_seis_minus1 должно быть в диапазоне от нуля до шестидесяти трех, включительно. nesting_zero_bit должен быть установлена равным нулю.

[00155] Фиг.8 является принципиальной схемой примерного устройства 800 видеокодирования. Устройство 800 видеокодирования подходит для реализации раскрытых примеров/вариантов осуществления, как описано в данном документе. Устройство 800 видеокодирования содержит входные порты 820, выходные порты 850 и/или модуль 810 приемопередатчиков (Tx/Rx), включающие в себя передатчики и/или приемники. Устройство 800 видеокодирования также включает в себя процессор 830, включающий в себя логический модуль и/или центральный модуль обработки (CPU) для обработки данных и память 832 для хранения данных. Устройство 800 видеокодирования может также содержать электрические, оптико-электрические (OE) компоненты, электрическо-оптические (EO) компоненты и/или компоненты беспроводной связи, подключенные к выходным портам 850 и/или входным портам 820 для обмена данными через электрические, оптические или беспроводные сети связи. Устройство 800 видеокодирования может также включать в себя устройства 860 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 860 ввода-вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, громкоговорители для вывода аудиоданных и т.д. Устройства 860 ввода-вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, трекбол и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.

[00156] Процессор 830 реализуется аппаратным обеспечением и программным обеспечением. Процессор 830 может быть реализован в виде одного или более ядер (например, в форме многоядерного процессора), микросхем CPU, программируемых пользователем вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 830 осуществляет связь с входными портами 820, Tx/Rx 810, выходными портами 850 и памятью 832. Процессор 830 содержит модуль 814 кодирования. Модуль 814 кодирования реализует описанные здесь раскрытые варианты осуществления, такие как способы 100, 900 и 1000, которые могут использовать многослойную видеопоследовательность 600 и/или битовый поток 700. Модуль 814 кодирования может также реализовывать любой другой способ/механизм, описанный в данном документе. Кроме того, модуль 814 кодирования может реализовать систему 200 кодека, кодер 300, декодер 400 и/или HRD 500. Например, модуль 814 кодирования может использовать сигналы и/или считывать различные параметры, как описано в данном документе. Кроме того, модуль кодирования может использоваться для кодирования и/или декодирования видеопоследовательности на основе таких параметров. Таким образом, описанные здесь изменения сигнализации могут повысить эффективность и/или избежать ошибок в модуле 814 кодирования. Соответственно, модуль 814 кодирования может быть выполнен с возможностью выполнения механизмов для решения одной или более проблем, рассмотренных выше. Следовательно, модуль 814 кодирования предписывает устройству 800 видеокодирования обеспечивать дополнительную функциональность и/или эффективность кодирования при кодировании видеоданных. Таким образом, модуль 814 кодирования улучшает функциональность устройства 800 видеокодирования, и решает проблемы, которые характерны для областей техники видеокодирования. Кроме того, модуль 814 кодирования осуществляет перевод устройства 800 видеокодирования в другое состояние. В качестве альтернативы, модуль 814 кодирования может быть реализован как инструкции, хранящиеся в памяти 832 и исполняемые процессором 830 (например, как компьютерный программный продукт, хранящийся на долговременном носителе).

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

[00158] Фиг.9 является блок-схемой последовательности операций примерного способа 900 кодирования видеопоследовательности в битовый поток, такой как битовый поток 700, посредством ограничения TemporalId для сообщений SEI в битовом потоке. Способ 900 может быть использован кодером, таким как система 200 кодека, кодер 300 и/или устройство 800 видеокодирования при исполнении способа 100. Кроме того, способ 900 может работать с HRD 500 и, следовательно, может выполнять тесты на согласованность многослойной видеопоследовательности 600.

[00159] Способ 900 может начинаться, когда кодер принимает видеопоследовательность и определяет кодировать эту видеопоследовательность в многослойный битовый поток, например, на основе пользовательского ввода. На этапе 901 кодер кодирует кодированный снимок в одной или более единицах NAL VCL в битовом потоке. Например, кодированный снимок может быть включен в AU в слое. Кроме того, кодер может кодировать один или более слоев, включающих в себя кодированный снимок, в многослойный битовый поток. Слой может включать в себя набор единиц NAL VCL с одинаковым ID слоя и связанные единицы NAL не-VCL. Например, набор единиц NAL VCL является частью слоя, когда все наборы единиц NAL VCL имеют конкретное значение nuh_layer_id. Слой может включать в себя набор единиц NAL VCL, которые содержат видеоданные кодированных снимков, и любые наборы параметров, используемые для кодирования таких снимков. Один или более слоев могут быть выходными слоями. Слои, которые не являются выходным слоем, кодируются для поддержки восстановления выходного слоя (слоев), но такие поддерживающие слои не предназначены для вывода в декодере. Таким образом, кодер может кодировать различные объединения слоев для передачи в декодер по запросу. Слой может передаваться по желанию, чтобы позволить декодеру получать различные представления видеопоследовательности в зависимости от сетевых условий, возможностей аппаратного обеспечения и/или пользовательских настроек.

[00160] На этапе 903 кодер может кодировать одну или более единиц NAL не-VCL в битовый поток. Например, слой и/или набор слоев также включают в себя различные единицы NAL не-VCL. Единицы NAL не-VCL связаны с набором единиц NAL VCL, все из которых имеют конкретное значение nuh_layer_id. В частности, единица NAL не-VCL кодируется так, что TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL указывает то, что сообщение SEI включено в NAL не-VCL. Иными словами, сообщение SEI может быть включено в ту же AU, что и снимок, к которому применяется SEI. Соответственно, TemporalId сообщения SEI, содержащегося в единице NAL не-VCL, ограничен быть равным TemporalId AU, которая содержит сообщение SEI/единицу NAL не-VCL. В некоторых примерах сообщение SEI является сообщением префиксной SEI, и, следовательно, nal_unit_type у NAL не-VCL равен PREFIX_SEI_NUT. В некоторых примерах сообщение SEI является сообщением суффиксной SEI, и, следовательно, nal_unit_type у NAL не-VCL равен SUFFIX_SEI_NUT.

[00161] TemporalId для единицы NAL не-VCL может быть указан синтаксическим элементом nuh_temporal_id_plus1 в единице NAL не-VCL. Аналогично, TemporalId для AU может быть указан синтаксическим элементом nuh_temporal_id_plus1 в единице NAL VCL, содержащей сегмент кодированного снимка в AU. TemporalId единиц NAL VCL ограничен быть одинаковым для всех единиц NAL VCL в одной и той же AU. Соответственно, синтаксический элемент nuh_temporal_id_plus1 единиц NAL VCL ограничен быть одинаковым для всех единиц NAL VCL в одной и той же AU. Следовательно, значение синтаксического элемента nuh_temporal_id_plus1 в единице NAL не-VCL, содержащей сообщение SEI, является тем же самым, что и значение синтаксического элемента nuh_temporal_id_plus1 в любой единице NAL VCL в той же AU, что и сообщение SEI. TemporalId для единицы NAL не-VCL выводится следующим образом:

TemporalId=nuh_temporal_id_plus1-1.

Кроме того, значение nuh_temporal_id_plus1 для единицы NAL не-VCL и единицы NAL VCL в AU не может быть установлено равным нулю, поскольку это привело бы к отрицательному значению TemporalId. Предыдущие ограничения и/или требования гарантируют, что битовый поток согласуется, например, с VVC или с каким-либо другим стандартом, модифицированным, как указано в данном документе. Однако кодер также может быть способен работать в других режимах, причем он не ограничен таким образом, например, при работе по другому стандарту или другой версии того же стандарта.

[00162] На этапе 905 кодер использует HRD для выполнения набора тестов на согласованность битового потока в отношении битового потока на основе сообщения SEI. Набор может включать в себя один или более тестов на согласованность. Например, HRD может использовать значения TemporalId и/или nuh_temporal_id_plus1 для корреляции сообщений SEI с снимками. Следовательно, HRD может использовать параметры из сообщения SEI для выполнения одного или более тестов на согласованность кодированного снимка в той же AU, что и сообщение SEI. Затем кодер может сохранить битовый поток для передачи декодеру на этапе 907. Кодер также может передавать битовый поток в декодер по желанию.

[00163] Фиг.10 является блок-схемой последовательности операций примерного способа 1000 декодирования видеопоследовательности из битового потока, такого как битовый поток 700, причем TemporalId для сообщений SEI в битовом потоке ограничены. Способ 1000 может быть использован декодером, таким как система 200 кодека, декодер 400 и/или устройство 800 видеокодирования при выполнении способа 100. Кроме того, способ 1000 может применяться к многослойной видеопоследовательности 600, которая была проверена на согласованность в HRD, например HRD 500.

[00164] Способ 1000 может начинаться, когда декодер начинает прием битового потока кодированных данных, представляющих многослойную видеопоследовательность, например, в результате выполнения способа 900 и/или в ответ на запрос декодера. На этапе 1001 декодер принимает битовый поток, содержащий кодированный снимок в одной или более единицах NAL VCL и единице NAL не-VCL. Например, кодированный снимок может быть включен в AU. Кроме того, битовый поток может включать в себя один или более слоев, включающих в себя кодированный снимок. Слой может включать в себя набор единиц NAL VCL с одинаковым ID слоя и связанные единицы NAL не-VCL. Например, набор единиц NAL VCL, является частью слоя, когда все наборы единиц NAL VCL, имеют конкретное значение nuh_layer_id. Слой может включать в себя набор единиц NAL VCL, которые содержат видеоданные кодированных снимков, и любые наборы параметров, используемые для кодирования таких снимков. Один или более слоев могут быть выходными слоями. Слои, которые не являются выходным слоем, кодируются для поддержки восстановления выходного слоя (слоев), но такие поддерживающие слои не предназначены для вывода. Таким образом, декодер может получать различные представления видеопоследовательности в зависимости от условий сети, возможностей оборудования и/или пользовательских настроек. Слой также включает в себя различные единицы NAL не-VCL. Единицы NAL не-VCL, связаны с набором единиц NAL VCL, все из которых имеют конкретное значение nuh_layer_id.

[00165] В частности, единица NAL не-VCL кодируется в битовом потоке так, что TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL указывает, что сообщение SEI включено в NAL не-VCL. Иными словами, сообщение SEI может быть включено в ту же AU, что и снимок, к которому применяется SEI. Соответственно, TemporalId сообщения SEI, содержащегося в единице NAL не-VCL, ограничен быть равным TemporalId AU, которая содержит сообщение SEI/единицу NAL не-VCL. В некоторых примерах сообщение SEI является сообщением префиксной SEI, и, следовательно, nal_unit_type у NAL не-VCL равен PREFIX_SEI_NUT. В некоторых примерах сообщение SEI является сообщением суффиксной SEI, и, следовательно, nal_unit_type у NAL не-VCL равен SUFFIX_SEI_NUT.

[00166] TemporalId для единицы NAL не-VCL может быть указан синтаксическим элементом nuh_temporal_id_plus1 в единице NAL не-VCL. Соответственно, декодер может вывести TemporalId для единицы NAL не-VCL на основе синтаксического элемента nuh_temporal_id_plus1 в единице NAL не-VCL на этапе 1002. Аналогично, TemporalId для AU может быть указан синтаксическим элементом nuh_temporal_id_plus1 в единице NAL VCL, содержащей сегмент кодированного снимка в AU. TemporalId единиц NAL VCL ограничен быть одинаковым для всех единиц NAL VCL в одной и той же AU. Соответственно, синтаксический элемент nuh_temporal_id_plus1 единиц NAL VCL ограничен быть одинаковым для всех единиц NAL VCL в одной и той же AU. Следовательно, значение синтаксического элемента nuh_temporal_id_plus1 в единице NAL не-VCL, содержащем сообщение SEI, является тем же самым, что и значение синтаксического элемента nuh_temporal_id_plus1 в любой единице NAL VCL в той же AU, что и сообщение SEI. TemporalId для единицы NAL не-VCL выводится следующим образом:

TemporalId=nuh_temporal_id_plus1-1.

Кроме того, значение nuh_temporal_id_plus1 для единицы NAL не-VCL и единицы NAL VCL в AU не может быть установлено равным нулю, поскольку это привело бы к отрицательному значению TemporalId.

[00167] В одном варианте осуществления видеодекодер ожидает, что TemporalId для единицы NAL не-VCL будет равен TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL является сообщением SEI, как описано выше, на основе VVC или другого стандарта. Однако, если декодер определяет, что это условие не соответствует действительности, он может обнаружить ошибку, сообщить об ошибке, запросить повторную отправку исправленного битового потока (или его части) или предпринять некоторые другие корректирующие меры, чтобы гарантировать, что принимается согласующийся битовый поток.

[00168] На этапе 1003 декодер может декодировать кодированный снимок из единиц NAL VCL, чтобы создать декодированный снимок. Например, декодер может использовать значения TemporalId и/или nuh_temporal_id_plus1 для корреляции сообщений SEI с снимками. Затем декодер может использовать сообщения SEI по желанию при декодировании кодированного снимка. На этапе 1005 декодер может переслать декодированный снимок для отображения в качестве части декодированной видеопоследовательности.

[00169] Фиг.11 является принципиальной схемой примерной системы 1100 для кодирования видеопоследовательности с использованием битового потока, причем TemporalId для сообщений SEI в битовом потоке ограничены. Система 1100 может быть реализована с помощью кодера и декодера, такого как система 200 кодека, кодер 300, декодер 400 и/или устройство 800 видеокодирования. Кроме того, система 1100 может использовать HRD 500 для выполнения тестов на согласованность для многослойной видеопоследовательности 600 и/или битового потока 700. Кроме того, система 1100 может использоваться при реализации способов 100, 900 и/или 1000.

[00170] Система 1100 включает в себя видеокодер 1102. Видеокодер 1102 содержит модуль 1103 кодирования для кодирования кодированного снимка в одной или более единицах NAL VCL в битовом потоке. Модуль 1103 кодирования дополнительно предназначен для кодирования в битовый поток единицы NAL не-VCL, так что TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type у NAL не-VCL является сообщением SEI. Видеокодер 1102 дополнительно содержит модуль 1105 HRD для выполнения набора тестов на согласованность битового потока в отношении битового потока на основе сообщения SEI. Видеокодер 1102 дополнительно содержит модуль 1106 хранения для сохранения битового потока для передачи в декодер. Видеокодер 1102 дополнительно содержит модуль 1107 передачи для передачи битового потока в видеодекодер 1110. Видеокодер 1102 может быть дополнительно выполнен с возможностью осуществления любого из этапов способа 900.

[00171] Система 1100 также включает в себя видеодекодер 1110. Видеодекодер 1110 содержит модуль 1111 приема для приема битового потока, содержащего кодированный снимок в одной или более единицах NAL VCL и единице NAL не-VCL, при этом TemporalId для единицы NAL не-VCL ограничен быть равным TemporalId AU, содержащей единицу NAL не-VCL, когда nal_unit_type единицы NAL не-VCL является сообщением SEI. Видеодекодер 1110 дополнительно содержит модуль 1113 декодирования для декодирования кодированного снимка из единиц NAL VCL для создания декодированного снимка. Видеодекодер 1110 дополнительно содержит модуль 1115 пересылки для пересылки декодированного снимка для отображения в качестве части декодированной видеопоследовательности. Видеодекодер 1110 может быть дополнительно выполнен с возможностью осуществления любого из этапов способа 1000.

[00172] Первый компонент напрямую связан со вторым компонентом, когда нет промежуточных компонентов, за исключением линии, трассировки или другой среды между первым компонентом и вторым компонентом. Первый компонент косвенно связан со вторым компонентом, когда есть промежуточные компоненты, отличные от линии, следа или другой среды между первым компонентом и вторым компонентом. Термин «связанный» и его варианты включают как напрямую связанные, так и косвенно связанные. Использование термина «примерно» означает диапазон, включающий ± 10% от следующего числа, если не указано иное.

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

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

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

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

название год авторы номер документа
ОТКЛОНЕНИЕ НЕИСПОЛЬЗУЕМЫХ СЛОЕВ В МНОГОСЛОЙНЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2823559C1
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ 2020
  • Ван, Е-Куй
RU2824781C1
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS 2020
  • Ван, Е-Куй
RU2820076C1
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ 2020
  • Ван, Е-Куй
RU2821048C1
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAR И HE-IRAR В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2822714C1
ОГРАНИЧЕНИЯ НАБОРА ПАРАМЕТРОВ ЕДИНИЦ NAL НА ОСНОВЕ УРОВНЯ 2020
  • Ван, Е-Куй
RU2822533C1
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ 2020
  • Ван, Е-Куй
RU2825440C1
OLS ДЛЯ МНОГОРАКУРСНОЙ МАСШТАБИРУЕМОСТИ 2020
  • Ван, Е-Куй
RU2822508C1
ПОДДЕРЖКА СМЕШАННЫХ СНИМКОВ IRAP И НЕ-IRAP В ПРЕДЕЛАХ ЕДИНИЦЫ ДОСТУПА В МНОГОСЛОЙНЫХ БИТОВЫХ ПОТОКАХ ВИДЕО 2020
  • Ван, Е-Куй
RU2815736C1
УСТОЙЧИВАЯ К ОШИБКАМ АССОЦИАЦИЯ ЕДИНИЦЫ ДЕКОДИРОВАНИЯ 2013
  • Ван Е-Куй
RU2628250C2

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

Реферат патента 2024 года ОГРАНИЧЕНИЯ ВРЕМЕННОГО ИДЕНТИФИКАТОРА ДЛЯ СООБЩЕНИЙ SEI

Изобретение относится к вычислительной технике. Технический результат заключается в улучшении степени сжатия с минимальными потерями в качестве изображения. Способ декодирования видео содержит этапы, на которых принимают посредством приемника декодера битовый поток, содержащий кодированный снимок в одной или более единицах слоя сетевой абстракции (NAL) слоя видеокодирования (VCL) и единице NAL не-VCL, при этом временной идентификатор (TemporalId) для единицы NAL не-VCL ограничен быть равным TemporalId единицы доступа (AU), содержащей единицу NAL не-VCL, когда тип единицы NAL (nal_unit_type) у NAL не-VCL равен типу единицы NAL префиксной дополнительной информации расширения (SEI) (PREFIX_SEI_NUT) или типу единицы NAL суффиксной SEI (SUFFIX_SEI_NUT); выводят посредством процессора декодера TemporalId для единицы NAL не-VCL на основе синтаксического элемента временного идентификатора заголовка единицы NAL плюс один (nuh_temporal_id_plus1) в единице NAL не-VCL; и декодируют кодированный снимок из единиц NAL VCL для создания декодированного снимка. 2 н. и 7 з.п. ф-лы, 11 ил.

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

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

принимают посредством приемника декодера битовый поток, содержащий кодированный снимок в одной или более единицах слоя сетевой абстракции (NAL) слоя видеокодирования (VCL) и единице NAL не-VCL, при этом временной идентификатор (TemporalId) для единицы NAL не-VCL ограничен быть равным TemporalId единицы доступа (AU), содержащей единицу NAL не-VCL, когда тип единицы NAL (nal_unit_type) у NAL не-VCL равен типу единицы NAL префиксной дополнительной информации расширения (SEI) (PREFIX_SEI_NUT) или типу единицы NAL суффиксной SEI (SUFFIX_SEI_NUT);

выводят посредством процессора декодера TemporalId для единицы NAL не-VCL на основе синтаксического элемента временного идентификатора заголовка единицы NAL плюс один (nuh_temporal_id_plus1) в единице NAL не-VCL; и

декодируют посредством процессора декодера кодированный снимок из единиц NAL VCL для создания декодированного снимка.

2. Способ по п.1, в котором nal_unit_type у NAL не-VCL равен PREFIX_SEI_NUT.

3. Способ по п.1, в котором nal_unit_type у NAL не-VCL равен SUFFIX_SEI_NUT.

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

5. Способ по любому из пп.1-4, дополнительно содержащий этап, на котором выводят TemporalId для единицы NAL не-VCL следующим образом:

TemporalId = nuh_temporal_id_plus1 - 1.

6. Способ по любому из пп.1-5, в котором значение nuh_temporal_id_plus1 не равно нулю.

7. Способ по любому из пп.1-6, в котором TemporalId единиц NAL VCL ограничен быть одинаковым для всех единиц NAL VCL в одной и той же AU.

8. Способ по любому из пп.1-7, дополнительно содержащий этапы, на которых:

принимают посредством декодера второй битовый поток, включающий в себя вторую одну или более единиц NAL VCL и вторую единицу NAL не-VCL, при этом TemporalId для второй единицы NAL не-VCL не равен TemporalId второй AU, содержащей вторую единицу NAL не-VCL, когда nal_unit_type второй единицы NAL не-VCL является сообщением SEI; и

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

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

приемник, выполненный с возможностью принимать битовый поток, содержащий кодированный снимок в одной или более единицах слоя сетевой абстракции (NAL) слоя видеокодирования (VCL) и единице NAL не-VCL, при этом временной идентификатор (TemporalId) для единицы NAL не-VCL ограничен быть равным TemporalId единицы доступа (AU), содержащей единицу NAL не-VCL, когда тип единицы NAL (nal_unit_type) у NAL не-VCL является сообщением дополнительной информации расширения (SEI);

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

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

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

US 20140016707 A1, 16.01.2014
US 20140064384 A1, 06.03.2014
US 20140086331 A1, 27.03.2014
СПОСОБ ДЕКОДИРОВАНИЯ ШИФРОВАННОГО АУДИО/ВИДЕОКОНТЕНТА, СПОСОБ ИДЕНТИФИКАЦИИ МОДУЛЯ БЕЗОПАСНОСТИ И УСТРОЙСТВО ДЕКОДИРОВАНИЯ 2011
  • Маккетти Марко
RU2544760C2
ПЕРЕДАЧА В СЛУЖЕБНЫХ СИГНАЛАХ ИНФОРМАЦИИ ЗНАЧЕНИЙ ПАРАМЕТРОВ В НАБОРЕ ПАРАМЕТРОВ, ЧТОБЫ УМЕНЬШАТЬ ОБЪЕМ ДАННЫХ, СОДЕРЖАЩИХСЯ В КОДИРОВАННОМ ПОТОКЕ БИТОВ ВИДЕО 2020
  • Шеберг, Риккард
  • Дамганиан, Митра
  • Веннерстен, Пер
  • Петтерссон, Мартин
RU2758901C1

RU 2 823 614 C1

Авторы

Ван, Е-Куй

Даты

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

2020-09-17Подача