СЛОИ ОДНОВРЕМЕННОЙ ПЕРЕДАЧИ ДЛЯ МНОГОРАКУРСНОГО ПРЕДСТАВЛЕНИЯ ПРИ КОДИРОВАНИИ ВИДЕО Российский патент 2024 года по МПК H04N19/46 H04N19/70 

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

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

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

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

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

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

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

Слои изображений могут использоваться для поддержки масштабируемости. Например, видео может быть закодировано в несколько слоев. Слой может быть закодирован без ссылки на другие слои. Такой слой называется слоем одновременной передачи. Соответственно, слой одновременной передачи может быть декодирован без ссылки на другие слои. В качестве другого примера, слой может быть закодирован с использованием межслойного предсказания. Это позволяет закодировать текущий слой с включением только различий между текущим слоем и опорным слоем. Слои могут быть организованы в OLS. OLS – это набор слоев, который включает в себя по меньшей мере один слой вывода и любые слои, поддерживающие декодирование слоя вывода. В качестве конкретного примера, первый OLS может содержать базовый слой, тогда как второй OLS может содержать базовый слой, а также слой расширения с улучшенными характеристиками. Например, первый OLS может быть передан в декодер для того, чтобы обеспечить декодирование видео с базовым разрешением, или второй OLS может быть передан для того, чтобы обеспечить декодирование видео с более высоким улучшенным разрешением. Соответственно, видео может масштабироваться на основе запросов пользователей. В некоторых случаях масштабируемость не используется, и каждый слой кодируется как слой одновременной передачи. Некоторые системы предполагают, что если все слои передаются одновременно, то каждый OLS должен включать в себя один слой (так как опорные слои не используются). Это предположение повышает эффективность кодирования, так как сигнализация может быть исключена из кодированного битового потока. Однако такое предположение не поддерживает многоракурсность. Многоракурсное представление также известно как стереоскопическое видео. При многоракурсном представлении две видеопоследовательности одной и той же сцены записываются пространственно-смещенными камерами. Две видеопоследовательности отображаются пользователю на разных объективах гарнитуры. Отображение различной пространственно-смещенной последовательности для каждого глаза может, таким образом, создать впечатление трехмерного (3D) видео и/или визуальной глубины. Соответственно, OLS, реализующий многоракурсное представление, включает в себя два слоя (например, по одному на каждый глаз). Однако, когда все слои передаются одновременно, видеодекодер может использовать предположение, чтобы сделать вывод относительно того, что каждый OLS содержит только один слой. Это может привести к ошибке, так как декодер может отображать только один слой многоракурсного представления или может быть не в состоянии продолжить отображение любого слоя. Следовательно, вывод относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно, может помешать правильному отображению приложений с несколькими представлениями в декодере.

Настоящий пример включает в себя механизм, позволяющий системе кодирования видео правильно декодировать многоракурсное видео, когда все слои в видео передаются одновременно и не используют межслойное предсказание. Флаг (vps_all_independent_layers_flag) всех независимых слоев VPS может быть включен в битовый поток в VPS и установлен на единицу тогда, когда ни один из слоев не использует межслойное предсказание (например, все они передаются одновременно). Когда этот флаг установлен на единицу, флаг each_layer_is_an_ols_flag сигнализируется в VPS. Флаг each_layer_is_an_ols_flag может быть установлен для указания того, содержит ли каждый OLS один слой, или содержит ли по меньшей мере один OLS более одного слоя (например, для поддержки многоракурсного представления). Соответственно, флаг vps_all_independent_layers_flag и флаг each_layer_is_an_ols_flag могут использоваться для поддержки многоракурсных приложений. Кроме того, код (ols_mode_idc) идентификации режима OLS может быть установлен равным двум в VPS тогда, когда это имеет место. Это приводит к тому, что количество OLS и слои, связанные с OLS, будут сигнализироваться явным образом. Затем декодер может использовать эту информацию для правильного декодирования OLS, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера. Кроме того, раскрытые механизмы позволяют уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

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

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

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

При необходимости в любом из предыдущих аспектов предусмотрена другая реализация аспекта, в которой VPS включает в себя количество наборов слоев вывода минус один (num_output_layer_sets_minus1), который задает общее количество OLS, заданное VPS тогда, когда ols_mode_idc равно двум.

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

Слои изображений могут использоваться для поддержки масштабируемости. Например, видео может быть закодировано в несколько слоев. Слой может быть закодирован без ссылки на другие слои. Такой слой называется слоем одновременной передачи. Соответственно, слой одновременной передачи может быть декодирован без ссылки на другие слои. В качестве другого примера, слой может быть закодирован с использованием межслойного предсказания. Это позволяет закодировать текущий слой с включением только различий между текущим слоем и опорным слоем. Слои могут быть организованы в OLS. OLS – это набор слоев, который включает в себя по меньшей мере один слой вывода и любые слои, поддерживающие декодирование слоя вывода. В качестве конкретного примера, первый OLS может содержать базовый слой, тогда как второй OLS может содержать базовый слой, а также слой расширения с улучшенными характеристиками. Например, первый OLS может быть передан в декодер для того, чтобы обеспечить декодирование видео с базовым разрешением, или второй OLS может быть передан для того, чтобы обеспечить декодирование видео с более высоким улучшенным разрешением. Соответственно, видео может масштабироваться на основе запросов пользователей. В некоторых случаях масштабируемость не используется, и каждый слой кодируется как слой одновременной передачи. Некоторые системы предполагают, что если все слои передаются одновременно, то каждый OLS должен включать в себя один слой (так как опорные слои не используются). Это предположение повышает эффективность кодирования, так как сигнализация может быть исключена из кодированного битового потока. Однако такое предположение не поддерживает многоракурсность. Многоракурсное представление также известно как стереоскопическое видео. При многоракурсном представлении две видеопоследовательности одной и той же сцены записываются пространственно-смещенными камерами. Две видеопоследовательности отображаются пользователю на разных объективах гарнитуры. Отображение различной пространственно-смещенной последовательности для каждого глаза может, таким образом, создать впечатление трехмерного видео и/или визуальной глубины. Соответственно, OLS, реализующий многоракурсное представление, включает в себя два слоя (например, по одному для каждого глаза). Однако, когда все слои передаются одновременно, видеодекодер может использовать предположение, чтобы сделать вывод относительно того, что каждый OLS содержит только один слой. Это может привести к ошибке, так как декодер может отображать только один слой многоракурсного представления или может быть не в состоянии продолжить отображение любого слоя. Следовательно, вывод относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно, может помешать правильному отображению приложений с несколькими представлениями в декодере.

Настоящий пример включает в себя механизм, позволяющий системе кодирования видео надлежащим образом декодировать многоракурсное видео, когда все слои в видео передаются одновременно и не используют межслойное предсказание. Флаг vps_all_independent_layers_flag может быть включен в битовый поток в VPS и установлен на единицу, если ни один из слоев не использует межслойное предсказание (например, все они передаются одновременно). Когда этот флаг установлен на единицу, флаг each_layer_is_an_ols_flag сигнализируется в VPS. Флаг each_layer_is_an_ols_flag может быть установлен для указания того, содержит ли каждый OLS один слой, или содержит ли по меньшей мере один OLS более одного слоя (например, для поддержки многоракурсного представления). Соответственно, флаг vps_all_independent_layers_flag и флаг each_layer_is_an_ols_flag могут использоваться для поддержки многоракурсных приложений. Кроме того, когда это имеет место, значение ols_mode_idc в VPS может быть установлено на два. Это приводит к тому, что количество OLS и слои, связанные с OLS, будут сигнализироваться явным образом. Затем декодер может использовать эту информацию для правильного декодирования OLS, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера. Кроме того, раскрытые механизмы позволяют уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

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

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

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

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

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

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

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

