ПЕРЕКРЕСТНАЯ ССЫЛКА НА РОДСТВЕННЫЕ ЗАЯВКИ
[0001] В настоящей заявке на патент испрашиваются преимущества предварительной заявки на патент США №. 62/870,892, поданной 5 июля 2019 года Е-Куи Вангом и озаглавленной «Обработка идентификатора сигнализированного сегмента для извлечения битового подпотока» (“Handling Signalled Slice Id for Bitstream Extraction”), которая включена сюда посредством ссылки.
ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ
[0002] Настоящее раскрытие в целом относится к видеокодированию и, в частности, относится к извлечению битового потока при видеокодировании.
УРОВЕНЬ ТЕХНИКИ
[0003] Объем видеоданных, необходимых для представления даже относительно короткого видео, может быть значительным, что может привести к трудностям, когда эти данные должны передаваться в потоковом режиме или иным образом передаваться по сети связи с ограниченной пропускной способностью. Таким образом, видеоданные, как правило, сжимаются перед тем, как передаваться через современные телекоммуникационные сети. Размер видео также может быть проблемой, когда видео хранится на запоминающем устройстве, поскольку ресурсы памяти могут быть ограничены. Устройства сжатия видео часто используют программное и/или аппаратное обеспечение в источнике для кодирования видеоданных перед передачей или хранением, тем самым уменьшая количество данных, необходимых для представления цифровых видеоизображений. Сжатые данные затем принимаются устройством-получателем декомпрессии видео, которое декодирует видеоданные. С ограниченными сетевыми ресурсами и постоянно растущими требованиями к более высокому качеству видео желательны улучшенные методики сжатия и распаковки, которые улучшают степень сжатия с минимальными потерями в качестве изображения или вообще без них.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
[0004] В одном варианте осуществления раскрытие включает в себя способ, реализуемый в декодере, при этом способ содержит: прием посредством приемника декодера извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, при этом извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока; определение посредством процессора декодера того, что флаг из извлеченного битового потока установлен указывать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; получение посредством процессора одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага; и декодирование посредством процессора поднабора подснимков на основе идентификаторов (ID) подснимков.
[0005] Некоторые последовательности видеокодирования могут включать в себя снимки, которые закодированы как набор подснимков. Подснимки могут быть связаны с идентификаторами подснимков, которые могут использоваться для указания местоположения подснимков относительно снимков. В некоторых случаях такая информация о подснимках может быть логически выведена. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования. Некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Настоящий пример включает в себя механизмы для предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, если битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа (сплайсер) включают информацию о подснимках для, по меньшей мере, поднабора подснимков в битовый подпоток. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.
[0006] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта предусматривает то, что дополнительно содержится получение процессором длины в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков.
[0007] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг, идентификаторы подснимков и длина получаются из набора параметров последовательности (SPS) в извлеченном битовом потоке.
[0008] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).
[0009] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id [i]).
[0010] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1).
[0011] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта предусматривает то, что требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.
[0012] В одном варианте осуществления раскрытие включает в себя способ, реализуемый в кодере, содержащий: кодирование процессором кодера входного битового потока, содержащего набор подснимков; выполнение процессором процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока; кодирование в извлеченный битовый поток процессором одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке; установку процессором флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и сохранение посредством памяти, соединенной с процессором, битового потока для передачи в декодер.
[0013] Некоторые последовательности видеокодирования могут включать в себя снимки, которые закодированы как набор подснимков. Подснимки могут быть связаны с идентификаторами подснимков, которые могут использоваться для указания местоположения подснимков относительно снимков. В некоторых случаях такая информация о подснимках может быть логически выведена. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования. Некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Настоящий пример включает в себя механизмы для предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, если битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа включают информацию о подснимках для, по меньшей мере, поднабора подснимков в битовый подпоток. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.
[0014] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что дополнительно содержится кодирование процессором длины в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток.
[0015] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что флаг, идентификаторы подснимков и длина кодируются в SPS в извлеченном битовом потоке.
[0016] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором флаг является subpic_info_present_flag.
[0017] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором идентификаторы подснимков содержатся в синтаксической структуре sps_subpic_id [i].
[0018] В необязательном порядке, в любом из предшествующих аспектов, предоставляется другой вариант реализации аспекта, в котором длина содержится в синтаксической структуре sps_subpic_id_len_minus1 plus 1.
[0019] В необязательном порядке, в любом из предшествующих аспектов предусмотрен другой вариант реализации аспекта, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для CLVS и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.
[0020] В одном варианте осуществления раскрытие включает в себя устройство видеокодирования, содержащее: процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, при этом процессор, приемник, память и передатчик выполнены с возможностью осуществлять способ любого из предыдущих аспектов.
[0021] В одном варианте осуществления изобретение включает в себя долговременный машиночитаемый носитель, содержащий компьютерный программный продукт для использования устройством видеокодирования, причем компьютерный программный продукт содержит машиноисполняемые инструкции, хранящиеся на долговременном машиночитаемом носителе, которые при их исполнении процессором предписывают устройству видеокодирования выполнять способ по любому из предшествующих аспектов.
[0022] В одном варианте осуществления раскрытие включает в себя декодер, содержащий: средство приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока; средство определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; средство получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага; средство декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков; и средство пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности.
[0023] В необязательном порядке, в любом из предшествующих аспектов, другой вариант реализации аспекта обеспечивает то, что декодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.
[0024] В одном варианте осуществления раскрытие включает в себя кодер, содержащий: первое средство кодирования для кодирования входного битового потока, содержащего набор подснимков; средство извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока; второе средство кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке; средство установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и средство хранения для хранения битового потока для передачи в декодер.
[0025] В необязательном порядке, в любом из предыдущих аспектов, другой вариант реализации аспекта обеспечивает то, что кодер дополнительно выполнен с возможностью выполнения способа по любому из предыдущих аспектов.
[0026] Для ясности любой из вышеупомянутых вариантов осуществления изобретения может быть объединен с любым одним или более другими вышеупомянутыми вариантами осуществления изобретения, чтобы создать новый вариант осуществления в пределах объема настоящего изобретения.
[0027] Эти и другие особенности будут более понятны из следующего подробного описания, рассматриваемого вместе с сопроводительными чертежами и формулой изобретения.
КРАТКОЕ ОПИСАНИЕ ЧЕРТЕЖЕЙ
[0028] Для более полного понимания настоящего раскрытия теперь сделана ссылка на следующее краткое описание, рассматриваемое с прилагаемыми чертежами и подробным описанием, в котором одинаковые номера позиций представляют одинаковые части.
[0029] Фиг.1 - блок-схема последовательности операций примерного способа кодирования видеосигнала.
[0030] Фиг.2 - принципиальная схема примерной системы кодирования и декодирования (кодека) для видеокодирования.
[0031] Фиг.3 - принципиальная схема, иллюстрирующая пример видеокодера.
[0032] Фиг.4 - принципиальная схема, иллюстрирующая пример видеодекодера.
[0033] Фиг.5 - принципиальная схема, иллюстрирующая множество видеопотоков подснимков, извлеченных из видеопотока со снимками.
[0034] Фиг.6 - принципиальная схема, иллюстрирующая примерный битовый поток, разделенный на битовый подпоток.
[0035] Фиг.7 - принципиальная схема примерного устройства видеокодирования.
[0036] Фиг.8 - блок-схема последовательности операций примерного способа кодирования видеопоследовательности в битовый поток и извлечения битового подпотока при уменьшении ошибок с идентификаторами.
[0037] Фиг.9 - блок-схема последовательности операций примерного способа декодирования видеопоследовательности из битового подпотока, извлеченного из битового потока.
[0038] Фиг.10 - принципиальная схема примерной системы для кодирования видеопоследовательности изображений в битовом потоке и извлечения битового подпотока при уменьшении ошибок ID.
ПОДРОБНОЕ ОПИСАНИЕ
[0039] Вначале следует понять, что хотя иллюстративная реализация одного или более вариантов осуществления представлена ниже, раскрытые системы и/или способы могут быть реализованы с использованием любого количества способов, известных в настоящее время или существующих. Раскрытие никоим образом не должно ограничиваться иллюстративными реализациями, чертежами и технологиями, проиллюстрированными ниже, включая иллюстративные конструкции и реализации, проиллюстрированные и описанные здесь, но может быть изменено в пределах объема прилагаемой формулы изобретения вместе с полным объемом ее эквивалентов.
[0040] Следующие ниже термины определены следующим образом, если они не используются в данном документе в противоположном контексте. В частности, следующие определения предназначены для дополнительной ясности настоящего раскрытия. Однако в разных контекстах термины могут описываться по-разному. Соответственно, следующие определения следует рассматривать как дополнение и не следует рассматривать как ограничение каких-либо других определений описаний, предоставленных для таких терминов в данном документе.
[0041] Битовый поток - это последовательность битов, включающая в себя видеоданные, которые сжимаются для передачи между кодером и декодером. Кодер - это устройство, которое выполнено с возможностью использования процессов кодирования для сжатия видеоданных в битовый поток. Декодер - это устройство, которое выполнено с возможностью использования процессов декодирования для восстановления видеоданных из битового потока для отображения. Снимок - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Снимок, который кодируется или декодируется, может называться текущим снимком для ясности обсуждения. Подснимок - это прямоугольная область из одного или более сегментов внутри снимка. Процесс извлечения битового подпотока - это заданный механизм, который удаляет единичные блоки уровня абстракции сети (NAL) из битового потока, которые не являются частью целевого набора, в результате чего получается выходной битовый подпоток, который включает в себя единичные блоки NAL, включенные в целевой набор. Единичный блок NAL - это синтаксическая структура, содержащая байты данных и указание типа содержащихся в них данных. Единичные блоки NAL включают в себя единичные блоки NAL уровня видеокодирования (VCL), которые содержат видеоданные, и единичные блоки NAL, не относящиеся к VCL, которые содержат вспомогательные синтаксические данные. Входной битовый поток - это битовый поток, который содержит полный набор единичных блоков NAL до применения процесса извлечения битового подпотока. Извлеченный битовый поток, также известный как битовый подпоток, представляет собой битовый поток, который выводится из процесса извлечения битового потока и включает в себя поднабор единичных блоков NAL из входного битового потока. Набор - это совокупность отдельных элементов. Поднабор - это совокупность элементов, так что каждый элемент в поднаборе включен в набор, и по меньшей мере один элемент из набора исключен из поднабора. Информация о подснимках - это любые данные, которые описывают подснимок. Флаг - это структура данных, содержащая последовательность битов, которая может быть установлена для указания соответствующих данных. Идентификатор (ID) подснимка - это элемент данных, который однозначно идентифицирует соответствующий подснимок. Длина структуры данных - это количество битов, содержащихся в структуре данных. Закодированная послойно видеопоследовательность (CLVS) - это последовательность кодированных видеоданных, содержащих один или более слоев снимков. CLVS может называться закодированной видеопоследовательностью (CVS), когда CLVS содержит единственный слой или когда CLVS обсуждается вне контекста слоев. Набор параметров последовательности (SPS) - это набор параметров, который содержит данные, относящиеся к последовательности снимков. Декодированная видеопоследовательность - это последовательность снимков, которые были восстановлены декодером при подготовке к отображению пользователю.
[0042] В данном документе используются следующие сокращения: Блок дерева кодирования (CTB), Единичный блок дерева кодирования (CTU), Единичный блок кодирования (CU), Закодированная видеопоследовательность (CVS), Объединенная группа экспертов по видео (JVET), Набор клеток с ограничением движения (MCTS), Максимальный единичный блок передачи (MTU), Уровень сетевой абстракции (NAL), Порядковый номер снимка (POC), Полезная нагрузка необработанной байтовой последовательности (RBSP), Набор параметров последовательности (SPS), Единичный блок подснимка (SPU), Универсальное видеокодирование (VVC) и Рабочий проект (WD).
[0043] Для уменьшения размера видеофайлов с минимальной потерей данных можно использовать многие методики сжатия видео. Например, методики сжатия видео могут включать в себя выполнение пространственного (например, внутрикадрового (интра)) предсказания. Для блочного видеокодирования сегмент (слайс) видео (например, видеоснимок или часть видеоснимка) может быть разделен на видеоблоки, которые также могут называться древовидными блоками, блоками дерева кодирования (CTB), единичными блоками дерева кодирования (CTU), единичными блоками кодирования (CU) и/или узлами кодирования. Видеоблоки в сегменте, закодированном в интра-режиме (I), кодируются с использованием пространственного предсказания относительно опорных дискретных отсчетов в соседних блоках в одном и том же снимке. Видеоблоки в сегменте снимка, закодированном в межкадровом (интер) режиме с однонаправленным предсказанием (P) или двунаправленным предсказанием (B), могут кодироваться, используя пространственное предсказание относительно опорных дискретных отсчетов в соседних блоках в одном и том же снимке или временное предсказание относительно опорных дискретных отсчетов в других опорных снимках. Снимки могут называться кадрами и/или изображениями, а опорные снимки могут называться опорными кадрами и/или опорными изображениями. Пространственное или временное предсказание приводит к блоку предсказания, представляющему блок изображения. Остаточные данные представляют собой пиксельные разности между исходным блоком изображения и блоком предсказания. Соответственно, кодированный в интер-режиме блок кодируется согласно вектору движения, который указывает на блок опорных дискретных отсчетов, формирующих блок предсказания, и остаточные данные, указывающие разность между кодированным блоком и блоком предсказания. Кодированный в интра-режиме блок кодируется в соответствии с режимом внутрикадрового (интра) кодирования и остаточными данными. Для дальнейшего сжатия остаточные данные могут быть преобразованы из области пикселей в область преобразования. В результате получаются остаточные коэффициенты преобразования, которые можно квантовать. Квантованные коэффициенты преобразования могут изначально быть скомпонованы в двумерном массиве. Квантованные коэффициенты преобразования могут сканироваться для создания одномерного вектора коэффициентов преобразования. Для достижения еще большего сжатия может применяться энтропийное кодирование. Такие методики сжатия видео более подробно обсуждаются ниже.
[0044] Чтобы обеспечить точное декодирование закодированного видео, видео кодируется и декодируется согласно соответствующим стандартам видеокодирования. Стандарты видеокодирования включают в себя Сектор стандартизации Международного союза электросвязи (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-v8.
[0045] Последовательности видеокодирования включают в себя последовательность снимков. В некоторых случаях такие снимки могут быть дополнительно разделены на набор подснимков, где каждый подснимок включает в себя отдельную область снимка. Подснимки могут позволять различным пространственным частям снимка обрабатываться в декодере по-разному. Например, в контексте виртуальной реальности (VR) пользователю отображается только часть всего снимка. Соответственно, подснимки могут использоваться для передачи различных частей снимка в декодер с разными разрешениями и/или даже для исключения конкретных частей снимка. Это может повысить эффективность кодирования. В другом примере приложения телеконференцсвязи могут динамически увеличивать размер и/или разрешение изображений участника, который активно говорит, и уменьшать размер/разрешение изображения участника, когда участник перестает говорить. Включение каждого участника в отдельный подснимок позволяет производить такие динамические изменения, относящиеся к одному участнику, не влияя на изображения, относящиеся к другим участникам. Подснимки могут быть связаны с идентификаторами подснимков. Идентификатор подснимка однозначно идентифицирует соответствующий подснимок. Соответственно, идентификаторы подснимков могут использоваться для указания местоположения подснимков относительно снимка и/или для внесения изменений в процесс кодирования на уровне подснимков. В некоторых случаях может быть логически выведена информация о подснимках, такая как идентификаторы подснимков. Например, когда снимок включает в себя девять подснимков, идентификаторы подснимков могут быть выведены декодером как индексы в диапазоне от нуля до восьми. В таких случаях эту информацию о подснимках можно исключить из битового потока, чтобы повысить эффективность кодирования.
[0046] Однако некоторые процессы могут извлекать битовый подпоток из битового потока для независимой передачи конечному пользователю. В таком случае битовый подпоток содержит только поднабор подснимков, которые содержались в исходном битовом потоке. Хотя информация о подснимках может быть логически выведена, когда присутствуют все подснимки, такой вывод может быть невозможен в декодере, когда присутствует только поднабор подснимков. Например, кодер может передавать декодеру только третий из девяти подснимок и четвертый из девяти подснимок. Если информация о подснимках опущена, декодер может быть не в состоянии определить, какие подснимки принимаются и как такие подснимки должны отображаться. В таком случае битовый поток считается соответствующим битовым потоком, поскольку можно сделать вывод о недостающих данных, относящихся к битовому потоку. Однако извлеченный битовый подпоток не соответствует требованиям, поскольку некоторые недостающие данные, относящиеся к битовому подпотоку, не могут быть выведены.
[0047] В данном документе раскрыты механизмы предотвращения ошибок кодирования в течение извлечения битового подпотока. В частности, когда битовый подпоток извлекается из битового потока, кодер и/или средство видеомонтажа кодируют информацию о подснимках для, по меньшей мере, поднабора подснимков в битовом подпотоке в набор параметров в битовом подпотоке. Кроме того, кодер/средство видеомонтажа включает флаг, указывающий, что информация о подснимках включена в битовый подпоток. Декодер может считать этот флаг, получить правильную информацию о подснимках и декодировать битовый подпоток. Такая информация о подснимках может включать в себя идентификаторы подснимков в синтаксическом элементе и элемент данных длины, указывающий длину в битах синтаксического элемента идентификатора подснимка. Соответственно, раскрытые механизмы создают дополнительные функциональные возможности в кодере и/или декодере, избегая ошибок кодирования, связанных подснимков. Кроме того, раскрытые механизмы могут повысить эффективность кодирования, допуская извлечение битового подпотока, а не передачу всего битового потока. Это может уменьшить использование процессора, памяти и/или сетевых ресурсов в кодере и/или декодере.
[0048] Фиг.1 является блок-схемой примерного рабочего способа 100 кодирования видеосигнала. В частности, видеосигнал кодируется в кодере. Процесс кодирования сжимает видеосигнал, используя различные механизмы для уменьшения размера видеофайла. Меньший размер файла позволяет передавать сжатый видеофайл пользователю, уменьшая при этом издержки на полосу пропускания. Затем декодер декодирует сжатый видеофайл, чтобы восстановить исходный видеосигнал для отображения конечному пользователю. Процесс декодирования обычно отражает процесс кодирования, чтобы декодер мог последовательно восстанавливать видеосигнал.
[0049] На этапе 101 видеосигнал вводится в кодер. Например, видеосигнал может быть несжатым видеофайлом, хранящимся в памяти. В качестве другого примера видеофайл может быть захвачен устройством видеозахвата, например видеокамерой, и закодирован для поддержки потоковой передачи видео в реальном времени. Видеофайл может включать в себя как аудио составляющую, так и видео составляющую. Видео составляющая содержит серию кадров изображений, которые при последовательном просмотре создают визуальное впечатление движения. Кадры содержат пиксели, которые выражаются в единицах света, называемых здесь компонентами яркости (или дискретными отсчетами яркости), и цветом, который упоминается как компоненты цветности (или дискретные отсчеты цвета). В некоторых примерах кадры могут также содержать значения глубины для поддержки трехмерного просмотра.
[0050] На этапе 103 видео разбивается на блоки. Разбиение включает в себя разделение пикселей в каждом кадре на квадратные и/или прямоугольные блоки для сжатия. Например, при высокоэффективном видеокодировании (HEVC) (также известном как H.265 и MPEG-H Часть 2) кадр сначала можно разделить на единичные блоки дерева кодирования (CTU), которые представляют собой блоки заранее заданного размера (например, шестьдесят четыре пикселя на шестьдесят четыре пикселя). Единичные блоки CTU содержат дискретные отсчеты яркости и цветности. Деревья кодирования могут использоваться для разделения CTU на блоки, а затем рекурсивно разделять блоки до тех пор, пока не будут достигнуты конфигурации, поддерживающие дальнейшее кодирование. Например, компоненты яркости кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения яркости. Кроме того, компоненты цветности кадра могут делиться до тех пор, пока отдельные блоки не будут содержать относительно однородные значения цвета. Соответственно, механизмы разделения меняются в зависимости от содержимого видеокадров.
[0051] На этапе 105 используются различные механизмы сжатия для сжатия блоков изображения, разделенных на этапе 103. Например, может использоваться интер-предсказание и/или интра-предсказание. Интре-предсказание предназначено для использования того факта, что объекты в общей сцене имеют тенденцию появляться в последовательных кадрах. Соответственно, блок, изображающий объект в опорном кадре, не нужно повторно описывать в соседних кадрах. В частности, объект, такой как таблица, может оставаться в постоянной позиции на протяжении нескольких кадров. Следовательно, таблица описывается один раз, и соседние кадры могут обращаться к опорному кадру. Механизмы сопоставления с образцом могут использоваться для сопоставления объектов в нескольких кадрах. Кроме того, движущиеся объекты могут быть представлены в нескольких кадрах, например, из-за движения объекта или движения камеры. В качестве конкретного примера видео может показывать автомобиль, который движется по экрану в нескольких кадрах. Векторы движения могут использоваться для описания такого движения. Вектор движения - это двумерный вектор, который обеспечивает смещение от координат объекта в кадре до координат объекта в опорном кадре. По существу, интер- предсказание может кодировать блок изображения в текущем кадре как набор векторов движения, указывающих смещение от соответствующего блока в опорном кадре.
[0052] Интра-предсказание кодирует блоки в общем кадре. Интра-предсказание использует тот факт, что компоненты яркости и цветности имеют тенденцию группироваться в кадре. Например, участок зеленого цвета на части дерева имеет тенденцию располагаться рядом с аналогичными участками зеленого цвета. Интра-предсказание использует несколько режимов направленного предсказания (например, тридцать три в HEVC), планарный режим и режим прямого течения (Direct Current (DC)). Направленные режимы указывают, что текущий блок подобен/совпадает с дискретными отсчетами соседнего блока в соответствующем направлении. Планарный режим указывает, что последовательность блоков вдоль строки/столбца (например, плоскости) может быть интерполирована на основе соседних блоков на краях строки. Фактически планарный режим указывает на плавный переход света/цвета по строке/столбцу за счет использования относительно постоянного наклона при изменении значений. Режим DC используется для сглаживания границ и указывает, что блок подобен/совпадает со средним значением, связанным с дискретными отсчетами всех соседних блоков, связанных с угловыми направлениями режимов направленного предсказания. Соответственно, блоки интра-предсказания могут представлять блоки изображения как различные значения режима реляционного предсказания вместо фактических значений. Кроме того, блоки интер-предсказания могут представлять блоки изображения как значения вектора движения вместо фактических значений. В любом случае в некоторых случаях блоки предсказания могут не точно представлять блоки изображения. Любые отличия хранятся в остаточных блоках. К остаточным блокам могут применяться преобразования для дальнейшего сжатия файла.
[0053] На этапе 107 могут применяться различные методики фильтрации. В HEVC фильтры применяются в соответствии со схемой внутриконтурной фильтрации. Обсуждаемое выше предсказание на основе блоков может привести к созданию блочных изображений в декодере. Кроме того, схема предсказания на основе блоков может кодировать блок, а затем восстанавливать кодированный блок для последующего использования в качестве опорного блока. Схема внутриконтурной фильтрации итеративно применяет фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры с адаптивным смещением дискретного отсчета (SAO) к блокам/кадрам. Эти фильтры уменьшают такие артефакты блокировки, чтобы можно было точно восстановить закодированный файл. Кроме того, эти фильтры уменьшают артефакты в восстановленных опорных блоках, так что артефакты с меньшей вероятностью создают дополнительные артефакты в последующих блоках, которые кодируются на основе восстановленных опорных блоков.
[0054] После того, как видеосигнал разделен, сжат и отфильтрован, полученные данные кодируются в битовом потоке на этапе 109. Битовый поток включает в себя данные, описанные выше, а также любые данные сигнализации, необходимые для поддержки надлежащего восстановления видеосигнала в декодере. Например, такие данные могут включать в себя данные разбиения, данные предсказания, остаточные блоки и различные флаги, предоставляющие инструкции кодирования для декодера. Битовый поток может храниться в памяти для передачи декодеру по запросу. Битовый поток также может быть широковещательным и/или многоадресным для множества декодеров. Создание битового потока - это итеративный процесс. Соответственно, этапы 101, 103, 105, 107 и 109 могут происходить непрерывно и/или одновременно во многих кадрах и блоках. Порядок, показанный на Фиг.1 представлен для ясности и простоты обсуждения и не предназначен для ограничения процесса видеокодирования конкретным порядком.
[0055] Декодер принимает битовый поток и начинает процесс декодирования на этапе 111. В частности, декодер использует схему энтропийного декодирования для преобразования битового потока в соответствующий синтаксис и видеоданные. Декодер использует синтаксические данные из битового потока для определения разбиений для кадров на этапе 111. Разбиение должно соответствовать результатам разбиения блока на этапе 103. Теперь описывается энтропийное кодирование/декодирование, используемое на этапе 111. Кодер осуществляет многократный выбор вариантов в процессе сжатия, таких как выбор схем разбиения на блоки из нескольких возможных вариантов на основе пространственного позиционирования значений во входном изображении(ях). Для сигнализации конкретного выбора может использоваться большое количество бинарных элементов (бинов). В данном контексте бинарный элемент - это двоичное значение, которое обрабатывается как переменная (например, битовое значение, которое может варьироваться в зависимости от контекста). Энтропийное кодирование позволяет кодеру отбросить любые варианты, которые явно не подходят для конкретного случая, оставив набор допустимых вариантов. Затем каждому допустимому варианту присваивается кодовое слово. Длина кодовых слов основана на количестве допустимых вариантов (например, один бинарный элемент для двух вариантов, два бинарных элемента для трех-четырех вариантов и т.д.) Затем кодер кодирует кодовое слово для выбранного варианта. Эта схема уменьшает размер кодовых слов, поскольку кодовые слова настолько велики, насколько желательно, чтобы однозначно указать выбор из небольшого поднабора допустимых вариантов, в отличие от однозначного указания выбора из потенциально большого набора всех возможных вариантов. Затем декодер декодирует выбор, определяя набор допустимых вариантов аналогично кодеру. Определив набор допустимых вариантов, декодер может считать кодовое слово и определить выбор, сделанный кодером.
[0056] На этапе 113 декодер выполняет блочное декодирование. В частности, декодер использует обратное преобразование для генерации остаточных блоков. Затем декодер использует остаточные блоки и соответствующие блоки предсказания для восстановления блоков изображения в соответствии с разбиением. Блоки предсказания могут включать в себя как блоки интра-предсказания, так и блоки интер-предсказания, сгенерированные в кодере на этапе 105. Блоки восстановленного изображения затем размещаются в кадрах восстановленного видеосигнала в соответствии с данными разбиения, определенными на этапе 111. Синтаксис для этапа 113 также может передаваться в битовом потоке посредством энтропийного кодирования, как описано выше.
[0057] На этапе 115 выполняется фильтрация кадров восстановленного видеосигнала аналогично этапу 107 в кодере. Например, фильтры подавления шума, фильтры устранения блочности, адаптивные контурные фильтры и фильтры SAO могут применяться к кадрам для удаления артефактов блочности. После фильтрации кадров видеосигнал может выводиться на дисплей на этапе 117 для просмотра конечным пользователем.
[0058] Фиг.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 буфера декодированных снимков. Теперь будут описаны эти компоненты.
[0059] Разделенный видеосигнал 201 представляет собой захваченную видеопоследовательность, которая была разделена на блоки пикселей с помощью дерева кодирования. Дерево кодирования использует различные режимы разделения для разделения блока пикселей на более мелкие блоки пикселей. Затем эти блоки можно разделить на более мелкие блоки. Блоки могут называться узлами в дереве кодирования. Более крупные родительские узлы разделяются на более мелкие дочерние узлы. Количество раз, когда узел делится на подразделения, называется глубиной дерева узлов/кодирования. В некоторых случаях разделенные блоки могут быть включены в единичные блоки кодирования (CU). Например, CU может быть частью CTU, которая содержит блок яркости, блок(-и) красной цветоразности (Cr) и блок(-и) синей цветоразности (Cb) вместе с соответствующими инструкциями синтаксиса для CU. Режимы разделения могут включать в себя двоичное дерево (BT), троичное дерево (TT) и квадратное дерево (QT), используемые для разделения узла на два, три или четыре дочерних узла, соответственно, различной формы в зависимости от применяемых режимов разделения. Разделенный видеосигнал 201 пересылается в компонент 211 общего управления кодером, компонент 213 масштабирования и квантования преобразования, компонент 215 оценки интра-режима, компонент 227 анализа управления фильтрами и компонент 221 оценки движения для сжатия.
[0060] Компонент 211 общего управления кодером выполнен с возможностью принятия решений, связанных с кодированием изображений видеопоследовательности в битовый поток в соответствии с ограничениями применения. Например, компонент 211 общего управления кодером управляет оптимизацией скорости передачи/размера битового потока по сравнению с качеством восстановления. Такие решения могут быть приняты на основе доступности дискового пространства/полосы пропускания и запросов разрешения изображения. Компонент 211 общего управления кодером также управляет использованием буфера с учетом скорости передачи, чтобы уменьшить проблемы опустошения и переполнения буфера. Чтобы управлять этими проблемами, компонент 211 общего управления кодером управляет разбиением, предсказанием и фильтрацией с помощью других компонентов. Например, компонент 211 общего управления кодером может динамически увеличивать сложность сжатия для увеличения разрешения и увеличения использования полосы пропускания или уменьшения сложности сжатия для уменьшения разрешения и использования полосы пропускания. Следовательно, компонент 211 общего управления кодером управляет другими компонентами системы 200 кодека, чтобы сбалансировать качество восстановления видеосигнала с проблемами скорости передачи данных. Компонент 211 общего управления кодером создает данные управления, которые управляют работой других компонентов. Данные управления также направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке, чтобы сигнализировать параметры для декодирования в декодере.
[0061] Разделенный видеосигнал 201 также отправляется в компонент 221 оценки движения и компонент 219 компенсации движения для интер-предсказания. Кадр или сегмент разделенного видеосигнала 201 может быть разделен на несколько видеоблоков. Компонент 221 оценки движения и компонент 219 компенсации движения выполняют кодирование с интер-предсказанием принятого видеоблока относительно одного или более блоков в одном или более опорных кадрах для обеспечения временного предсказания. Система 200 кодека может выполнять несколько проходов кодирования, например, чтобы выбрать соответствующий режим кодирования для каждого блока видеоданных.
[0062] Компонент 221 оценки движения и компонент 219 компенсации движения могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Оценка движения, выполняемая компонентом 221 оценки движения, представляет собой процесс генерации векторов движения, которые оценивают движение для видеоблоков. Вектор движения, например, может указывать смещение кодированного объекта относительно блока предсказания. Блок предсказания - это блок, который, как установлено, близко соответствует блоку, который должен быть кодирован, с точки зрения разности пикселей. Блок предсказания также может называться опорным блоком. Такая разность пикселей может определяться суммой абсолютной разности (SAD), суммой квадратов разности (SSD) или другими показателями разности. HEVC использует несколько закодированных объектов, включая CTU, блоки дерева кодирования (CTB) и CU. Например, CTU можно разделить на CTB, которые затем можно разделить на CB для включения в CU. CU может быть закодирован как единичный блок предсказания (PU), содержащий данные предсказания, и/или единичный блок преобразования (TU), содержащий преобразованные остаточные данные для CU. Компонент 221 оценки движения генерирует векторы движения, PU и TU, используя анализ искажения скорости как часть процесса оптимизации искажения скорости. Например, компонент 221 оценки движения может определять несколько опорных блоков, множество векторов движения и т.д. для текущего блока/кадра и может выбирать опорные блоки, векторы движения и т.д., имеющие наилучшие характеристики скорость-искажение. Наилучшие характеристики соотношения скорость-искажение уравновешивают как качество восстановления видео (например, количество потерь данных при сжатии), так и эффективность кодирования (например, размер окончательного кодирования).
[0063] В некоторых примерах система 200 кодека может вычислять значения для положений суб-целочисленных пикселей опорных снимков, сохраненных в компоненте 223 буфера декодированных снимков. Например, система 200 видеокодека может интерполировать значения положений четверти пикселя, положений одной восьмой пикселя или других положений дробных пикселей опорного снимка. Следовательно, компонент 221 оценки движения может выполнять поиск движения относительно положений полных пикселей и положений дробных пикселей и выводить вектор движения с точностью до дробных пикселей. Компонент 221 оценки движения вычисляет вектор движения для PU видеоблока в сегменте с интер-кодированием путем сравнения положения PU с положением блока предсказания опорного снимка. Компонент 221 оценки движения выводит вычисленный вектор движения как данные движения для форматирования заголовка и компонент 231 CABAC для кодирования и движения в компонент 219 компенсации движения.
[0064] Компенсация движения, выполняемая компонентом 219 компенсации движения, может включать в себя выборку или генерацию блока предсказания на основе вектора движения, определенного компонентом 221 оценки движения. Опять же, в некоторых примерах компонент 221 оценки движения и компонент 219 компенсации движения могут быть функционально интегрированы. После приема вектора движения для PU текущего видеоблока компонент 219 компенсации движения может определить местонахождение блока предсказания, на который указывает вектор движения. Затем формируется остаточный видеоблок путем вычитания значений пикселей блока предсказания из значений пикселей текущего кодируемого видеоблока, формируя значения разности пикселей. В общем, компонент 221 оценки движения выполняет оценку движения относительно компонентов яркости, а компонент 219 компенсации движения использует векторы движения, вычисленные на основе компонентов яркости как для компонентов цветности, так и для компонентов яркости. Блок предсказания и остаточный блок направляются в компонент 213 масштабирования и квантования преобразования.
[0065] Разделенный видеосигнал 201 также отправляется компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Как и в случае компонента 221 оценки движения и компонента 219 компенсации движения, компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут быть сильно интегрированы, но проиллюстрированы отдельно для концептуальных целей. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания предсказывают текущий блок относительно блоков в текущем кадре в качестве альтернативы интер-предсказанию, выполняемому компонентом 221 оценки движения и компонентом 219 компенсации движения между кадрами, как описано выше. В частности, компонент 215 оценки интра-режима определяет режим интра-предсказания для использования для кодирования текущего блока. В некоторых примерах компонент 215 оценки интра-режима выбирает соответствующий режим интра-предсказания для кодирования текущего блока из множества проверенных режимов интра-предсказания. Выбранные режимы интра-предсказания затем направляются в компонент 231 форматирования заголовка и CABAC для кодирования.
[0066] Например, компонент 215 оценки интра-режима вычисляет значения скоростного искажения, используя анализ скоростного искажения для различных тестируемых режимов интра-предсказания, и выбирает режим интра-предсказания, имеющий лучшие характеристики скоростного искажения среди тестированных режимов. Анализ соотношения скорости к искажению обычно определяет величину искажения (или ошибки) между закодированным блоком и исходным не кодированным блоком, который был закодирован для создания закодированного блока, а также скорость передачи данных (например, количество битов), используемую для создания закодированного блока. Компонент 215 оценки интра-режима вычисляет отношения из искажений и скоростей для различных кодированных блоков, чтобы определить, какой режим интра-предсказания показывает наилучшее значение искажения скорости для блока. Кроме того, компонент 215 оценки интра-режима может быть выполнен с возможностью кодирования блоков глубины карты глубины с использованием режима моделирования глубины (DMM) на основе оптимизации скорости-искажения (RDO).
[0067] Компонент 217 интра-предсказания может генерировать остаточный блок из блока предсказания на основе выбранных режимов интра-предсказания, определенных компонентом 215 оценки интра-режима, когда он реализован в кодере, или считывать остаточный блок из битового потока, когда реализован в декодере. Остаточный блок включает в себя разность в значениях между блоком предсказания и исходным блоком, представленную в виде матрицы. Остаточный блок затем пересылается в компонент 213 масштабирования и квантования преобразования. Компонент 215 оценки интра-режима и компонент 217 интра-предсказания могут работать как с компонентами яркости, так и с компонентами цветности.
[0068] Компонент 213 масштабирования и квантования преобразования выполнен с возможностью дополнительного сжатия остаточного блока. Компонент 213 масштабирования и квантования преобразования применяет преобразование, такое как дискретное косинусное преобразование (DCT), дискретное синусоидальное преобразование (DST) или концептуально аналогичное преобразование, к остаточному блоку, создавая видеоблок, содержащий значения коэффициентов остаточного преобразования. Также можно использовать вейвлет-преобразования, целочисленные преобразования, преобразования поддиапазонов или другие типы преобразований. Преобразование может преобразовывать остаточную информацию из области значений пикселей в область преобразования, такую как частотная область. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью масштабирования преобразованной остаточной информации, например, на основе частоты. Такое масштабирование включает в себя применение масштабного коэффициента к остаточной информации, так что разная частотная информация квантуется с разной степенью детализации, что может повлиять на окончательное визуальное качество восстановленного видео. Компонент 213 масштабирования и квантования преобразования также выполнен с возможностью квантования коэффициентов преобразования для дальнейшего снижения скорости передачи битов. Процесс квантования может уменьшить битовую глубину, связанную с некоторыми или всеми коэффициентами. Степень квантования может быть изменена путем регулировки параметра квантования. В некоторых примерах компонент 213 масштабирования и квантования преобразования может затем выполнить сканирование матрицы, включающей в себя квантованные коэффициенты преобразования. Квантованные коэффициенты преобразования направляются в компонент 231 форматирования заголовка и CABAC для кодирования в битовом потоке.
[0069] Компонент 229 масштабирования и обратного преобразования применяет обратную операцию компонента 213 масштабирования и квантования преобразования для поддержки оценки движения. Компонент 229 масштабирования и обратного преобразования применяет обратное масштабирование, преобразование и/или квантование для восстановления остаточного блока в области пикселей, например, для последующего использования в качестве опорного блока, который может стать блоком предсказания для другого текущего блока. Компонент 221 оценки движения и/или компонент 219 компенсации движения может вычислять опорный блок, добавляя остаточный блок обратно к соответствующему блоку предсказания для использования при оценке движения более позднего блока/кадра. Фильтры применяются к восстановленным опорным блокам для уменьшения артефактов, возникающих во время масштабирования, квантования и преобразования. В противном случае такие артефакты могут вызвать неточное предсказание (и создать дополнительные артефакты) при предсказании последующих блоков.
[0070] Компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров применяют фильтры к остаточным блокам и/или к восстановленным блокам изображения. Например, преобразованный остаточный блок из компонента 229 масштабирования и обратного преобразования может быть объединен с соответствующим блоком предсказания из компонента 217 интра-предсказания и/или компонента 219 компенсации движения для восстановления исходного блока изображения. Затем фильтры могут быть применены к восстановленному блоку изображения. В некоторых примерах вместо этого фильтры могут применяться к остаточным блокам. Как и в случае с другими компонентами на Фиг.2, компонент 227 анализа управления фильтрами и компонент 225 внутриконтурных фильтров сильно интегрированы и могут быть реализованы вместе, но изображены отдельно для концептуальных целей. Фильтры, применяемые к восстановленным опорным блокам, применяются к конкретным пространственным областям и включают несколько параметров для настройки того, как такие фильтры применяются. Компонент 227 анализа управления фильтрами анализирует восстановленные опорные блоки, чтобы определить, где такие фильтры должны быть применены, и устанавливает соответствующие параметры. Такие данные пересылаются в компонент 231 форматирования заголовка и CABAC в качестве данных управления фильтром для кодирования. Компонент 225 внутриконтурных фильтров применяет такие фильтры на основе данных управления фильтром. Фильтры могут включать в себя фильтр удаления блочности, фильтр подавления шума, фильтр SAO и адаптивный контурный фильтр. Такие фильтры могут применяться в пространственной/пиксельной области (например, в восстановленном блоке пикселей) или в частотной области, в зависимости от примера.
[0071] При работе в качестве кодера отфильтрованный блок восстановленного изображения, остаточный блок и/или блок предсказания сохраняются в компоненте 223 буфера декодированных снимков для последующего использования при оценке движения, как описано выше. При работе в качестве декодера компонент 223 буфера декодированных снимков сохраняет и пересылает восстановленные и отфильтрованные блоки на дисплей как часть выходного видеосигнала. Компонент 223 буфера декодированных снимков может быть любым устройством памяти, способным хранить блоки предсказания, остаточные блоки и/или восстановленные блоки изображения.
[0072] Компонент 231 форматирования заголовка и CABAC принимает данные от различных компонентов системы 200 кодека и кодирует такие данные в кодированный битовый поток для передачи в декодер. В частности, компонент 231 форматирования заголовка и CABAC генерирует различные заголовки для кодирования данных управления, таких как общие данные управления и данные управления фильтром. Кроме того, данные предсказания, включая данные интра-предсказания и движения, а также остаточные данные в форме квантованных данных коэффициентов преобразования, все кодируются в битовом потоке. Конечный битовый поток включает в себя всю информацию, требуемую декодером для восстановления исходного разделенного видеосигнала 201. Такая информация может также включать в себя таблицы индексов режима интра-предсказания (также называемые таблицами отображения кодовых слов), определения контекстов кодирования для различных блоков, указания наиболее вероятных режимов интра-предсказания, указание информации о разделах и т.д. Такие данные могут быть закодированы с использованием энтропийного кодирования. Например, информация может быть закодирована с использованием контекстно-адаптивного кодирования с переменной длиной (CAVLC), CABAC, основанного на синтаксисе контекстно-адаптивного двоичного арифметического кодирования (SBAC), энтропийного кодирования с вероятностным интервалом разделения (PIPE) или другого метода энтропийного кодирования. После энтропийного кодирования закодированный битовый поток может быть передан на другое устройство (например, видеодекодер) или заархивирован для последующей передачи или поиска.
[0073] Фиг.3 представляет собой блок-схему, иллюстрирующую примерный видеокодер 300. Видеокодер 300 может использоваться для реализации функций кодирования системы 200 кодека и/или реализации этапов 101, 103, 105, 107 и/или 109 рабочего способа 100. Кодер 300 разделяет входной видеосигнал, в результате чего получается разделенный видеосигнал 301, который по существу аналогичен разделенному видеосигналу 201. Разделенный видеосигнал 301 затем сжимается и кодируется в битовый поток компонентами кодера 300.
[0074] В частности, разделенный видеосигнал 301 пересылается в компонент 317 интра-предсказания для интра-предсказания. Компонент 317 интра-предсказания может быть по существу аналогичным компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. Разделенный видеосигнал 301 также пересылается в компонент 321 компенсации движения для интер-предсказания на основе опорных блоков в компоненте 323 буфера декодированных снимков. Компонент 321 компенсации движения может быть по существу аналогичным компоненту 221 оценки движения и компоненту 219 компенсации движения. Блоки предсказания и остаточные блоки из компонента 317 интра-предсказания и компонента 321 компенсации движения направляются в компонент 313 преобразования и квантования для преобразования и квантования остаточных блоков. Компонент 313 преобразования и квантования может быть по существу аналогичен компоненту 213 масштабирования и квантования преобразования. Преобразованные и квантованные остаточные блоки и соответствующие блоки предсказания (вместе со связанными данными управления) направляются в компонент 331 энтропийного кодирования для кодирования в битовый поток. Компонент 331 энтропийного кодирования может быть по существу аналогичен компоненту 231 форматирования заголовка и CABAC.
[0075] Преобразованные и квантованные остаточные блоки и/или соответствующие блоки предсказания также направляются из компонента 313 преобразования и квантования в компонент 329 обратного преобразования и квантования для восстановления в опорные блоки для использования компонентом 321 компенсации движения. Компонент 329 обратного преобразования и квантования может быть по существу аналогичен компоненту 229 масштабирования и обратного преобразования. Контурные фильтры в компоненте 325 внутриконтурных фильтров также применяются к остаточным блокам и/или восстановленным опорным блокам, в зависимости от примера. Компонент 325 внутриконтурных фильтров может быть по существу аналогичен компоненту 227 анализа управления фильтрами и компоненту 225 внутриконтурных фильтров. Компонент 325 внутриконтурных фильтров может включать в себя несколько фильтров, как обсуждалось в отношении компонента 225 внутриконтурных фильтров. Отфильтрованные блоки затем сохраняются в компоненте 323 буфера декодированных снимков для использования в качестве опорных блоков компонентом 321 компенсации движения. Компонент 323 буфера декодированных снимков может быть по существу аналогичен компоненту 223 буфера декодированных снимков.
[0076] Фиг.4 - это блок-схема, иллюстрирующая примерный видеодекодер 400. Видеодекодер 400 может использоваться для реализации функций декодирования системы 200 кодека и/или реализации этапов 111, 113, 115 и/или 117 рабочего способа 100. способа 400. Декодер 400 принимает битовый поток, например, от кодера 300, и формирует восстановленный выходной видеосигнал на основе битового потока для отображения конечному пользователю.
[0077] Битовый поток принимается компонентом 433 энтропийного декодирования. Компонент 433 энтропийного декодирования выполнен с возможностью реализации схемы энтропийного декодирования, такой как CAVLC, CABAC, SBAC, PIPE-кодирование или другие методики энтропийного кодирования. Например, компонент 433 энтропийного декодирования может использовать информацию заголовка, чтобы предоставить контекст для интерпретации дополнительных данных, закодированных как кодовые слова в битовом потоке. Декодированная информация включает в себя любую желаемую информацию для декодирования видеосигнала, такую как общие данные управления, данные управления фильтром, информацию о разделах, данные движения, данные предсказания и квантованные коэффициенты преобразования из остаточных блоков. Квантованные коэффициенты преобразования направляются в компонент 429 обратного преобразования и квантования для восстановления в остаточные блоки. Компонент 429 обратного преобразования и квантования может быть аналогичен компоненту 329 обратного преобразования и квантования.
[0078] Восстановленные остаточные блоки и/или блоки предсказания пересылаются в компонент 417 интра-предсказания для восстановления в блоки изображения на основе операций интра-предсказания. Компонент 417 интра-предсказания может быть аналогичен компоненту 215 оценки интра-режима и компоненту 217 интра-предсказания. В частности, компонент 417 интра-предсказания использует режимы предсказания, чтобы найти опорный блок в кадре, и применяет остаточный блок к результату для восстановления блоков изображения с интра-предсказанием. Восстановленные блоки изображения с интра-предсказанием и/или остаточные блоки и соответствующие данные интер-предсказания пересылаются в компонент 423 буфера декодированных снимков через компонент 425 внутриконтурных фильтров, который может быть по существу аналогичен компоненту 223 буфера декодированных снимков и компонент 225 внутриконтурных фильтров соответственно. Компонент 425 внутриконтурных фильтров фильтрует блоки восстановленных изображений, остаточные блоки и/или блоки предсказания, и такая информация сохраняется в компоненте 423 буфера декодированных снимков. Восстановленные блоки изображения из компонента 423 буфера декодированных снимков пересылаются в компонент 421 компенсации движения для интер-предсказания. Компонент 421 компенсации движения может быть по существу аналогичен компоненту 221 оценки движения и/или компоненту 219 компенсации движения. В частности, компонент 421 компенсации движения использует векторы движения из опорного блока для генерации блока предсказания и применяет остаточный блок к результату для восстановления блока изображения. Результирующие восстановленные блоки также могут быть отправлены через компонент 425 внутриконтурных фильтров в компонент 423 буфера декодированных снимков. Компонент 423 буфера декодированных снимков продолжает хранить дополнительные восстановленные блоки изображения, которые могут быть преобразованы в кадры через информацию о разбиении. Такие кадры также можно размещать последовательно. Последовательность выводится на дисплей как восстановленный выходной видеосигнал.
[0079] Фиг.5 является принципиальной схемой, иллюстрирующей множество видеопотоков 501, 502 и 503 подснимков, извлеченных из видеопотока 500 снимков. Например, каждый из видеопотоков 501-503 подснимков и/или видеопотока 500 снимков может быть закодирован кодером, например системой 200 кодека и/или кодером 300, согласно способу 100. Кроме того, видеопотоки 501-503 подснимков и/или видеопоток 500 снимков могут быть декодированы декодером, например системой 200 кодека и/или декодером 400.
[0080] Видеопоток 500 снимков включает в себя множество снимков, представленных во времени. Видеопоток 500 снимков, как показано на Фиг.5, сконфигурирован для использования в приложении виртуальной реальности (VR). VR работает путем кодирования сферы видеоконтента, который может отображаться так, как если бы пользователь находился в центре сферы. Каждый снимок включает в себя всю сферу. Между тем, пользователю отображается только часть снимка, известная как область просмотра. Например, пользователь может использовать головной дисплей (HMD), который выбирает и отображает область просмотра сферы на основе движения головы пользователя. Это создает впечатление физического присутствия в виртуальном пространстве, как показано на видео. Для достижения этого результата каждый снимок видеопоследовательности включает в себя всю сферу видеоданных в соответствующий момент времени. Однако пользователю отображается только небольшая часть (например, одно окно просмотра) снимка. Остальная часть снимка отбрасывается в декодере без визуализации. Весь снимок может быть передан так, чтобы можно было динамически выбирать и отображать другое окно просмотра в ответ на движение головы пользователя.
[0081] В показанном примере каждый снимок видеопотока 500 снимков может быть подразделен на подснимки на основе доступных окон просмотра. Соответственно, каждый снимок и соответствующий подснимок включает в себя временную позицию (например, порядок снимков) как часть временного представления. Видеопотоки 501-503 подснимков создаются, когда подразделение применяется последовательно во времени. Такое согласованное подразделение создает видеопотоки 501-503 подснимков, где каждый поток содержит набор подснимков предварительно определенного размера, формы и пространственного положения относительно соответствующих снимков в видеопотоке 500 снимков. Кроме того, набор подснимков в видеопотоке 501-503 подснимков изменяется во временной позиции в течение времени представления. По существу, подснимки видеопотоков 501-503 подснимков могут быть выровнены во временной области на основе временной позиции. Затем подснимки из видеопотоков 501-503 подснимков в каждой временной позиции могут быть объединены в пространственной области на основе предварительно определенной пространственной позиции, чтобы восстановить видеопоток 500 снимков для отображения. В частности, каждый из видеопотоков 501-503 подснимков может быть закодирован в отдельные битовые подпотоки. Когда такие битовые подпотоки объединяются вместе, они приводят к битовому потоку, который включает в себя весь набор изображений с течением времени. Результирующий битовый поток может быть передан в декодер для декодирования и отображения на основе текущего выбранного пользователем окна просмотра.
[0082] Одна из проблем с видео VR заключается в том, что все видеопотоки 501-503 подснимков могут быть переданы пользователю с высоким качеством (например, с высоким разрешением). Это позволяет декодеру динамически выбирать текущее окно просмотра пользователя и отображать подснимок(и) из соответствующих видеопотоков 501-503 подснимков в реальном времени. Однако пользователь может просматривать только одно окно просмотра, например, из видеопотока 501 подснимков, в то время как видеопотоки 502-503 подснимков отбрасываются. Как таковая передача видеопотоков 502-503 подснимков с высоким качеством может использовать значительную часть полосы пропускания, не обеспечивая соответствующего преимущества для пользователя. Чтобы повысить эффективность кодирования, видео VR может быть закодировано во множество видеопотоков 500, где каждый видеопоток 500 кодируется с разным качеством/разрешением. Таким образом, декодер может передать запрос текущего видеопотока 501 подснимков. В ответ кодер (или промежуточное средство видиомонтажа, или другой сервер контента) может выбрать видеопоток 501 подснимков более высокого качества из видеопотока 500 более высокого качества и видеопотоки 502-503 подснимков более низкого качества из видеопотока 500 более низкого качества. Затем кодер может объединить такие битовые подпотоки вместе в полный кодированный битовый поток для передачи в декодер. Таким образом, декодер получает серию снимков, где текущее окно просмотра имеет более высокое качество, а другие окна просмотра - более низкого качества. Кроме того, подснимки наивысшего качества обычно отображаются пользователю (при отсутствии движения головы), а подснимки более низкого качества обычно отбрасываются, что уравновешивает функциональность с эффективностью кодирования.
[0083] В случае, если пользователь переключается с просмотра видеопотока 501 подснимков на видеопоток 502 подснимков, декодер запрашивает передачу нового текущего видеопотока 502 подснимков с более высоким качеством. Затем кодер может соответствующим образом изменить механизм объединения.
[0084] Видеопоток 500 снимков включен для описания практического применения подснимков. Следует отметить, что подснимки имеют множество применений, и настоящее раскрытие не ограничивается технологией VR. Например, подснимки также могут использоваться в системах телеконференцсвязи. В таком случае видеопоток каждого пользователя включается в битовый поток подснимков, такой как видеопоток 501, 502 и/или 503 подснимков. Система может принимать такой видеопоток 501, 502 и/или 503 подснимков и объединять их в различных позициях, разрешениях и т.д. Для создания видеопотока 500 полного снимка для передачи обратно пользователю. Это позволяет системе телеконференцсвязи динамически изменять видеопоток 500 снимков на основе изменения ввода пользователя, например, путем увеличения или уменьшения размера видеопотока 501, 502 и/или 503 подснимков, чтобы выделить пользователей, которые в данный момент разговаривают или убрать акцент с пользователей, которые больше не разговаривают. Соответственно, подснимки имеют множество применений, которые позволяют динамически изменять видеопоток 500 снимков во время выполнения на основе изменений в поведении пользователя. Эта функциональность может быть достигнута путем извлечения и/или объединения видеопотока 501, 502 и/или 503 подснимков из и/или в видеопоток 500 снимков.
[0085] Фиг.6 является принципиальной схемой, иллюстрирующей примерный битовый поток 600, разделенный на битовый подпоток 601. Битовый поток 600 может содержать видеопоток снимков, такой как видеопоток 500 снимков, а битовый подпоток 601 может содержать видеопоток подснимков, такой как видеопоток 501, 502 и/или 503 подснимков. Например, битовый поток 600 и битовый подпоток 601 могут быть сгенерированы системой 200 кодека и/или кодером 300 для декодирования системой 200 кодека и/или декодером 400. В качестве другого примера битовый поток 600 и битовый подпоток 601 могут быть сгенерированы кодером на этапе 109 способа 100 для использования декодером на этапе 111.
[0086] Битовый поток 600 включает в себя набор параметров последовательности (SPS) 610, множество наборов параметров снимка (PPS) 611, множество заголовков 615 сегментов и данные 620 изображения. SPS 610 содержит данные последовательности, общие для всех снимков в видеопоследовательности, содержащейся в битовом потоке 600. Такие данные могут включать в себя размер снимка, битовую глубину, параметры инструмента кодирования, ограничения битовой скорости и т.д. PPS 611 содержит параметры, которые применяются ко всему снимку. Следовательно, каждый снимок в видеопоследовательности может относиться к PPS 611. Следует отметить, что, хотя каждый снимок относится к PPS 611, в некоторых примерах один PPS 611 может содержать данные для нескольких снимков. Например, несколько одинаковых снимков могут быть закодированы согласно аналогичным параметрам. В таком случае один PPS 611 может содержать данные для таких похожих снимков. PPS 611 может указывать инструменты кодирования, доступные для сегментов в соответствующих снимках, параметры квантования, смещения и т.д. Заголовок 615 сегмента содержит параметры, которые специфичны для каждого сегмента в снимке. Следовательно, может быть один заголовок 615 сегмента на каждый сегмент в видеопоследовательности. Заголовок 615 сегмента может содержать информацию о типе сегмента, порядковые номера снимков (POC), списки опорных снимков, веса предсказания, точки входа в клетку, параметры удаления блочности и т.д. Следует отметить, что заголовок 615 сегмента также может называться заголовком группы клеток в некоторых контекстах. Следует отметить, что в некоторых примерах битовый поток 600 может также включать в себя заголовок снимка, который представляет собой синтаксическую структуру, содержащую параметры, которые применяются ко всем сегментам в одном снимке. По этой причине заголовок снимка и заголовок 615 сегмента могут использоваться взаимозаменяемо в некоторых контекстах. Например, некоторые параметры могут перемещаться между заголовком 615 сегмента и заголовком снимка в зависимости от того, являются ли такие параметры общими для всех сегментов в снимке.
[0087] Данные 620 изображения содержат видеоданные, закодированные согласно интер-предсказанию, интра-предсказанию и/или межуровневому предсказанию, а также соответствующие преобразованные и квантованные остаточные данные. Например, видеопоследовательность включает в себя множество снимков 621. Снимок 621 - это массив дискретных отсчетов яркости и/или массив дискретных отсчетов цветности, которые создают кадр или его поле. Кадр - это полное изображение, которое предназначено для полного или частичного отображения пользователю в соответствующий момент в видеопоследовательности. Снимок 621 содержит один или более сегментов. Сегмент может быть определен как целое число полных клеток или целое число последовательных полных строк CTU (например, внутри клетки) снимка 621, которые содержатся исключительно в одном единичном блоке NAL. Сегменты далее делятся на CTU и/или CTB. CTU - это группа дискретных отсчетов заранее определенного размера, которые могут быть разделены деревом кодирования. CTB является поднабором CTU и содержит компоненты яркости или компоненты цветности CTU. CTU/CTB дополнительно делятся на блоки кодирования на основе деревьев кодирования. Затем блоки кодирования можно кодировать/декодировать согласно механизмам предсказания.
[0088] Снимок 621 может быть разделен на множество подснимков 623 и 624. Подснимок 623 и/или 624 представляет собой прямоугольную область из одного или более сегментов в снимке 621. Следовательно, каждый из сегментов и их подразделов может быть назначен подснимку 623 и/или 624. Это позволяет обрабатывать различные области снимка 621 по-разному с точки зрения кодирования в зависимости от того, какой подснимок 623 и/или 624 включен в такие области.
[0089] Битовый подпоток 601 может быть извлечен из битового потока 600 в соответствии с процессом 605 извлечения битового подпотока. Процесс 605 извлечения битового подпотока - это заданный механизм, который удаляет единичные блоки NAL из битового потока, которые не являются частью целевого набора, что приводит к выходному битовому подпотоку, который включает в себя единичные блоки NAL, которые включены в целевой набор. Единичный блок NAL содержит сегмент. По существу, процесс 605 извлечения битового подпотока сохраняет целевой набор сегментов и удаляет другие сегменты. Целевой набор может быть выбран на основе границ подснимка. В показанном примере сегменты, которые содержатся в подснимке 623, включены в целевой набор, а сегменты, которые включены в подснимок 624, не включены в целевой набор. По существу, процесс 605 извлечения битового подпотока создает битовый подпоток 601, который по существу аналогичен битовому потоку 600, но содержит подснимок 623, исключая подснимок 624. Процесс 605 извлечения битового подпотока может выполняться кодером и/или связанным средством видеомонтажа, выполненным с возможностью динамического изменения битового потока 600 на основе поведения/запросов пользователя.
[0090] Соответственно, битовый подпоток 601 является извлеченным битовым потоком, который является результатом процесса 605 извлечения битового подпотока, примененного к входному битовому потоку 600. Входной битовый поток 600 содержит набор подснимков. Однако извлеченный битовый поток (например, подпоток 601) содержит только поднабор подснимков входного битового потока 600 для процесса 605 извлечения битового подпотока. В показанном примере набор подснимков, содержащихся во входном битовом потоке 600, включает в себя подснимки 623 и 624, в то время как поднабор подснимков в битовом подпотоке 601 включает в себя подснимок 623, но не подснимок 624. Следует отметить, что может использоваться любое количество подснимков 623-624. Например, битовый поток 600 может включать в себя N подснимков 623-624, а битовый подпоток 601 может содержать N-1 или меньше подснимков 623, где N - любое целочисленное значение.
[0091] Процесс 605 извлечения битового подпотока может в некоторых случаях создавать ошибки кодирования. Например, подснимки 623-624 могут быть связаны с информацией о подснимках, такой как идентификаторы подснимков. Идентификатор подснимка однозначно идентифицирует соответствующий подснимок, такой как подснимок 623 или 624. Соответственно, идентификаторы подснимков могут использоваться для указания местоположения подснимков 623-624 относительно снимка 621 и/или для внесения изменений в процесс кодирования на уровне подснимков. В некоторых случаях информация о подснимках может быть логически выведена на основании позиции подснимков 623-624. Соответственно, битовый поток 600 может опускать такую информацию о подснимках, относящуюся к подснимкам 623 и 624, чтобы уменьшить количество данных в битовом потоке 600, чтобы повысить эффективность кодирования. Однако декодер может быть неспособен вывести такую информацию о подснимках, когда подснимка 623 или подснимка 624 нет. По существу, упрощенный процесс 605 извлечения битового подпотока может применяться к соответствующему битовому потоку 600 и создавать несоответствующий битовый подпоток 601. Битовый поток 600/битовый подпоток 601 соответствует, когда битовый поток 600/битовый подпоток 601 соответствует стандарту, например VVC, и, следовательно, может быть правильно декодирован любым декодером, который также соответствует стандарту. По существу, упрощенный процесс 605 извлечения битового подпотока может преобразовывать декодируемый битовый поток 600 в битовый подпоток 601, который не декодируется.
[0092] Чтобы решить эту проблему, настоящее раскрытие включает в себя улучшенный процесс 605 извлечения битового подпотока. В частности, процесс 605 извлечения битового подпотока кодирует идентификаторы подснимков для подснимка(ов) 623 в битовом подпотоке 601, даже когда такие идентификаторы подснимков опущены из битового потока 600. Например, идентификаторы подснимков могут быть включены в синтаксическую структуру 635 идентификатора подснимка SPS (sps_subpic_id [i]). Синтаксическая структура 635 sps_subpic_id [i] включена в SPS 610 и включает в себя i идентификаторов (ID) подснимков, где i - количество подснимков 623, содержащихся в битовом подпотоке 601. Кроме того, процесс 605 извлечения битового подпотока может также кодировать длину в битах синтаксического элемента (например, синтаксическая структура 635 sps_subpic_id [i]), содержащего один или более идентификаторов подснимков, в извлеченный битовый поток. Например, длина может быть включена в синтаксическую структуру 633 длины идентификаторов подснимков SPS минус один (sps_subpic_id_len_minus1). Синтаксическая структура 633 sps_subpic_id_len_minus1 может содержать длину в битах синтаксической структуры 635 sps_subpic_id [i] минус один. Подход «минус один» кодирует значение на единицу меньше фактического значения, чтобы сэкономить биты. Декодер может получить фактическое значение, добавив единицу. По существу, синтаксическая структура 633 sps_subpic_id_len_minus1 может также называться sps_subpic_id_len_minus1 plus 1. Соответственно, декодер может использовать синтаксическую структуру 633 sps_subpic_id_len_minus1 для определения количества битов, которые связаны с синтаксической структурой 635 sps_subpic_id [i], и, следовательно, может использовать синтаксическую структуру 633 sps_subpic_id_len_minus1 для интерпретации синтаксической структуры sps_subpic_id [i]. Затем декодер может декодировать подснимок 623 на основе синтаксической структуры 633 sps_subpic_id_len_minus1 и синтаксической структуры 635 sps_subpic_id [i].
[0093] Кроме того, процесс 605 извлечения битового подпотока может кодировать/устанавливать флаг в битовом подпотоке 601, чтобы указать, что информация о подснимках, относящаяся к подснимку 623, присутствует в битовом подпотоке 601. В качестве конкретного примера флаг может быть закодирован как флаг 631 присутствия информации о подснимках (subpic_info_present_flag). По существу, subpic_info_present_flag 631 может быть установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, такая как синтаксическая структура 633 sps_subpic_id_len_minus1 и синтаксическая структура 635 sps_subpic_id [i], присутствует в извлеченном битовом потоке (битовом подпотоке 601). Кроме того, декодер может считывать subpic_info_present_flag 631, чтобы определить, что информация о подснимках, относящаяся к поднабору подснимков, такая как синтаксическая структура 633 sps_subpic_id_len_minus1 и синтаксическая структура 635 sps_subpic_id [i], присутствует в извлеченном битовом потоке (битовом подпотоке 601). В качестве конкретного примера кодер/средство видеомонтажа может потребовать, чтобы флаг был установлен в единицу, чтобы указать, что информация подснимка присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок 621 из CLVS содержит более одного подснимка 623 и 624, когда извлеченный битовый поток (битовый подпоток 601) является результатом процесса 605 извлечения битового подпотока из входного битового потока 600. CLVS - это последовательность кодированных видеоданных, содержащих один или более слоев снимков. Слой - это набор единичных блоков NAL, каждый из которых имеет конкретное значение идентификатора слоя. Снимки 621 могут быть или могут не быть организованы во множество слоев, где все снимки 621 соответствующего слоя имеют схожие характеристики, такие как размер, разрешение, отношение сигнал/шум (SNR) и т.д.
[0094] Предшествующая информация теперь описывается более подробно ниже. HEVC может использовать обычные сегменты, зависимые сегменты, клетки и параллельную обработку волнового фронта (WPP) в качестве схем разбиения. Эти схемы разбиения могут применяться для согласования размера максимального единичного блока передачи (MTU), параллельной обработки и уменьшения сквозной задержки. Каждый обычный сегмент может быть инкапсулирован в отдельный единичный блок NAL. Зависимость энтропийного кодирования и предсказание в снимке, включающее в себя предсказание внутри дискретных отсчетов, предсказание информации о движении и предсказание режима кодирования, могут быть отключены через границы сегментов. Таким образом, обычный сегмент можно восстановить независимо от других регулярных сегментов в том же снимке. Однако сегменты могут по-прежнему иметь некоторые взаимозависимости из-за операций контурной фильтрации.
[0095] Обычное распараллеливание на основе сегментов может не потребовать значительного межпроцессорного или межъядерного взаимодействия. Одно исключение состоит в том, что совместное использование данных между процессорами и/или ядрами может иметь значение для компенсации движения при декодировании изображения, кодированного с предсказанием. Такой процесс может вовлекать больше ресурсов обработки, чем совместное использование данных между процессорами или ядрами из-за предсказания в снимке. Однако по той же причине использование регулярных сегментов может привести к значительным издержкам на кодирование из-за битовых затрат на заголовок сегмента и из-за отсутствия предсказания через границы сегмента. Кроме того, регулярные сегменты также служат механизмом для разбиения битового потока в соответствии с требованиями к размеру MTU из-за независимости регулярных сегментов в снимке и из-за того, что каждый регулярный сегмент инкапсулируется в отдельный единичный блок NAL. Во многих случаях цель распараллеливания и цель согласования размера MTU ставят противоречащие друг другу требования к размещению сегментов в снимке.
[0096] Зависимые сегменты имеют короткие заголовки сегментов и позволяют разделить битовый поток по границам древовидных блоков без нарушения предсказания в снимке. Зависимые сегменты обеспечивают фрагментацию обычных сегментов на несколько единичных блоков NAL. Это обеспечивает уменьшенную сквозную задержку, позволяя передать часть обычного сегмента до завершения кодирования всего обычного сегмента.
[0097] В WPP снимок разбивается на отдельные строки CTB. Энтропийное декодирование и предсказание могут использовать данные из CTB в других разбиениях. Возможна параллельная обработка за счет параллельного декодирования строк CTB. Начало декодирования строки CTB может быть отложено на один или два CTB, в зависимости от примера, чтобы гарантировать, что данные, относящиеся к CTB выше и справа от рассматриваемого CTB, доступны до декодирования рассматриваемого CTB. Это ступенчатое начало создает видимость волнового фронта. Этот процесс поддерживает распараллеливание с таким количеством процессоров/ядер, сколько на снимке содержится строк CTB. Поскольку предсказание в снимке между соседними строками древовидного блока в снимке разрешено, межпроцессорная/межъядерная связь для обеспечения предсказания в снимке может быть существенной. Разбиение WPP не приводит к созданию дополнительных единичных блоков NAL. Таким образом, WPP нельзя использовать для согласования размера MTU. Однако, если требуется согласование размера MTU, с WPP можно использовать обычные сегменты с определенными издержками на кодирование.
[0098] Клетки определяют горизонтальные и вертикальные границы, которые разделяют снимок на столбцы и строки клеток. Порядок сканирования CTB может быть локальным внутри клетки в порядке растрового сканирования CTB клетки. Соответственно, клетка может быть полностью декодирована перед декодированием верхнего левого CTB следующей клетки в порядке растрового сканирования клеток снимка. Подобно обычным сегментам, клетки разрушают зависимости предсказания в снимке, а также зависимости энтропийного декодирования. Однако клетки не могут быть включены в отдельные единичные блоки NAL. Следовательно, клетки нельзя использовать для согласования размера MTU. Каждая клетка может обрабатываться одним процессором/ядром. Межпроцессорная/межъядерная связь, используемая для предсказания в снимке между блоками обработки, декодирующими соседние клетки, может быть ограничена передачей совместно используемого заголовка сегмента, когда сегмент включает в себя более одной клетки, и связанным с контурной фильтрацией совместным использованием восстановленных дискретных отсчетов и метаданных. Когда в сегмент включено более одной клетки или сегмента WPP, в заголовке сегмента может указываться смещение байта точки входа для каждой клетки или сегмента WPP, кроме первого в сегменте.
[0099] Для простоты HEVC использует конкретные ограничения на применение четырех различных схем разбиения снимка. Кодированная видеопоследовательность может не включать в себя как клетки, так и волновые фронты для большинства профилей, указанных в HEVC. Кроме того, для каждого сегмента и/или клетки должны выполняться одно или оба из следующих условий. Все закодированные древовидные блоки в сегменте включаются в одну и ту же клетку. Кроме того, все кодированные древовидные блоки в клетке включаются в один и тот же сегмент. Кроме того, сегмент волнового фронта содержит ровно одну строку CTB. Когда используется WPP, сегмент, начинающийся в строке CTB, должен заканчиваться в той же строке CTB.
[00100] В VVC клетки определяют горизонтальные и вертикальные границы, которые разделяют снимок на столбцы и строки клеток. VVC позволяет дополнительно разделить клетку по горизонтали на фрагменты (кирпичики). Клетка, которая не подвергается дальнейшему разделению, также может считаться фрагментом. Порядок сканирования CTB изменяется на локальный внутри фрагмента (например, в порядке растрового сканирования CTB фрагмента). Текущий фрагмент полностью декодируется перед декодированием верхнего левого CTB следующего фрагмента в порядке растрового сканирования фрагментов снимка.
[00101] Сегменты в VVC могут включать в себя один или более фрагментов. Каждый сегмент инкапсулируется в отдельный единичный блок NAL. Зависимость энтропийного кодирования и предсказание в снимке, включая интра-предсказание, предсказание информации о движении и предсказание режима кодирования, могут быть отключены через границы сегментов. Таким образом, обычный сегмент можно восстановить независимо от других обычных сегментов в том же снимке. VVC включает в себя прямоугольные сегменты и сегменты растрового сканирования. Прямоугольный сегмент может содержать один или более фрагментов, занимающих прямоугольную область в снимке. Сегмент растрового сканирования может содержать один или более фрагментов, которые находятся в порядке растрового сканирования фрагментов в снимке.
[00102] WPP на основе VVC похоже на HEVC WPP за исключением того, что HEVC WPP имеет задержку в два CTU, а VVC WPP имеет задержку в один CTU. Для HEVC WPP новый поток декодирования может начать декодирование первого CTU в назначенной строке CTU после того, как первые два CTU в предыдущей строке CTU уже были декодированы. Для VVC WPP новый поток декодирования может начать декодирование первого CTU в назначенной строке CTU после того, как был декодирован первый CTU в предыдущей строке CTU.
[00103] Ниже приведен пример сигнализации клеток (tile), фрагментов (brick) и сегментов (slice) в PPS.
{
[00104] Предыдущие системы имеют определенные проблемы. Например, когда битовый поток сначала кодируется, сегменты в снимках в битовом потоке могут быть разделены на прямоугольные сегменты. В этом случае идентификаторы сегментов могут быть исключены из PPS. В этом случае значение signalled_slice_id_flag может быть установлено равным нулю в PPS битового потока. Однако, когда один или более прямоугольных сегментов из битового потока извлекаются для формирования другого битового потока, идентификаторы сегментов должны присутствовать в PPS в битовом потоке, сгенерированном в результате такого процесса извлечения.
[00105] В общем, это раскрытие описывает передачу сигнализированных идентификаторов сегментов для помощи процессу извлечения битового подпотока. Описание методик основано на VVC, но может также применяться к другим спецификациям видеокодеков.
[00106] Ниже приводится пример механизма решения перечисленных выше проблем. Раскрывается способ извлечения одного или более сегментов из снимков битового потока, обозначенного как битовый поток A, и создания нового битового потока B из процесса извлечения. Битовый поток A содержит по меньшей мере один снимок. Снимок содержит множества сегментов. Способ включает в себя анализ (парсинг) набора параметров из битового потока A и перезапись параметра в битовый поток B. Значение signalled_slice_id_flag установлено в единицу в перезаписанном наборе параметров. Когда синтаксический элемент signalled_slice_id_length_minus1 присутствует в наборе параметров битового потока A, значение signalled_slice_id_flag копируется в перезаписанный набор параметров. Когда синтаксический элемент signalled_slice_id_length_minus1 отсутствует в наборе параметров битового потока A, значение signalled_slice_id_flag устанавливается в перезаписанном наборе параметров. Например, для signalled_slice_id_flag может быть установлено значение Ceil(Log2(num_slices_in_pic_minus1+1))-1, где num_slices_in_pic_minus1 равно количеству сегментов в снимке битового потока A минус один. Один или более сегментов извлекаются из битового потока A. Затем генерируется извлеченный битовый поток B.
[00107] Пример семантики PPS следующий. Signalled_slice_id_flag, установленный в единицу, может указывать, что сигнализируется идентификатор сегмента для каждого сегмента. Signalled_slice_id_flag, установленный в ноль, может указывать, что идентификаторы сегментов не сигнализируются. Когда rect_slice_flag равен нулю, значение signalled_slice_id_flag может быть логически выведено равным нулю. Для битового потока, который является результатом извлечения битового подпотока, и результат содержит поднабор сегментов, изначально включенных в снимки, значение signalled_slice_id_flag должно быть установлено равным единице для PPS. Signalled_slice_id_length_minus1 плюс один может указывать количество битов, используемых для представления синтаксического элемента slice_id[i], если он присутствует, и синтаксического элемента slice_address в заголовках сегментов. Значение signalled_slice_id_length_minus1 может находиться в диапазоне от нуля до пятнадцати включительно. Если отсутствует, значение signalled_slice_id_length_minus1 может быть логически выведено как равное Ceil(Log2(num_slices_in_pic_minus1+1))-1. Для битового потока, который является результатом извлечения битового подпотока, и результат содержит поднабор сегментов, изначально включенных в снимки, значение signalled_slice_id_length_minus1 для PPS должно оставаться неизменным.
[00108] Фиг.7 является принципиальной схемой примерного устройства 700 видеокодирования. Устройство 700 видеокодирования подходит для реализации раскрытых примеров/вариантов осуществления, как описано в данном документе. Устройство 700 видеокодирования содержит входные порты 720, выходные порты 750 и/или блоки 710 приемопередатчиков (Tx/Rx), включающие в себя передатчики и/или приемники. Устройство 700 видеокодирования также включает в себя процессор 730, включающий в себя логический блок и/или центральный блок обработки (CPU) для обработки данных и память 732 для хранения данных. Устройство 700 видеокодирования может также содержать электрические, оптико-электрические (OE) компоненты, электрическо-оптические (EO) компоненты и/или компоненты беспроводной связи, подключенные к выходным портам 750 и/или входным портам 720 для обмена данными через электрические, оптические или беспроводные сети связи. Устройство 700 видеокодирования может также включать в себя устройства 760 ввода и/или вывода (I/O) для передачи данных пользователю и от пользователя. Устройства 760 ввода-вывода могут включать в себя устройства вывода, такие как дисплей для отображения видеоданных, громкоговорители для вывода аудиоданных и т.д. Устройства 760 ввода-вывода могут также включать в себя устройства ввода, такие как клавиатура, мышь, трекбол и т.д., и/или соответствующие интерфейсы для взаимодействия с такими устройствами вывода.
[00109] Процессор 730 реализуется аппаратным обеспечением и программным обеспечением. Процессор 730 может быть реализован как одна или более микросхем CPU, ядер (например, как многоядерный процессор), программируемых вентильных матриц (FPGA), специализированных интегральных схем (ASIC) и процессоров цифровых сигналов (DSP). Процессор 730 связан с входными портами 720, Tx/Rx 710, выходными портами 750 и памятью 732. Процессор 730 содержит модуль 714 кодирования. Модуль 714 кодирования реализует раскрытые варианты осуществления, описанные в данном документе, такие как способы 100, 800 и/или 900, которые могут использовать битовый поток 600 и/или битовый подпоток 601, включающий в себя видеопоток 500 снимков и/или видеопотоки подснимков 501-503. Модуль 714 кодирования также может реализовывать любой другой способ/механизм, описанный в данном документе. Кроме того, модуль 714 кодирования может реализовывать систему 200 кодека, кодер 300 и/или декодер 400. Например, модуль 714 кодирования может использоваться для извлечения битового подпотока из битового потока, включения информации о подснимках в битовый подпоток во время процесса извлечения и/или включения флага в битовый подпоток, чтобы указать, что информация о подснимках включается в битовый подпоток. Следовательно, модуль 714 кодирования предписывает устройству 700 видеокодирования предоставлять дополнительные функциональные возможности и/или эффективность кодирования при кодировании видеоданных. Таким образом, модуль 714 кодирования улучшает функциональные возможности устройства 700 видеокодирования, а также решает проблемы, которые присущи искусству видеокодирования. Кроме того, модуль 714 кодирования выполняет преобразование устройства 700 видеокодирования в другое состояние. В качестве альтернативы, модуль 714 кодирования может быть реализован как инструкции, хранящиеся в памяти 732 и выполняемые процессором 730 (например, как компьютерный программный продукт, хранящийся на долговременном носителе).
[00110] Память 732 содержит один или более типов памяти, таких как диски, ленточные накопители, твердотельные накопители, постоянное запоминающее устройство (ROM), запоминающее устройство произвольного доступа (RAM), флэш-память, троичное запоминающее устройство с адресацией по содержимому (TCAM), статическое запоминающее устройство произвольного доступа (SRAM) и т.д. Память 732 может использоваться как запоминающее устройство при переполнении данных, для хранения программ, когда такие программы выбраны для выполнения, и для хранения инструкций и данных, которые считываются во время выполнения программы.
[00111] Фиг.8 является блок-схемой примерного способа 800 кодирования видеопоследовательности в битовый поток, например битовый поток 600, и извлечения битового подпотока, такого как битовый подпоток 601, при уменьшении ошибок с идентификаторами. Способ 800 может использоваться кодером, например системой 200 кодека, кодером 300 и/или устройством 700 видеокодирования, при выполнении способа 100 для кодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.
[00112] Способ 800 может начинаться, когда кодер принимает видеопоследовательность, включающую в себя множество снимков, и решает кодировать эту видеопоследовательность в битовый поток, например, на основе ввода пользователя. На этапе 801 кодер кодирует входной битовый поток, такой как видеопоток 500 снимков и/или битовый поток 600, содержащий набор подснимков. Например, битовый поток может содержать видеоданные VR и/или видеоданные телеконференции. Набор подснимков может содержать множество подснимков. Кроме того, подснимки могут быть связаны с идентификаторами подснимков.
[00113] На этапе 803 кодер и/или связанное с ним средство видеомонтажа выполняет процесс извлечения битового подпотока в отношении входного битового потока, чтобы создать извлеченный битовый поток, такой как видеопотоки 501-503 подснимков и/или битовый подпоток 601. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток содержит CLVS подснимков снимков.
[00114] На этапе 805 кодер кодирует в извлеченный битовый поток один или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Например, такие идентификаторы подснимков могут быть исключены из входного битового потока. Соответственно, кодер может кодировать такие идентификаторы подснимков в извлеченный битовый поток для поддержки декодирования подснимков, содержащихся в извлеченном битовом потоке. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке.
[00115] На этапе 807 кодер кодирует длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток. Например, длина идентификаторов подснимков может быть исключена из входного битового потока. Соответственно, кодер может кодировать длину идентификаторов подснимков в извлеченный битовый поток, чтобы поддерживать декодирование подснимков, содержащихся в извлеченном битовом потоке. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в извлеченном битовом потоке.
[00116] На этапе 809 кодер может установить флаг в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать декодеру, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока. В некоторых примерах флаг, идентификаторы подснимков и длина кодируются в SPS в извлеченном битовом потоке.
[00117] На этапе 811 кодер сохраняет битовый поток для передачи в декодер. Затем в некоторых примерах битовый поток может быть передан в декодер. Например, битовый поток может быть передан в декодер по запросу декодера, например, на основании запроса пользователя.
[00118] Фиг.9 является блок-схемой примерного способа 900 декодирования видеопоследовательности из битового подпотока, такого как битовый подпоток 601, извлеченного из битового потока, такого как битовый поток 600. Способ 900 может использоваться декодером, например системой 200 кодека, декодером 400 и/или устройством 700 видеокодирования, при выполнении способа 100 для декодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков.
[00119] Способ 900 может начинаться, когда декодер начинает принимать битовый подпоток, извлеченный из битового потока, например, в результате способа 800. На этапе 901 декодер принимает извлеченный битовый поток. Извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. В частности, извлеченный битовый поток содержит только подснимки, включенные в набор подснимков во входном битовом потоке. Кроме того, извлеченный битовый поток исключает один или более подснимков из набора подснимков во входном битовом потоке. По существу, входной битовый поток может содержать CLVS снимков, а извлеченный битовый поток может содержать CLVS подснимков снимков. Принятый извлеченный битовый поток также может называться битовым подпотоком. Например, извлеченный битовый поток может содержать подснимок(и), включая видеоданные VR и/или видеоданные телеконференции.
[00120] На этапе 903 декодер определяет, что флаг из извлеченного битового потока установлен, чтобы указать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Флаг может указывать, что идентификаторы подснимков и/или длина идентификаторов (ID) подснимков присутствуют в извлеченном битовом потоке. Например, флаг может быть subpic_info_present_flag. В конкретном примере требуется, чтобы флаг был установлен в единицу, чтобы указать, что информация о подснимках присутствует для CLVS (например, содержится во входном битовом потоке и/или извлеченном битовом потоке) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.
[00121] На этапе 905 декодер получает длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков. Например, длина идентификаторов подснимков может быть исключена из входного битового потока, но включена в извлеченный битовый поток. Например, длина может содержаться/закодироваться в синтаксической структуре sps_subpic_id_len_minus1 plus 1 в принятом извлеченном битовом потоке.
[00122] На этапе 907 декодер получает один или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага и/или на основе длины. Например, декодер может использовать этот флаг для определения наличия идентификаторов (ID) подснимков. Затем декодер может использовать длину для определения границ данных идентификаторов подснимков в битовом потоке. Например, идентификаторы подснимков могут быть исключены из входного битового потока, но включены в извлеченный битовый поток. Например, идентификаторы подснимков могут содержаться/закодированы в синтаксической структуре sps_subpic_id [i] в извлеченном битовом потоке. В некоторых примерах флаг, идентификаторы подснимков и длина получаются из SPS в извлеченном битовом потоке.
[00123] На этапе 909 декодер может декодировать поднабор подснимков в извлеченном битовом потоке на основе идентификаторов подснимков, полученных на этапе 907. Затем декодер может переслать поднабор подснимков для отображения как часть декодированной видеопоследовательности на этапе 911.
[00124] Фиг.10 является принципиальной схемой примерной системы 1000 для кодирования видеопоследовательности изображений в битовом потоке, таком как битовый поток 600, и извлечения битового подпотока, такого как битовый подпоток 601, при уменьшении ошибок с идентификаторами. Соответственно, система 1000 может использоваться для кодирования видеопотока 500 снимков и/или видеопотоков 501-503 подснимков. Система 1000 может быть реализована с помощью кодера и декодера, такого как система 200 кодека, кодер 300, декодер 400 и/или устройство 700 видеокодирования. Кроме того, система 1000 может использоваться при реализации способов 100, 800 и/или 900.
[00125] Система 1000 включает в себя видеокодер 1002. Видеокодер 1002 содержит первый модуль 1001 кодирования для кодирования входного битового потока, содержащего набор подснимков. Видеокодер 1002 дополнительно содержит модуль 1004 извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока. Видеокодер 1002 дополнительно содержит второй модуль 1003 кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1005 установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеокодер 1002 дополнительно содержит модуль 1007 хранения для хранения битового потока для передачи в декодер. Видеокодер 1002 дополнительно содержит модуль 1009 передачи для передачи битового потока в видеодекодер 1010. Видеокодер 1002 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 800.
[00126] Система 1000 также включает в себя видеодекодер 1010. Видеодекодер 1010 содержит модуль 1011 приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. Видеодекодер 1010 дополнительно содержит модуль 1013 определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке. Видеодекодер 1010 дополнительно содержит модуль 1015 получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага. Видеодекодер 1010 дополнительно содержит модуль 1017 декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков. Видеодекодер 1010 дополнительно содержит модуль 1019 пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности. Видеодекодер 1010 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 900.
[00127] Первый компонент напрямую связан со вторым компонентом, когда нет промежуточных компонентов, за исключением линии, трассировки или другой среды между первым компонентом и вторым компонентом. Первый компонент косвенно связан со вторым компонентом, когда есть промежуточные компоненты, отличные от линии, следа или другой среды между первым компонентом и вторым компонентом. Термин «связанный» и его варианты включают как напрямую связанные, так и косвенно связанные. Использование термина «примерно» означает диапазон, включающий ± 10% от следующего числа, если не указано иное.
[00128] Также следует понимать, что этапы примерных способов, изложенных в данном документе, не обязательно должны выполняться в описанном порядке, и порядок этапов таких способов следует понимать как просто примерный. Аналогичным образом, в такие способы могут быть включены дополнительные этапы, а некоторые этапы могут быть опущены или объединены в способах, согласующихся с различными вариантами осуществления настоящего раскрытия.
[00129] Хотя в настоящем раскрытии представлено несколько вариантов осуществления, можно понять, что раскрытые системы и способы могут быть воплощены во многих других конкретных формах, не выходя за рамки сущности или объема настоящего раскрытия. Настоящие примеры следует рассматривать как иллюстративные, а не как ограничительные, и цель не ограничиваться приведенными здесь подробностями. Например, различные элементы или компоненты могут быть объединены или интегрированы в другую систему, или определенные функции могут быть опущены или не реализованы.
[00130] Кроме того, методики, системы, подсистемы и способы, описанные и проиллюстрированные в различных вариантах осуществления как дискретные или отдельные, могут быть объединены или интегрированы с другими системами, компонентами, технологиями или способами без отклонения от объема настоящего раскрытия. Другие примеры изменений, замен и преобразований могут быть установлены специалистом в данной области техники и могут быть выполнены без отклонения от сущности и объема, раскрытых в данном документе.
Изобретение относится к видеокодированию. Техническим результатом является повышение эффективности кодирования. Результат достигается тем, что механизм видеокодирования включает в себя прием извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков. Извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока. Флаг из извлеченного битового потока устанавливается, чтобы указать, что информация о подснимках, относящаяся к подмножеству подснимков, присутствует в извлеченном битовом потоке. Один или более идентификаторов (ID) подснимков для поднабора подснимков получают на основе флага. Поднабор подснимков декодируется на основе идентификаторов (ID) подснимков. 6 н. и 14 з.п. ф-лы, 10 ил.
1. Способ декодирования видеопоследовательности из битового потока, реализуемый в декодере, при этом способ содержит этапы, на которых:
принимают посредством приемника декодера извлеченный битовый поток, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, причем извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока;
определяют посредством процессора декодера то, что флаг из извлеченного битового потока установлен указывать, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке;
получают посредством процессора один или более идентификаторов (ID) подснимков для поднабора подснимков на основе этого флага; и
декодируют посредством процессора поднабор подснимков на основе идентификаторов (ID) подснимков.
2. Способ по п.1, дополнительно содержащий этап, на котором получают посредством процессора длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков.
3. Способ по п.1 или 2, в котором флаг, идентификаторы подснимков и длина получены из набора параметров последовательности (SPS) в извлеченном битовом потоке.
4. Способ по любому из пп.1-3, в котором флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).
5. Способ по любому из пп.1-4, в котором идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id[i]).
6. Способ по любому из пп.1-5, в котором длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1).
7. Способ по любому из пп.1-6, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.
8. Способ кодирования видеопоследовательности в битовый поток, реализуемый в кодере, при этом способ содержит этапы, на которых:
кодируют посредством процессора кодера входной битовый поток, содержащий набор подснимков;
выполняют посредством процессора процесс извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока;
кодируют в извлеченный битовый поток посредством процессора один или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке;
устанавливают посредством процессора флаг в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и
сохраняют посредством памяти, соединенной с процессором, битовый поток для передачи в декодер.
9. Способ по п.8, дополнительно содержащий этап, на котором кодируют посредством процессора длину в битах синтаксического элемента, содержащего один или более идентификаторов (ID) подснимков, в извлеченный битовый поток.
10. Способ по п.8 или 9, в котором флаг, идентификаторы подснимков и длина закодированы в набор параметров последовательности (SPS) в извлеченном битовом потоке.
11. Способ по любому из пп.8-10, в котором флаг является флагом присутствия информации о подснимках (subpic_info_present_flag).
12. Способ по любому из пп.8-11, в котором идентификаторы подснимков содержатся в синтаксической структуре идентификатора подснимка SPS (sps_subpic_id[i]).
13. Способ по любому из пп.8-12, в котором длина содержится в синтаксической структуре длины идентификаторов подснимков SPS минус один плюс один (sps_subpic_id_len_minus1 plus 1).
14. Способ по любому из пп.8-13, в котором требуется, чтобы флаг был установлен в единицу для указания того, что информация о подснимках присутствует для закодированной послойно видеопоследовательности (CLVS) и что каждый снимок из CLVS содержит более одного подснимка, когда извлеченный битовый поток является результатом процесса извлечения битового подпотока из входного битового потока.
15. Устройство видеокодирования, содержащее:
процессор, приемник, соединенный с процессором, память, соединенную с процессором, и передатчик, соединенный с процессором, при этом процессор, приемник, память и передатчик выполнены с возможностью осуществлять способ по любому из пп.1-14.
16. Долговременный машиночитаемый носитель, содержащий компьютерный программный продукт для использования устройством видеокодирования, причем компьютерный программный продукт содержит машиноисполняемые инструкции, хранящиеся на долговременном машиночитаемом носителе, которые при их исполнении процессором предписывают устройству видеокодирования выполнять способ по любому из пп.1-14.
17. Декодер, содержащий:
средство приема для приема извлеченного битового потока, который является результатом процесса извлечения битового подпотока из входного битового потока, содержащего набор подснимков, при этом извлеченный битовый поток содержит только поднабор подснимков входного битового потока до процесса извлечения битового подпотока;
средство определения для определения того, что флаг из извлеченного битового потока установлен для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке;
средство получения для получения одного или более идентификаторов (ID) подснимков для поднабора подснимков на основе флага;
средство декодирования для декодирования поднабора подснимков на основе идентификаторов (ID) подснимков; и
средство пересылки для пересылки поднабора подснимков для отображения в качестве части декодированной видеопоследовательности.
18. Декодер по п.17, при этом декодер дополнительно выполнен с возможностью осуществлять способ по любому из пп.1-7.
19. Кодер, содержащий:
первое средство кодирования для кодирования входного битового потока, содержащего набор подснимков;
средство извлечения битового подпотока для выполнения процесса извлечения битового подпотока в отношении входного битового потока для создания извлеченного битового потока, содержащего только поднабор подснимков входного битового потока;
второе средство кодирования для кодирования в извлеченный битовый поток одного или более идентификаторов (ID) подснимков для поднабора подснимков в извлеченном битовом потоке;
средство установки для установки флага в извлеченном битовом потоке для указания того, что информация о подснимках, относящаяся к поднабору подснимков, присутствует в извлеченном битовом потоке; и
средство хранения для хранения битового потока для передачи в декодер.
20. Кодер по п.19, при этом кодер дополнительно выполнен с возможностью осуществлять способ по любому из пп.8-14.
US 2016381393 A1, 2016.12.29 | |||
US 10284867 B2, 2019.05.07 | |||
US 2014003535 A1, 2014.01.02 | |||
US 2014098896 A1, 2014.04.10 | |||
US 9918091 B2, 2018.03.13 | |||
WO 2018221368 A1, 2018.12.06 | |||
WO 2015102959 A1, 2015.07.09 | |||
US 9414085 B2, 2016.08.09 | |||
УСТРОЙСТВО ДЛЯ КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, УСТРОЙСТВО ДЛЯ ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ, СПОСОБ КОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ И СПОСОБ ДЕКОДИРОВАНИЯ ДИНАМИЧЕСКИХ ИЗОБРАЖЕНИЙ | 2009 |
|
RU2400941C1 |
Способ и устройство для кодирования видеоинформации | 2013 |
|
RU2612577C2 |
Авторы
Даты
2024-05-16—Публикация
2020-06-15—Подача