Слои изображений могут использоваться для поддержки масштабируемости. Например, видео может быть закодировано в несколько слоев. Слой может быть закодирован без ссылки на другие слои. Такой слой называется слоем одновременной передачи. Соответственно, слой одновременной передачи может быть декодирован без ссылки на другие слои. В качестве другого примера, слой может быть закодирован с использованием межслойного предсказания. Это позволяет закодировать текущий слой с включением только различий между текущим слоем и опорным слоем. Слои могут быть организованы в OLS. OLS – это набор слоев, который включает в себя по меньшей мере один слой вывода и любые слои, поддерживающие декодирование слоя вывода. В качестве конкретного примера, первый OLS может содержать базовый слой, тогда как второй OLS может содержать базовый слой, а также слой расширения с улучшенными характеристиками. Например, первый OLS может быть передан в декодер для того, чтобы обеспечить декодирование видео с базовым разрешением, или второй OLS может быть передан для того, чтобы обеспечить декодирование видео с более высоким улучшенным разрешением. Соответственно, видео может масштабироваться на основе запросов пользователей. В некоторых случаях масштабируемость не используется, и каждый слой кодируется как слой одновременной передачи. Некоторые системы предполагают, что если все слои передаются одновременно, то каждый OLS должен включать в себя один слой (так как опорные слои не используются). Это предположение повышает эффективность кодирования, так как сигнализация может быть исключена из кодированного битового потока. Однако такое предположение не поддерживает многоракурсность. Многоракурсное представление также известно как стереоскопическое видео. При многоракурсном представлении две видеопоследовательности одной и той же сцены записываются пространственно-смещенными камерами. Две видеопоследовательности отображаются пользователю на разных объективах гарнитуры. Отображение различной пространственно-смещенной последовательности для каждого глаза может, таким образом, создать впечатление трехмерного видео и/или визуальной глубины. Соответственно, OLS, реализующий многоракурсное представление, включает в себя два слоя (например, по одному для каждого глаза). Однако, когда все слои передаются одновременно, видеодекодер может использовать предположение, чтобы сделать вывод относительно того, что каждый OLS содержит только один слой. Это может привести к ошибке, так как декодер может отображать только один слой многоракурсного представления или может быть не в состоянии продолжить отображение любого слоя. Следовательно, вывод относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно, может помешать правильному отображению приложений с несколькими представлениями в декодере.

Настоящий пример включает в себя механизм, позволяющий системе кодирования видео правильно декодировать многоракурсное видео, когда все слои в видео передаются одновременно и не используют межслойное предсказание. Флаг vps_all_independent_layers_flag может быть включен в битовый поток в VPS и установлен на единицу, если ни один из слоев не использует межслойное предсказание (например, все они передаются одновременно). Когда этот флаг установлен на единицу, флаг each_layer_is_an_ols_flag сигнализируется в VPS. Флаг each_layer_is_an_ols_flag может быть установлен для указания того, содержит ли каждый OLS один слой, или содержит ли по меньшей мере один OLS более одного слоя (например, для поддержки многоракурсного представления). Соответственно, флаг vps_all_independent_layers_flag и флаг each_layer_is_an_ols_flag могут использоваться для поддержки многоракурсных приложений. Кроме того, когда это имеет место, значение ols_mode_idc в VPS может быть установлено на два. Это приводит к тому, что количество OLS и слои, связанные с OLS, будут сигнализироваться явным образом. Затем декодер может использовать эту информацию для правильного декодирования OLS, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера. Кроме того, раскрытые механизмы позволяют уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

Слои изображений могут использоваться для поддержки масштабируемости. Например, видео может быть закодировано в несколько слоев. Слой может быть закодирован без ссылки на другие слои. Такой слой называется слоем одновременной передачи. Соответственно, слой одновременной передачи может быть декодирован без ссылки на другие слои. В качестве другого примера, слой может быть закодирован с использованием межслойного предсказания. Это позволяет закодировать текущий слой с включением только различий между текущим слоем и опорным слоем. Слои могут быть организованы в OLS. OLS – это набор слоев, который включает в себя по меньшей мере один слой вывода и любые слои, поддерживающие декодирование слоя вывода. В качестве конкретного примера, первый OLS может содержать базовый слой, тогда как второй OLS может содержать базовый слой, а также слой расширения с улучшенными характеристиками. Например, первый OLS может быть передан в декодер для того, чтобы обеспечить декодирование видео с базовым разрешением, или второй OLS может быть передан для того, чтобы обеспечить декодирование видео с более высоким улучшенным разрешением. Соответственно, видео может масштабироваться на основе запросов пользователей. В некоторых случаях масштабируемость не используется, и каждый слой кодируется как слой одновременной передачи. Некоторые системы предполагают, что если все слои передаются одновременно, то каждый OLS должен включать в себя один слой (так как опорные слои не используются). Это предположение повышает эффективность кодирования, так как сигнализация может быть исключена из кодированного битового потока. Однако такое предположение не поддерживает многоракурсность. Многоракурсное представление также известно как стереоскопическое видео. При многоракурсном представлении две видеопоследовательности одной и той же сцены записываются пространственно-смещенными камерами. Две видеопоследовательности отображаются пользователю на разных объективах гарнитуры. Отображение различной пространственно-смещенной последовательности для каждого глаза может, таким образом, создать впечатление трехмерного видео и/или визуальной глубины. Соответственно, OLS, реализующий многоракурсное представление, включает в себя два слоя (например, по одному для каждого глаза). Однако, когда все слои передаются одновременно, видеодекодер может использовать предположение, чтобы сделать вывод относительно того, что каждый OLS содержит только один слой. Это может привести к ошибке, так как декодер может отображать только один слой многоракурсного представления или может быть не в состоянии продолжить отображение любого слоя. Следовательно, вывод относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно, может помешать правильному отображению приложений с несколькими представлениями в декодере.

Настоящий пример включает в себя механизм, позволяющий системе кодирования видео правильно декодировать многоракурсное видео, когда все слои в видео передаются одновременно и не используют межслойное предсказание. Флаг vps_all_independent_layers_flag может быть включен в битовый поток в VPS и установлен на единицу, если ни один из слоев не использует межслойное предсказание (например, все они передаются одновременно). Когда этот флаг установлен на единицу, флаг each_layer_is_an_ols_flag сигнализируется в VPS. Флаг each_layer_is_an_ols_flag может быть установлен для указания того, содержит ли каждый OLS один слой, или содержит ли по меньшей мере один OLS более одного слоя (например, для поддержки многоракурсного представления). Соответственно, флаг vps_all_independent_layers_flag и флаг each_layer_is_an_ols_flag могут использоваться для поддержки многоракурсных приложений. Кроме того, когда это имеет место, значение ols_mode_idc в VPS может быть установлено на два. Это приводит к тому, что количество OLS и слои, связанные с OLS, будут сигнализироваться явным образом. Затем декодер может использовать эту информацию для правильного декодирования OLS, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера. Кроме того, раскрытые механизмы позволяют уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

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

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

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

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

Фиг. 2 – схематичное представление примерной системы кодирования и декодирования (кодека) для кодирования видео.

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

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

Фиг. 5 – схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность, сконфигурированную для межслойного предсказания.

Фиг. 6 – схематичное представление, иллюстрирующее примерную многоракурсную последовательность, содержащую слои одновременной передачи для использования при многоракурсном представлении.

Фиг. 7 – схематичное представление, иллюстрирующее примерный битовый поток, включающего в себя OLS со слоями одновременной передачи для использования при многоракурсном представлении.

Фиг. 8 – схематичное представление примерного устройства для кодирования видео.

Фиг. 9 – блок-схема последовательности операций примерного способа кодирования видеопоследовательности с OLS слоев одновременной передачи для использования при многоракурсном представлении.

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

Фиг. 11 – схематичное представление примерной системы кодирования видеопоследовательности с OLS слоев одновременной передачи для использования при многоракурсном представлении.

Подробное описание изобретения

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

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

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

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

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

Каждый слой, который представляет собой флаг (each_layer_is_an_ols_flag) OLS, представляет собой синтаксический элемент, который сигнализирует то, содержит ли каждый OLS в битовом потоке один слой. Код (ols_mode_idc) идентификации режима OLS представляет собой синтаксический элемент, который указывает информацию, относящуюся к количеству OLS, слоям OLS и слоям вывода в OLS. Флаг (vps_all_independent_layers_flag) всех независимых слоев VPS – это синтаксический элемент, который сигнализирует то, используется ли межслойное предсказание для кодирования любого из слоев в битовом потоке. Максимальное количество слоев VPS минус один (vps_max_layers_minus1) – это синтаксический элемент, который сигнализирует количество слоев, заданном VPS, и, следовательно, максимальное количество слоев, разрешенное в соответствующей кодированной видеопоследовательности. Количество наборов слоев вывода минус один (num_output_layer_sets_minus1) – это синтаксический элемент, который задает общее количество OLS, заданных VPS.

В данном документе используются следующие сокращения:, блок дерева кодирования (CTB), единица дерева кодирования (CTU), единица кодирования (CU), кодированная видеопоследовательность (CVS), объединенная группа экспертов по видео (JVET), набор тайлов с ограничением по движению (MCTS), максимальная единица передачи (MTU), слой сетевой абстракции (NAL), набор слоев вывода (OLS), счетчик очередности изображений (POC), необработанные полезные данные последовательности байтов (RBSP), набор параметров последовательности (SPS), набор параметров видео (VPS), универсальное кодирование видео (VVC) и рабочий проект (WD).

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

Чтобы гарантировать точное декодирование кодированного видео, видео кодируется и декодируется согласно соответствующим стандартам кодирования видео. Стандарты кодирования видео включают в себя сектор стандартизации международного союза электросвязи (ITU) (ITU-T) H.261, группу экспертов по движущимся изображениям (MPEG)-1 международной организации по стандартизации/международной электротехнической комиссии (ISO/IEC) часть 2, 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-O2001-v14.

Слои изображений могут использоваться для поддержки масштабируемости. Например, видео может быть закодировано в несколько слоев. Слой может быть закодирован без ссылки на другие слои. Такой слой называется слоем одновременной передачи. Соответственно, слой одновременной передачи может быть декодирован без ссылки на другие слои. В качестве другого примера, слой может быть закодирован с использованием межслойного предсказания. Это позволяет закодировать текущий слой с включением только различий между текущим слоем и опорным слоем. Например, текущий слой и опорный слой могут содержать одну и ту же видеопоследовательность, кодированную путем изменения характеристики, такой как отношение сигнал-шум (SNR), размер изображения, частота кадров и т.д. Слои могут быть организованы в наборы слоев вывода (OLS). OLS – это набор слоев, который включает в себя по меньшей мере один слой вывода и любые слои, поддерживающие декодирование слоя вывода. В качестве конкретного примера, первый OLS может содержать базовый слой, тогда как второй OLS может содержать базовый слой, а также слой расширения с улучшенными характеристиками. В примере, где характеристикой является разрешение изображения, первый OLS может быть передан в декодер для того, чтобы обеспечить декодирование видео с базовым разрешением, или второй OLS может быть передан для того, чтобы обеспечить декодирование видео с более высоким улучшенным разрешением. Соответственно, видео может масштабироваться на основе запросов пользователей.

В некоторых случаях масштабируемость не используется, и каждый слой кодируется как слой одновременной передачи. Некоторые системы предполагают, что если все слои передаются одновременно, то каждый OLS должен включать в себя один слой (так как опорные слои не используются). Это предположение повышает эффективность кодирования, так как сигнализация может быть исключена из кодированного битового потока. Однако такое предположение не поддерживает многоракурсность. Многоракурсное представление также известно как стереоскопическое видео. При многоракурсном представлении две видеопоследовательности одной и той же сцены записываются пространственно-смещенными камерами. Две видеопоследовательности отображаются пользователю на разных объективах гарнитуры. Отображение различной пространственно-смещенной последовательности для каждого глаза может, таким образом, создать впечатление трехмерного (3D) видео и/или визуальной глубины. Соответственно, OLS, реализующий многоракурсное представление, включает в себя два слоя (например, по одному для каждого глаза). Однако, когда все слои передаются одновременно, видеодекодер может использовать предположение, чтобы сделать вывод относительно того, что каждый OLS содержит только один слой. Это может привести к ошибке, так как декодер может отображать только один слой многоракурсного представления или может быть не в состоянии продолжить отображение любого слоя. Следовательно, вывод относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно, может помешать правильному отображению приложений с несколькими представлениями в декодере.

В данном документе раскрыт механизм, позволяющий системе кодирования видео правильно декодировать многоракурсное видео, когда все слои в видео передаются одновременно и не используют межслойное предсказание. Флаг (vps_all_independent_layers_flag) всех независимых слоев VPS может быть включен в битовый поток в VPS и установлен на единицу тогда, когда ни один из слоев не использует межслойное предсказание (например, все они передаются одновременно). Когда этот флаг установлен на единицу, каждый слой является флагом набора слоев вывода (OLS) (each_layer_is_an_ols_flag) в VPS. Флаг each_layer_is_an_ols_flag может быть установлен для указания того, содержит ли каждый OLS один слой, или содержит ли по меньшей мере один OLS более одного слоя (например, для поддержки многоракурсного представления). Соответственно, флаг vps_all_independent_layers_flag и флаг each_layer_is_an_ols_flag могут использоваться для поддержки многоракурсных приложений. Кроме того, код (ols_mode_idc) идентификации режима OLS может быть установлен равным двум в VPS тогда, когда это имеет место. Это приводит к тому, что количество OLS и слои, связанные с OLS, будут сигнализироваться явным образом. Затем декодер может использовать эту информацию для правильного декодирования OLS, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера. Кроме того, раскрытые механизмы позволяют уменьшить размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

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

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

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

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

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

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

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

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

На фиг. 2 показано схематичное представление примерной системы 200 кодирования и декодирования (кодека) для кодирования видео. В частности, система 200 кодирования/декодирования обеспечивает функциональные возможности для поддержки реализации способа 100 функционирования. Система 200 кодирования/декодирования обобщена для отображения компонентов, используемых как в кодере, так и в декодере. Система 200 кодирования/декодирования принимает и разделяет видеосигнал, как описано в отношении этапов 101 и 103 в способе 100 функционирования, в результате чего получается разделенный видеосигнал 201. Затем система 200 кодирования/декодирования сжимает разделенный видеосигнал 201 в кодированный битовый поток, действуя в качестве кодера, как описано в отношении этапов 105, 107 и 109 в способе 100. При работе в качестве декодера система 200 кодирования/декодирования вырабатывает выходной видеосигнал из битового потока, как описано в отношении этапов 111, 113, 115 и 117 в способе 100 функционирования. Система 200 кодирования/декодирования включает в себя компонент 211 общего управления кодером, компонент 213 преобразования с масштабированием и квантования, компонент 215 внутрикадровой оценки, компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 221 оценки движения, компонент 229 масштабирования и обратного преобразования, компонент 227 анализа управления фильтром, компонент 225 внутриконтурных фильтров, компонент 223 буфера декодированного изображения и компонент 231 форматирования заголовка и контекстно-адаптивного двоичного арифметического кодирования (CABAC). Такие компоненты соединены так, как показано на чертеже. На фиг. 2 черные линии указывают перемещение данных, подлежащих кодированию/декодированию, и пунктирные линии указывают перемещение управляющих данных, которые управляют работой других компонентов. Все компоненты системы 200 кодирования/декодирования могут присутствовать в кодере. Декодер может включать в себя подмножество компонентов системы 200 кодирования/декодирования. Например, декодер может включать в себя компонент 217 внутрикадрового предсказания, компонент 219 компенсации движения, компонент 229 масштабирования и обратного преобразования, компонент 225 внутриконтурных фильтров, и компонент 223 буфера декодированного изображения. Теперь эти компоненты будут описаны.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На фиг. 5 показано схематичное представление, иллюстрирующее примерную многослойную видеопоследовательность 500, выполненную с возможностью межслойного предсказания 521. Многослойная видеопоследовательность 500 может быть закодирована кодером, таким как система 200 кодека и/или кодер 300, и декодирована декодером, таким как система 200 кодека, и/или декодером 400, например, в соответствии со способом 100. Многослойная видеопоследовательность 500 включена для того, чтобы проиллюстрировать пример приложения для слоев в кодированной видеопоследовательности. Многослойная видеопоследовательность 500 представляет собой любую видеопоследовательность, которая использует множество слоев, таких как слой N 531 и слой N+1 532.

В примере многослойная видеопоследовательность 500 может использовать межслойное предсказание 521. Межслойное предсказание 521 применяется между изображениями 511, 512, 513 и 514 и изображениями 515, 516, 517 и 518 в разных слоях. В показанном примере изображения 511, 512, 513 и 514 являются частью слоя N+1 532, и изображения 515, 516, 517 и 518 являются частью слоя N 531. Слой, такой как слой N 531 и/или слой N+1 532 представляет собой группу изображений, каждое из которых ассоциируется с аналогичным значением характеристики, такой как аналогичный размер, качество, разрешение, отношение сигнал/шум, возможности и т.д. Слой может быть формально определен как набор единиц NAL VCL и ассоциированных единиц NAL без VCL, которые совместно используют один и тот же nuh_layer_id. Единица NAL VCL представляет собой единицу NAL, кодированную таким образом, чтобы она содержала видеоданные, такие как кодированный слайс изображения. Единица NAL без VCL представляет собой единицу NAL, которая содержит данные, не относящиеся к видео, такие как синтаксис и/или параметры, которые поддерживают декодирование видеоданных, выполнение проверки на соответствие или другие операции.

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

Изображения 511-518 в разных слоях 531-532 выполнены с возможностью отображения в альтернативном варианте. В качестве конкретного примера декодер может декодировать и отображать изображение 515 в текущее время отображения, если требуется изображение меньшего размера, или декодер может декодировать и отображать изображение 511 в текущее время отображения, если требуется изображение большего размера. Таким образом, изображения 511-514 в верхнем слое N+1 532 содержат по существу те же данные изображения, что и соответствующие изображения 515-518 в нижнем слое N 531 (несмотря на разницу в размере изображения). В частности, изображение 511 содержит по существу те же данные изображения, что и изображение 515, и изображение 512 содержит по существу те же данные изображения, что и изображение 516 и т.д.

Изображения 511-518 могут быть закодированы путем ссылки на другие изображения 511-518 в одном и том же слое N 531 или N+1 532. Кодирование изображения со ссылкой на другое изображение в одном и том же слое приводит к межкадровому предсказанию 523. Межкадровое предсказание 523 показано сплошными стрелками. Например, изображение 513 может быть закодировано с использованием межкадрового предсказания 523 с использованием одного или двух изображений 511, 512 и/или 514 в слое N+1 532 в качестве ссылки, где одно изображение используется для однонаправленного межкадрового предсказания, и/или два изображения ссылаются на двунаправленное межкадровое предсказание. Кроме того, изображение 517 может быть закодировано с использованием межкадрового предсказания 523 с использованием одного или двух изображений 515, 516 и/или 518 в слое N 531 в качестве ссылки, где одно изображение используется для однонаправленного межкадрового предсказания, и/или два изображения ссылаются на двунаправленное межкадровое предсказание. Когда изображение используется в качестве опорного изображения для другого изображения в одном и том же слое при выполнении межкадрового предсказания 523, это изображение может упоминаться как опорное изображение. Например, изображение 512 может быть опорным изображением, используемым для кодирования изображения 513 в соответствии с межкадровым предсказанием 523. Межкадровое предсказание 523 также может упоминаться как внутрислойное предсказание в многослойном контексте. Таким образом, межкадровое предсказание 523 представляет собой механизм кодирования выборок текущего изображения путем ссылки на указанные выборки в опорном изображении, которое отличается от текущего изображения, где опорное изображение и текущее изображение находятся в одном и том же слое.

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

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

Для того, чтобы выполнить такие операции, слои, такие как слой N 531 и слой N+1 532, могут быть включены в OLS 525. OLS 525 представляет собой набор слоев, для которого один или несколько слоев указаны в качестве слоя вывода. Слой вывода представляет собой слой, предназначенный для вывода (например, на экран дисплея). Например, слой N 531 может быть включен исключительно для поддержки межслойного предсказания 521 и может никогда не выводиться. В таком случае слой N+1 532 декодируется на основе слоя N 531 и выводится. В таком случае OLS 525 включает в себя слой N+1 532 в качестве слоя вывода. OLS 525 может содержать множество слоев в различных комбинациях. Например, слой вывода в OLS 525 может быть закодирован в соответствии с межслойным предсказанием 521 на основе одного, двух или многих нижних слоев. Кроме того, OLS 525 может содержать более одного слоя вывода. Следовательно, OLS 525 может содержать один или несколько слоев вывода и любые вспомогательные слои, необходимые для восстановления слоев вывода. Многослойная видеопоследовательность 500 может быть закодирована с использованием множества различных OLS 525, каждый из которых использует различные комбинации слоев.

В качестве конкретного примера, для поддержки масштабируемости может использоваться межслойное предсказание 521. Например, видео может быть закодировано в базовом слое, таком как слой N 531, и нескольких улучшающих слоях, таких как слой N+1 532, слой N+2, слой N+3 и т.д., которые кодируются в соответствии с межслойным предсказанием 521. Видеопоследовательность может быть закодирована для нескольких масштабируемых характеристик, таких как разрешение, частота кадров, размер изображения и т.д. Затем для каждой допустимой характеристики может быть создан OLS 525. Например, OLS 525 для первого разрешения может включать в себя только слой N 531, OLS 525 для второго разрешения может включать в себя слой N 531 и слой N+1 532, OLS для третьего разрешения может включать в себя слой N 531, слой N+1 532, слой N+2 и т.д. Таким образом, OLS 525 может передаваться таким образом, чтобы позволить декодеру декодировать любую версию многослойной видеопоследовательности 500, которая требуется, исходя из сетевых условий, аппаратных ограничений и т.д.

На фиг. 6 показано схематичное представление, иллюстрирующее примерную многоракурсную последовательность 600, содержащую слои 631, 632, 633 и 634 одновременной передачи для использования при многоракурсном представлении. Многоракурсная последовательность 600 представляет собой тип многослойной видеопоследовательности 500. Соответственно, многоракурсная последовательность 600 может кодироваться кодером, таким как система 200 кодека и/или кодер 300, и декодироваться декодером, таким как система 200 кодека и/или декодер 400, например, согласно способу 100.

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

Для реализации многоракурсного изображения видео может быть закодировано в несколько OLS, таких как OLS 625 и OLS 626, которые аналогичны OLS 525. Каждое из представлений кодируется в слое, таком как слои 631, 632, 633., и 634, которые могут быть аналогичны слою N 531. В качестве конкретного примера, вид для правого глаза может быть закодирован в слое 631, и вид для левого глаза может быть закодирован в слое 632. Затем слои 631 и 632 могут быть включены в OLS 625. Таким образом, OLS 625 может передаваться в декодер со слоями 631 и 632, помеченными как выходные слои. Затем декодер может декодировать и отображать как слой 631, так и слой 632. Таким образом, OLS 625 предоставляет достаточно данных, чтобы сделать возможным представление многоракурсного видео. Как и в случае с видео других типов, многоракурсное видео может быть закодировано в несколько представлений, чтобы обеспечить различные устройства отображения, различные сетевые условия и т.д. Соответственно, OLS 626 является по существу аналогичным OLS 625, но содержит видео, кодированное для достижения другой характеристики. Например, слой 633 может быть по существу аналогичным слою 631, и слой 634 может быть по существу аналогичным слою 632. Однако слои 633 и 634 могут иметь характеристики, отличные от характеристик слоев 631 и 632. В качестве конкретных примеров, слои 633 и 634 могут быть закодированы с другими разрешениями, частотой кадров, размерами экрана и т.д., чем слои 631 и 632. В качестве конкретного примера, OLS 625 может передаваться в декодер, если требуется первое разрешение изображения, и OLS 626 может передаваться в декодер, если желательным является второе разрешение изображения.

В некоторых случаях масштабируемость не используется. Слой, который не использует межслойное предсказание, называется слоем одновременной передачи. Слой одновременной передачи может быть полностью декодирован без ссылки на другой слой. Например, показанные слои 631-634 являются всеми слоями одновременной передачи, так как они не зависят ни от какого опорного слоя. В некоторых системах кодирования видео эта конфигурация может вызвать ошибки.

Например, некоторые системы кодирования видео могут быть выполнены с возможностью предположения относительно того, что каждый OLS содержит один слой, когда все слои передаются одновременно. Такое предположение в некоторых случаях является оправданным. Например, когда масштабируемость не используется для стандартного видео, система может предположить, что каждый слой одновременной передачи может отображаться без какого-либо другого слоя, и, следовательно, OLS должен содержать только один слой. Это предположение может помешать правильной работе многоракурсного представления. Как показано, каждый OLS 625 и 626 включает в себя два слоя 631 и 632 и слои 633 и 634, соответственно. В таком случае декодер может быть не уверен, какой уровень декодировать, и может не декодировать и не отображать оба слоя, так как ожидается только один слой.

Настоящее раскрытие решает эту проблему путем использования флага each_layer_is_an_ols_flag в битовом потоке. В частности, когда все слои 631-634 передаются одновременно, как указано флагом vps_all_independent_layers_flag, сигнализируется флаг each_layer_is_an_ols_flag. Флаг each_layer_is_an_ols_flag указывает то, содержит ли каждый OLS один слой, или включает ли какой-либо OLS, такой как OLS 625 и 626, более одного слоя. Это позволяет должным образом декодировать многоракурсную последовательность 600. Кроме того, ols_mode_idc может быть установлен для указания того, что количество OLS 625-626, а также информация, относящаяся к слоям 631-634, должны сигнализироваться явным образом (например, указатели того, какие слои 631-634 являются выходными слоями). Эти флаги обеспечивают достаточную информацию для декодера, чтобы должным образом декодировать и отображать OLS 625 и/или 626 с использованием многоракурсного представления. Следует отметить, что названия each_layer_is_an_ols_flag, vps_all_independent_layers_flag и ols_mode_idc основаны на номенклатуре, используемой в соответствии со стандартизацией VVC. Такие названия включены в данный документ для последовательного и ясного обсуждения. Однако такие синтаксические элементы могут иметь другие названия без отклонения от объема настоящего раскрытия.

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

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

Заголовок 717 слайса содержит параметры, которые специфичны для каждого слайса 727 в изображении 725. Следовательно, может быть один заголовок 717 слайса в расчете на слайс в видеопоследовательности. Заголовок 717 слайса может содержать информацию о типе слайса, POC, списки опорных изображений, весовые коэффициенты предсказания, точки ввода тайла, параметры деблокирования и т.д. Следует отметить, что в некоторых примерах битовый поток 700 может также включать в себя заголовок изображения, который представляет собой синтаксическую структуру, содержащую параметры, применимые ко всем слайсам 727 в одном изображении. По этой причине заголовок изображения и заголовок 717 слайса могут использоваться взаимозаменяемо в некоторых контекстах. Например, некоторые параметры можно перемещать между заголовком 717 слайса и заголовком изображения в зависимости от того, являются ли такие параметры общими для всех слайсов 727 в изображении 725.

Данные 720 изображения содержат видеоданные, кодированные в соответствии с межкадровым предсказанием и/или внутрикадровым предсказанием, а также соответствующие преобразованные и квантованные остаточные данные. Например, данные 720 изображения могут включать в себя слои 723 изображений 725. Слои 723 могут быть организованы в OLS 721. OLS 721 может быть по существу аналогичен OLS 525, 625 и/или 626. В частности, OLS 721 представляет собой набор слоев 723, для которых один или несколько слоев 723 заданы как выходные слои. Например, битовый поток 700 может быть закодирован таким образом, чтобы включать в себя несколько OLS 721 с видео, кодированным с разными разрешениями, частотами кадров, размерами изображения 725 и т.д. После запроса декодера процесс извлечения битового подпотока может удалить все, кроме запрошенного OLS 721 из битового потока 700. Затем кодер может передать битовый поток 700, содержащий только запрошенный OLS 721 и, следовательно, только видео, которое соответствует запрошенным критериям, в декодер.

Слой 723 может быть по существу аналогичным слою N 531, слою N+1 532 и/или слоям 631, 632, 633 и/или 634. Слой 723, как правило, представляет собой набор кодированных изображений 725. Слой 723 может быть формально определен как набор единиц NAL VCL, которые при декодировании совместно используют указанную характеристику (например, общее разрешение, частоту кадров, размер изображения и т.д.). Слой 723 также включает в себя ассоциированные единицы NAL, отличные от VCL, для поддержки декодирования единиц NAL VCL. Единицы NAL VCL слоя 723 могут совместно использовать конкретное значение nuh_layer_id. Слой 723 может быть слоем одновременной передачи, который закодирован без межслойного предсказания, или слоем 723, который закодирован в соответствии с межслойным предсказанием, как описано со ссылкой на фиг. 6 и 5, соответственно.

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

Настоящее раскрытие включает в себя механизмы, позволяющие системе кодирования видео должным образом декодировать многоракурсное видео, такое как многоракурсная последовательность 600, тогда, когда все слои 723 в видео передаются одновременно и не используют межслойное предсказание. Например, VPS 711 может содержать различные данные, чтобы указать декодеру то, что все слои 723 являются одновременно передающими, и что OLS 721 содержат более одного слоя 723. Флаг vps_all_independent_layers_flag 731 может быть включен в битовый поток 700 в VPS 711. Флаг vps_all_independent_layers_flag 731 представляет собой синтаксический элемент, который сигнализирует то, используется ли межслойное предсказание для кодирования любого из слоев 723 в битовом потоке 700. Например, vps_all_independent_layers_flag 731 может быть установлен на единицу тогда, когда ни один из слоев 723 не использует межслойное предсказание., и, таким образом, все они передаются одновременно. В других примерах vps_all_independent_layers_flag 731 может быть установлен равным нулю, чтобы указать то, что по меньшей мере один из слоев 723 использует межслойное предсказание. Когда vps_all_independent_layers_flag 731 установлен на единицу, чтобы указать то, что все слои 723 являются одновременно передающими, в VPS 711 сигнализируется each_layer_is_an_ols_flag 733. Флаг each_layer_is_an_ols_flag 733 представляет собой синтаксический элемент, который сигнализирует то, содержит ли каждый OLS 721 в битовом потоке 700 один слой 723. Например, в большинстве случаев каждый OLS 721 может содержать один слой одновременной передачи. Однако один или несколько OLS 721 могут содержать два слоя одновременной передачи, когда многоракурсное видео кодируется в битовый поток 700. Соответственно, each_layer_is_an_ols_flag 733 может быть установлен (например, на единицу), чтобы указать то, что каждый OLS 721 содержит один слой 723, или может быть установлен (например, но ноль), чтобы указать то, что по меньшей мере один OLS 721 содержит более одного слоя 723 для поддержки многоракурсного представления. Таким образом, vps_all_independent_layers_flag 731 и each_layer_is_an_ols_flag 733 могут использоваться для поддержки многоракурсных приложений.

Кроме того, VPS 711 может содержать ols_mode_idc 735. ols_mode_idc 735 представляет собой синтаксический элемент, который указывает информацию, относящуюся к количеству OLS 721, слоям 723 OLS 721 и слоям вывода в OLS 721. Слой 723 вывода представляет собой любой слой, который предназначен для вывода декодером, и не используется исключительно для кодирования на основе ссылок. ols_mode_idc 735 может быть установлен равным нулю или единице для кодирования видео других типов. ols_mode_idc 735 может быть установлен равным двум для поддержки многоракурсного представления. Например, ols_mode_idc 735 может быть установлен равным двум тогда, когда vps_all_independent_layers_flag 731 установлен на единицу (указывая слои одновременной передачи), и когда each_layer_is_an_ols_flag 733 установлен на ноль, указывая, что по меньшей мере один OLS 721 содержит более одного слоя 723. Когда ols_mode_idc 735 установлен равным двум, количество OLS 721 и информация, относящаяся к количеству слоев 723 и/или слоев вывода, содержащихся в каждом OLS 721, сигнализируются явным образом.

VPS 711 может также включать в себя vps_max_layers_minus1 737. vps_max_layers_minus1 737 представляет собой синтаксический элемент, который сигнализирует количество слоев 723, заданное VPS 711, и, следовательно, максимальное количество слоев 723, разрешенных в соответствующей кодированной видеопоследовательности в битовом потоке 700. VPS 711 может также включать в себя num_output_layer_sets_minus1 739. num_output_layer_sets_minus1 739 представляет собой синтаксический элемент, который указывает общее количество OLS 721, заданное VPS 711. Например, vps_max_layers_minus1 737 и num_output_layer_sets_minus1 739 могут быть переданы в VPS 711, когда ols_mode_idc 735 установлен на два.

Это вызывает сигнализацию количества OLS 721 и количества слоев 723, когда видео включает в себя многоракурсное представление. В частности, vps_max_layers_minus1 737 и num_output_layer_sets_minus1 739 могут сигнализироваться тогда, когда vps_all_independent_layers_flag 731 установлен на единицу (указывая слои одновременной передачи), и когда each_layer_is_an_ols_flag 733 установлен на ноль, указывая, что по меньшей мере один OLS 721 содержит более одного слоя 723. Затем декодер может использовать эту информацию для правильного декодирования OLS 721, содержащего многоракурсное видео. Этот подход поддерживает эффективность кодирования с исправлением ошибок. В частности, в этом случае поддерживается многоракурсное представление. Однако количество OLS 721 и/или слои 723 могут быть по-прежнему получены и исключены из битового потока 700 тогда, когда многоракурсное представление не используется. Таким образом, раскрытые механизмы увеличивают функциональные возможности кодера и/или декодера, позволяя таким устройствам надлежащим образом кодировать многоракурсное видео. Кроме того, раскрытые механизмы позволяют поддерживать уменьшенный размер битового потока и, следовательно, уменьшить использование процессора, памяти и/или сетевых ресурсов как в кодере, так и в декодере.

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

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

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

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

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

В общем, в настоящем раскрытии описаны подходы для поддержки рабочих точек с более чем одним слоем вывода для слоев одновременной передачи. Описание технологий основано на VVC JVET ITU-T и ISO/IEC. Однако эти технологии также применимы к многослойному кодированию видео, основанному на других спецификациях видеокодека.

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

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

Примерная семантика набора параметров видео выглядит следующим образом. RBSP VPS должна быть доступной для процесса декодирования до того, как на него будет сделана ссылка, она должна быть включена по меньшей мере в одну единицу доступа с TemporalId, равным нулю, или предоставлена посредством внешних механизмов, и единица NAL VPS, содержащая RBSP VPS, должна иметь nuh_layer_id, равный vps_layer_id[0]. Все единицы NAL VPS с определенным значением vps_video_parameter_set_id в CVS должны иметь одинаковое содержание. vps_video_parameter_set_id предоставляет идентификатор VPS для ссылки на него других синтаксических элементов. Параметр vps_max_layers_minus1 плюс 1 указывает максимально допустимое количество слоев в каждой CVS, которая ссылается на VPS. Параметр vps_max_sub_layers_minus1 плюс 1 указывает максимальное количество временных подслоев, которые могут присутствовать в каждой CVS, которая ссылается на VPS. Значение vps_max_sub_layers_minus1 должно находиться в диапазоне от нуля до шести включительно.

Флаг vps_all_independent_layers_flag может быть установлен равным единице, чтобы указать то, что все слои в CVS кодируются независимым образом без использования межслойного предсказания. Флаг vps_all_independent_layers_flag может быть установлен равным нулю, чтобы указать то, что один или несколько слоев в CVS могут использовать межслойное предсказание. Если флаг отсутствует, предполагается, что значение vps_all_independent_layers_flag равно единице. Когда флаг vps_all_independent_layers_flag равен единице, предполагается, что значение vps_independent_layer_flag[ i ] равно единице. Когда флаг vps_all_independent_layers_flag равен нулю, предполагается, что значение vps_independent_layer_flag[0] равно единице. vps_layer_id[ i ] указывает значение nuh_layer_id i-го слоя. Для любых двух неотрицательных целых значений m и n, когда m меньше n, значение vps_layer_id[m] должно быть меньше vps_layer_id[n]. Флаг vps_independent_layer_flag[ i ] может быть установлен равным единице, чтобы указать то, что слой с индексом i не использует межслойное предсказание. Флаг vps_independent_layer_flag[ i ] может быть установлен равным нулю, чтобы указать то, что слой с индексом i может использовать межслойное предсказание, и vps_layer_dependency_flag[ i ] присутствует в VPS. Если флаг отсутствует, предполагается, что значение vps_independent_layer_flag[ i ] равно единице.

Флаг vps_direct_dependency_flag[ i ][ j ] может быть установлен равным нулю, чтобы указать то, что слой с индексом j не является слоем прямой ссылки для слоя с индексом i. Флаг vps_direct_dependency_flag[ i ][ j ] может быть установлен равным единице, чтобы указать то, что слой с индексом j является слоем прямой ссылки для слоя с индексом i. Когда vps_direct_dependency_flag[ i ][ j ] отсутствует для i и j в диапазоне от нуля до vps_max_layers_minus1 включительно, предполагается, что vps_direct_dependency_flag[ i ][ j ] равен 0. Переменная DirectDependentLayerIdx[ i ][ j ], задающая j-й слой, непосредственно зависящий от i-го слоя, получается следующим образом:

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

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

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

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

ols_mode_idc устанавливается равным нулю для задания того, чтобы общее количество OLS, заданное VPS, было равно vps_max_layers_minus1 + 1, i-ый OLS включал в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводился только верхний слой в OLS. Значение ols_mode_idc устанавливается равным единице для задания того, чтобы общее количество OLS, заданное VPS, было равно vps_max_layers_minus1 + 1, i-й OLS включал в себя слои с индексами слоев от 0 до i включительно, и для каждого OLS выводились все слои в OLS. ols_mode_idc устанавливается равным двум для задания того, чтобы общее количество OLS, заданное VPS, передавалось в явном виде, и для каждого OLS выводился верхний слой и явно сигнализируемый набор нижних слоев в OLS. Значение ols_mode_idc должно находиться в диапазоне от нуля до двух включительно. Значение три параметра ols_mode_idc является резервным. Когда флаг vps_all_independent_layers_flag равно единице, и ach_layer_is_an_ols_flag равно нулю, предполагается, что значение ols_mode_idc равно двум. num_output_layer_sets_minus1 плюс 1 задает общее количество OLS, заданное VPS тогда, когда ols_mode_idc равно двум.

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

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

Флаг layer_included_flag[ i ][ j ] указывает то, включен ли j-й слой (слой с nuh_layer_id, равным vps_layer_id[j]) в i-й OLS, когда ols_mode_idc равно двум. layer_included_flag[ i ][ j ] устанавливается равным единице для задания того, чтобы j-й слой был включен в i-й OLS. layer_included_flag[ i ][ j ] устанавливается равным нулю для задания того, чтобы j-й слой не был включен в i-й OLS.

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

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

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

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

Нижний слой в каждом OLS должен быть независимым слоем. Другими словами, для каждого i в диапазоне от нуля до TotalNumOlss - 1 включительно значение vps_independent_layer_flag[ GeneralLayerIdx[ LayerIdInOls[ i ][ 0 ] ] ] должно быть равно единице. Верхний слой, например, слой с nuh_layer_id, равным vps_layer_id[ vps_max_layers_minus1], должен быть включен по меньшей мере в один OLS, заданный VPS. Другими словами, по меньшей мере для одного i в диапазоне от нуля до TotalNumOlss - 1 включительно значение LayerIdInOls[ i ][ NumLayersInOls[ i ] - 1 ] должно быть равно vps_layer_id[ vps_max_layers_minus1 ].

Флаг vps_output_layer_flag[ i ][ j ] указывает то, выводится ли j-й слой в i-ом OLS, когда значение ols_mode_idc равно двум. Флаг vps_output_layer_flag[ i ] может быть установлен равным единице, чтобы указать то, что выводится j-й слой в i-м OLS. Флаг vps_output_layer_flag[ i ] может быть установлен равным нулю, чтобы указать то, что j-й слой в i-м OLS не выводится. Когда флаг vps_all_independent_layers_flag равен единице, и флаг each_layer_is_an_ols_flag равен нулю, можно предположить, что значение vps_output_layer_flag[ i ] равно единице.

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

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

Любой слой в OLS должен быть выходным слоем OLS или (прямым или косвенным) опорным слоем слоя вывода OLS. 0-й OLS содержит только нижний слой (например, слой с nuh_layer_id, равным vps_layer_id[0]), и для 0-го OLS выводится только включенный слой. Флаг vps_constraint_info_present_flag может быть установлен равным единице, чтобы указать то, что синтаксическая структура general_constraint_info() присутствует в VPS. Флаг vps_constraint_info_present_flag может быть установлен равным нулю, чтобы указать то, что синтаксическая структура general_constraint_info() отсутствует в VPS. В соответствующих битовых потоках значение vps_reserved_zero_7bits должно быть равно нулю. Для vps_reserved_zero_7bits зарезервированы другие значения. Декодеры должны игнорировать значение vps_reserved_zero_7bits.

Флаг general_hrd_params_present_flag может быть установлен равным единице, чтобы указать то, что синтаксические элементы num_units_in_tick и time_scale и синтаксическая структура general_hrd_parameters() присутствуют в синтаксической структуре RBSP SPS. Флаг general_hrd_params_present_flag может быть установлен равным нулю, чтобы указать то, что синтаксические элементы num_units_in_tick и time_scale и синтаксическая структура general_hrd_parameters() отсутствуют в синтаксической структуре RBSP SPS. num_units_in_tick – это количество единичных интервалов времени генератора синхронизирующих импульсов, работающего на частоте time_scale в герцах (Гц), что соответствует одному приращению (называемому тактом) счетчика тактов. Значение num_units_in_tick должно быть больше нуля. Такт синхронизации в секундах равен отношению num_units_in_tick к time_scale. Например, когда частота кадров видеосигнала составляет двадцать пять Гц, значение time_scale может быть равно 27000000, и значение num_units_in_tick может быть равно 1080000, и, следовательно, такт синхронизации может быть равен 0,04 секунды.

time_scale представляет собой количество единичных интервалов времени, проходящих за одну секунду. Например, система координат времени, в которой измеряется время с использованием тактового сигнала с частотой двадцать семь мегагерц (МГц), имеет значение time_scale, равное 27000000. Значение time_scale должно быть больше нуля. Флаг vps_extension_flag может быть установлен равным нулю, чтобы указать то, что в синтаксической структуре RBSP VPS отсутствуют синтаксические элементы vps_extension_data_flag. Флаг vps_extension_flag может быть установлен равным единице, чтобы указать то, что в синтаксической структуре RBSP VPS присутствуют синтаксические элементы vps_extension_data_flag. Флаг vps_extension_data_flag может иметь любое значение. Наличие и значение флага vps_extension_data_flag не влияют на соответствие декодера профилям. Соответствующие декодеры должны игнорировать все синтаксические элементы vps_extension_data_flag.

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

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

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

На фиг. 9 показана блок-схема последовательности операций примерного способа 900 кодирования видеопоследовательности, например, в битовый поток 700, с OLS слоев одновременной передачи для использования в многоракурсном режиме, таком как в многоракурсной последовательности 600. При выполнении способа 100 способ 900 может использоваться кодером, таким как система 200 кодека, кодер 300 и/или устройство 800 для кодирования видео.

Способ 900 может начинаться тогда, когда кодер принимает видеопоследовательность и определяет необходимость кодирования этой видеопоследовательности в набор слоев одновременной передачи для использования в многоракурсном режиме, например, на основе пользовательского ввода. На этапе 901 кодер кодирует битовый поток, содержащий один или несколько слоев кодированных изображений. Например, слои могут быть слоями одновременной передачи и могут не кодироваться в соответствии с межслойным предсказанием. Кроме того, слои могут быть кодированы для поддержки многоракурсного видео. Следовательно, слои могут быть организованы в OLS, где один или несколько OLS содержат два слоя (например, один слой для отображения каждым глазом конечного пользователя).

На этапе 903 кодер может кодировать VPS в битовый поток. VPS может включать в себя различные синтаксические элементы для того, чтобы указывать декодеру конфигурации слоя/OLS для надлежащего декодирования и отображения многоракурсного изображения. Например, VPS может включать в себя флаг vps_all_independent_layers_flag, который может быть установлен на единицу, чтобы указать то, что все слои, заданные VPS, кодируются независимым образом без межслойного предсказания. Когда флаг vps_all_independent_layers_flag установлен на единицу и, следовательно, когда все слои, заданные VPS, кодируются независимым образом без межслойного предсказания, VPS может также включать в себя флаг each_layer_is_an_ols_flag. Флаг each_layer_is_an_ols_flag может указывать то, содержит ли каждый OLS только один слой, или содержит ли по меньшей мере один OLS более одного слоя. Например, флаг each_layer_is_an_ols_flag может быть установлен равным единице тогда, когда указано то, что каждый OLS содержит только один слой, и/или каждый слой является OLS с единственным включенным слоем, являющимся единственным слоем вывода. Следовательно, флаг each_layer_is_an_ols_flag может быть установлен на единицу тогда, когда многоракурсный режим не используется. В качестве другого примера, each_layer_is_an_ols_flag может быть установлен равным нулю тогда, когда указано то, что по меньшей мере один OLS содержит более одного слоя, и, следовательно, битовый поток, кодированный на этапе 901, содержит многоракурсное видео.

VPS может также включать в себя синтаксический элемент ols_mode_idc. Например, когда флаг each_layer_is_an_ols_flag установлен на ноль, и флаг vps_all_independent_layers_flag установлен на единицу, ols_mode_idc может быть установлен на два. Когда значение ols_mode_idc установлено/равно двум, общее количество OLS сигнализируется явным образом в VPS. Кроме того, когда значение ols_mode_idc установлено/равно двум, количество слоев и/или количество слоев вывода, ассоциированных с каждым OLS, сигнализируется явным образом в VPS. В конкретном примере синтаксический элемент vps_max_layers_minus1 может быть включен в VPS для явного указания количества слоев, заданных VPS, и, следовательно, может указывать количество слоев, которые могут быть включены в OLS. В некоторых примерах vps_all_independent_layers_flag может передаваться тогда, когда vps_max_layers_minus1 больше нуля. В другом конкретном примере num_output_layer_sets_minus1 может быть включен в VPS тогда, когда ols_mode_idc равно двум. num_output_layer_sets_minus1 может указывать общее количество OLS, заданное VPS. Таким образом, vps_max_layers_minus1 и num_output_layer_sets_minus1 могут быть переданы в VPS для указания количества слоев и количества OLS, соответственно, когда такие данные сигнализируются явным образом (например, когда флаг each_layer_is_an_ols_flag установлен на ноль, vps_all_independent_layers_flag установлен на единицу, и ols_mode_idc устанавливается и/или предполагается равным двум). В качестве конкретного примера можно предположить, что ols_mode_idc равно двум тогда, когда флаг vps_all_independent_layers_flag установлен на единицу, и когда флаг each_layer_is_an_ols_flag установлен на ноль.

На этапе 905 битовый поток сохраняется для его дальнейшей передачи в декодер.

На фиг. 10 показана блок-схема последовательности операций примерного способа 1000 декодирования видеопоследовательности, например, из битового потока 700, включающего в себя OLS слоев одновременной передачи для использования в многоракурсном режиме, например, в многоракурсной последовательности 600. Способ 1000 может использоваться декодером, таким как систему 200 кодека, декодер 400 и/или устройство 800 для кодирования видео при выполнении способа 100.

Способ 1000 может начинаться тогда, когда декодер начинает прием битового потока, содержащего OLS слоев одновременной передачи многоракурсного представления, например, в результате выполнения способа 900. На этапе 1001 декодер принимает битовый поток. Битовый поток может включать в себя один или несколько OLS и один или несколько слоев. Например, слои могут быть слоями одновременной передачи и могут не кодироваться в соответствии с межслойным предсказанием. Кроме того, слои могут быть закодированы для поддержки многоракурсного видео. Следовательно, слои могут быть организованы в OLS, где один или несколько OLS содержат два слоя (например, один слой для отображения для каждого глаза конечного пользователя).

Битовый поток может также включать в себя VPS. VPS может включать в себя различные синтаксические элементы для указания декодеру конфигураций слоя/OLS для надлежащего многоракурсного декодирования и отображения. Например, VPS может включать в себя флаг vps_all_independent_layers_flag, который может быть установлен на единицу, чтобы указать то, что все слои, заданные VPS, кодируются независимым образом без межслойного предсказания. Когда флаг vps_all_independent_layers_flag установлен на единицу и, следовательно, когда все слои, заданные VPS, кодируются независимым образом без межслойного предсказания, VPS может также включать в себя флаг each_layer_is_an_ols_flag. Флаг each_layer_is_an_ols_flag может указывать то, содержит ли OLS более одного слоя. Например, флаг each_layer_is_an_ols_flag может быть установлен на единицу тогда, когда указано то, что каждый OLS содержит только один слой, и/или каждый слой является OLS с единственным включенным слоем, который являктся единственным слоем вывода. В качестве другого примера, флаг each_layer_is_an_ols_flag может быть установлен равным нулю тогда, когда указано то, что по меньшей мере один OLS содержит более одного слоя, и, следовательно, битовый поток содержит многоракурсное видео.

VPS может также включать в себя синтаксический элемент ols_mode_idc. Например, когда флаг each_layer_is_an_ols_flag установлен равным нулю, и флаг vps_all_independent_layers_flag установлен равным единице, значение ols_mode_idc может быть установлено равным двум. Когда значение ols_mode_idc установлено равным двум, общее количество OLS сигнализируется явным образом в VPS. Кроме того, когда значение ols_mode_idc установленл/равно двум, количество слоев и/или количество слоев вывода, ассоциированных с каждым OLS, сигнализируется явным образом в VPS. В конкретном примере синтаксический элемент vps_max_layers_minus1 может быть включен в VPS для явного указания количества слоев, заданных VPS, и, следовательно, может указывать количество слоев, которые могут быть включены в OLS. В некоторых примерах vps_all_independent_layers_flag может передаваться тогда, когда vps_max_layers_minus1 больше нуля. В другом конкретном примере num_output_layer_sets_minus1 может быть включен в VPS тогда, когда ols_mode_idc равно двум. num_output_layer_sets_minus1 может указывать общее количество OLS, заданное VPS. Таким образом, vps_max_layers_minus1 и num_output_layer_sets_minus1 могут сигнализироваться в VPS для указания количества слоев и количества OLS, соответственно, когда такие данные сигнализируются явным образом (например, когда флаг each_layer_is_an_ols_flag установлен на ноль, vps_all_independent_layers_flag установлен на единицу, и ols_mode_idc устанавливается и/или предполагается равным двум). В качестве конкретного примера можно предположить, что ols_mode_idc равно двум тогда, когда флаг vps_all_independent_layers_flag установлен на единицу, и когда флаг each_layer_is_an_ols_flag установлен на ноль.

На этапе 1003 кодированное изображение декодируется из слоя вывода OLS на основе флага each_layer_is_an_ols_flag в VPS для получения декодированного изображения. Например, декодер может считать vps_all_independent_layers_flag, чтобы определить то, что все слои являются одновременно передающими. Декодер также может считать флаг each_layer_is_an_ols_flag, чтобы определить то, что по меньшей мере один OLS содержит более одного слоя. Декодер может также считать ols_mode_idc, чтобы определить то, что количество OLS и количество слоев сигнализируются явным образом. Затем декодер может определить количество OLS и количество слоев, считывая num_output_layer_sets_minus1 и vps_max_layers_minus1, соответственно. Затем декодер может использовать эту информацию для обнаружения правильных многоракурсных слоев в битовом потоке. Декодер может также находить правильно закодированные изображения из слоев. Затем декодер может декодировать изображения для получения декодированных изображений.

На этапе 1005 декодер может направить декодированное изображение для отображения в виде части декодированной видеопоследовательности.

На фиг. 11 показано схематичное представление примерной системы 1100 для кодирования видеопоследовательности, например, в битовый поток 700, с OLS слоев одновременной передачи для использования в многоракурсной последовательности, например, в многоракурсной последовательности 600. Система 1100 может быть реализована кодером и декодером, таким как система 200 кодека, кодер 300, декодер 400 и/или устройство 800 для кодирования видео. Кроме того, система 1100 может использовать многослойную видеопоследовательность 500. В дополнение к этому, система 1100 может использоваться при реализации способа 100, 900 и/или 1000.

Система 1100 включает в себя видеокодер 1102. Видеокодер 1102 содержит модуль 1103 кодирования для кодирования битового потока, содержащего один или несколько слоев кодированных изображений. Модуль 1105 кодирования дополнительно предназначен для кодирования в битовый поток VPS, включающего в себя флаг each_layer_is_an_ols_flag, тогда, когда все слои, заданные VPS, кодируются независимым образом без межслойного предсказания, причем флаг each_layer_is_an_ols_flag указывает то, содержит ли каждый OLS только один слой. Видеокодер 1102 дополнительно содержит модуль 1106 хранения, предназначенный для хранения битового потока для передачи в декодер. Видеокодер 1102 дополнительно содержит модуль 1107 передачи, предназначенный для передачи битового потока в видеодекодер 1110. Видеокодер 1102 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 900.

Система 1100 также включает в себя видеодекодер 1110. Видеодекодер 1110 содержит модуль 1111 приема, предназначенный для приема битового потока, содержащего один или несколько слоев кодированных изображений и VPS, причем флаг each_layer_is_an_ols_flag включается в VPS тогда, когда все заданные слои VPS кодируются независимым образом без межслойного предсказания, при этом флаг each_layer_is_an_ols_flag указывает то, содержит ли каждый OLS только один слой. Видеодекодер 1110 дополнительно содержит модуль 1113 декодирования, предназначенный для декодирования кодированного изображения из слоя вывода OLS на основе флага each_layer_is_an_ols_flag в VPS для создания декодированного изображения. Видеодекодер 1110 дополнительно содержит модуль 1115 пересылки, предназначенный для пересылки декодированного изображения для отображения в виде части декодированной видеопоследовательности. Видеодекодер 1110 может быть дополнительно выполнен с возможностью выполнения любого из этапов способа 1000.

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

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

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

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

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

название год авторы номер документа
OLS ДЛЯ МНОГОРАКУРСНОЙ МАСШТАБИРУЕМОСТИ 2020
  • Ван, Е-Куй
RU2822508C1
ОТКЛОНЕНИЕ НЕИСПОЛЬЗУЕМЫХ СЛОЕВ В МНОГОСЛОЙНЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2823559C1
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2821429C1
OLS ДЛЯ ПРОСТРАНСТВЕННОЙ МАСШТАБИРУЕМОСТИ И МАСШТАБИРУЕМОСТИ ПО SNR 2020
  • Ван, Е-Куй
RU2822990C1
ПРЕДОТВРАЩЕНИЕ ИЗБЫТОЧНОЙ СИГНАЛИЗАЦИИ В МНОГОСЛОЙНЫХ БИТОВЫХ ВИДЕОПОТОКАХ 2020
  • Ван, Е-Куй
RU2827899C1
ПАРАМЕТРЫ HRD НА УРОВНЕ ПОСЛЕДОВАТЕЛЬНОСТИ 2020
  • Ван, Е-Куй
RU2825440C1
ПАРАМЕТРЫ HRD ДЛЯ ТЕСТИРОВАНИЯ НА СООТВЕТСТВИЕ НА ОСНОВЕ СЛОЯ 2020
  • Ван, Е-Куй
RU2821048C1
УПРАВЛЕНИЕ МАСШТАБИРУЕМЫМ ВКЛАДЫВАЕМЫМ SEI-СООБЩЕНИЕМ 2020
  • Ван, Е-Куй
RU2824781C1
ТЕСТЫ НА СООТВЕТСТВИЕ HRD ДЛЯ OLS 2020
  • Ван, Е-Куй
RU2820076C1
ПАРАМЕТРЫ HRD ДЛЯ СЛОЕВ 2020
  • Ван, Е-Куй
RU2827823C1

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

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

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

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

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

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

декодирование, процессором декодера, кодированного изображения из слоя вывода OLS на основе флага each_layer_is_an_ols_flag в VPS для получения декодированного изображения; и

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

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

3. Способ декодирования по любому из пп. 1, 2, в котором флаг each_layer_is_an_ols_flag устанавливается равным нулю, когда указано то, что по меньшей мере один OLS содержит более одного слоя.

4. Способ декодирования по любому из пп. 1-3, в котором общее количество OLS сигнализируется явным образом, и слои, ассоциированные с OLS, сигнализируются явным образом тогда, когда код (ols_mode_idc) идентификации режима OLS равен двум, и в котором ols_mode_idc выводится равным двум тогда, когда флаг (vps_all_independent_layers_flag) всех независимых слоев VPS установлен на единицу и когда флаг each_layer_is_an_ols_flag установлен на ноль.

5. Способ декодирования по любому из пп. 1-4, в котором VPS включает в себя флаг vps_all_independent_layers_flag, установленный на единицу, чтобы задать то, что все слои, заданные VPS, кодируются независимым образом без межслойного предсказания.

6. Способ декодирования по любому из пп. 1-5, в котором VPS включает в себя синтаксический элемент максимального количества слоев VPS минус один (vps_max_layers_minus1), задающий количество слоев, заданное VPS, и в котором vps_all_independent_layers_flag сигнализируется тогда, когда vps_max_layers_minus1 больше нуля.

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

кодирование, процессором кодера, битового потока, содержащего один или несколько слоев кодированных изображений;

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

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

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

9. Способ кодирования по любому из пп. 7-9, в котором флаг each_layer_is_an_ols_flag устанавливается равным нулю тогда, когда указано то, что по меньшей мере один OLS содержит более одного слоя.

10. Способ кодирования по любому из пп. 7-9, в котором общее количество OLS сигнализируется явным образом, и слои, ассоциированные с OLS, сигнализируются явным образом тогда, когда код (ols_mode_idc) идентификации режима OLS равен двум, и в котором ols_mode_idc выводится равным двум тогда, когда флаг (vps_all_independent_layers_flag) всех независимых слоев VPS установлен на единицу, и когда флаг each_layer_is_an_ols_flag установлен на ноль.

11. Способ кодирования по любому из пп. 7-10, в котором VPS включает в себя флаг vps_all_independent_layers_flag, установленный на единицу, чтобы задать то, что все слои, заданные VPS, кодируются независимым образом без межслойного предсказания.

12. Способ кодирования по любому из пп. 7-11, в котором VPS включает в себя синтаксический элемент максимального количества слоев VPS минус один (vps_max_layers_minus1), задающий максимально допустимое количество слоев в каждом CVS, относящемся к VPS, и в котором vps_all_independent_layers_flag сигнализируется тогда, когда vps_max_layers_minus1 больше нуля.

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

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

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

15. Декодер, содержащий:

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

средство декодирования, предназначенное для декодирования кодированного изображения из слоя вывода OLS на основе флага each_layer_is_an_ols_flag в VPS для получения декодированного изображения; и

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

16. Декодер по п. 15, в котором декодер дополнительно выполнен с возможностью выполнения способа по любому из пп. 2-6.

17. Кодер, содержащий:

средство кодирования для:

кодирования битового потока, содержащего один или несколько слоев кодированных изображений; и

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

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

18. Кодер по п. 17, в котором кодер дополнительно выполнен с возможностью выполнения способа по любому из пп. 8-12.

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

Автомобиль-сани, движущиеся на полозьях посредством устанавливающихся по высоте колес с шинами 1924
  • Ф.А. Клейн
SU2017A1
Virginie Drugeon et al, "AHG8: User defined output layers mode", JVET-P0204_Spec_based_on_JVET-O2001-vE, 16th Meeting, Geneva, 23.09.2019
Токарный резец 1924
  • Г. Клопшток
SU2016A1
EP 2984847 B1, 31.10.2018
Устройство для закрепления лыж на раме мотоциклов и велосипедов взамен переднего колеса 1924
  • Шапошников Н.П.
SU2015A1
СИНТАКСИЧЕСКАЯ СТРУКТУРА ПАРАМЕТРОВ ГИПОТЕТИЧЕСКОГО ЭТАЛОННОГО ДЕКОДЕРА 2013
  • Ван Е-Куй
RU2643463C2

RU 2 828 713 C1

Авторы

Ван, Е-Куй

Даты

2024-10-16Публикация

2020-09-08Подача